本文始于 202111 月,已经忘记了是什么原因一直没发,这次基本上全部重写了一遍,除了官方的图,所有图片都是重新截取的;

什么是 auddly ?

auddly 是一款自托管音乐流应用程序。

什么是 auddly-server ?

auddly-server 是一款开源、简单的自托管音乐流媒体服务器,之前叫 waveline-server,主要提供 API 接口服务。

关于 API 可以看官方的文档:https://github.com/Wellenline/auddly-server#api

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

Auddly 分为前、后端,dockhub 上虽然能搜到前端的镜像 wellenline/auddly,但是架构是 arm64 的,而且时间也有点久远了

TMM Docker 群晖_群晖

服务端只能找到两年前的 wellenline/waveline-server

TMM Docker 群晖_群晖_02

但这没什么关系,官方提供了 Dockerfile,只需要我们重新构建一下就可以了

服务端

构建服务端镜像的基本命令如下👇

# 下载代码
git clone https://github.com/Wellenline/auddly-server.git
  
# 或者加个代理  
git clone https://ghproxy.com/github.com/Wellenline/auddly-server.git
  
# 进入目录  
cd auddly-server
  
# 构建镜像
docker build -t wbsu2003/auddly-server:v1 .

Web 端

构建网页端镜像运行的基本命令如下👇

# 下载代码
git clone https://github.com/Wellenline/auddly.git
  
# 或者加个代理  
git clone https://ghproxy.com/github.com/Wellenline/auddly.git
  
# 进入目录  
cd auddly

# 修改 Dockerfile,解决报错
  
# 构建镜像
docker build -t wbsu2003/auddly:v1 .

# 运行容器
docker run -d \
   --name auddly-web
   -p 5121:80 \
   wbsu2003/auddly:v1

需要注意的是,Web 端官方的 Dockerfile 直接编译镜像会报错,需要做两处修改:

  1. 修改 node 的版本; 从 node:15-alpine3.10 更换为 node:lts-alpine
  2. Dockerfile 中需要屏蔽 COPY package-lock.json /app

TMM Docker 群晖_群晖_03

安装

服务端

服务端涉及到两个镜像,我们采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"

services:
  app:
    image: wbsu2003/auddly-server:latest
    container_name: auddly-server
    restart: always
    environment:
      - MONGO_URL=mongodb://auddly:YkdQ7iEBWTL7N2yk@mongodb/auddly?authSource=admin
      - MUSIC_PATH=/music
      - CACHE_PATH=/cache
      - JWT_SECRET=674666487456875
      - PORT=5000
      - HOST=http://192.168.0.197:5122
      - ADMIN_EMAIL=wbsu2003@gmail.com
      - ADMIN_PASSWORD=123456
    volumes:
      - ./music:/music
      - ./cache:/cache
    ports:
      - 5122:5000
    links:
      - mongodb
    depends_on:
      - mongodb

  mongodb:
    image: mongo:latest
    container_name: auddly-mongo
    environment:
      - MONGO_DATA_DIR=/data
      - MONGO_LOG_DIR=/dev/null
      - MONGO_INITDB_ROOT_USERNAME=auddly
      - MONGO_INITDB_ROOT_PASSWORD=YkdQ7iEBWTL7N2yk
    volumes:
      - ./data:/data
    command: mongod --auth --logpath=/dev/null

其中 mongodb 部分的变量说明👇:

可变


MONGO_DATA_DIR

默认设为 /data

MONGO_LOG_DIR

默认设为 /dev/null

MONGO_INITDB_ROOT_USERNAME

用户,默认设为 auddly

MONGO_INITDB_ROOT_PASSWORD

密码,用密码生成器生成

auddly-server 部分的变量说明👇:

可变


MONGO_URL

数据库库地址

MUSIC_PATH

音乐路径,默认为 /music

CACHE_PATH

缓存路径,默认为 /cache

JWT_SECRET

默认为 12345,似乎只能使用数字

SPOTIFY_ID

Spotify 客户端 ID

SPOTIFY_SECRET

Spotify 客户端 Secret

LAST_FM_API_KEY

Last.fm 获取的 API Key

LAST_FM_API_SECRET

Last.fm 获取的 Shared Secret

LAST_FM_USERNAME

Last.fm 用户

LAST_FM_PASSWORD

Last.fm 密码

PORT

容器端口,默认为 5000

HOST

主机地址:用的群晖主机+本机端口

ADMIN_EMAIL

管理员账号

ADMIN_PASSWORD

管理员密码

  1. 关于 SpotifyLast.fm,可相关部分,但老苏觉得在国内作用不大,所以没设
  2. MONGO_URL 按前面的设置,拼接为 mongodb://auddly:YkdQ7iEBWTL7N2yk@adb/auddly?authSource=admin
  3. JWT_SECRET 用密码生成随机生成了一个纯数字的 674666487456875

然后执行下面的命令

# 新建文件夹 auddly 和 子目录
mkdir -p /volume2/docker/auddly/{cache,data,music}

# 进入目录
cd /volume2/docker/auddly

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

如果没什么意外应该会正常启动

Web 端

Web 端就一个镜像 ,用 docker cli 安装更快捷

# 运行容器
docker run -d \
   --name auddly-web \
   -p 5121:80 \
   wbsu2003/auddly:latest

运行

在浏览器中输入 http://群晖IP:5122 就能看到服务端的界面,只有 JSON 格式的数据

TMM Docker 群晖_TMM Docker 群晖_04

格式化之后

{  
    "load":{  
        "idle":2951412165,  
        "total":3066084135  
    },  
    "version":"5.0.1",  
    "arch":"x64",  
    "node_version":"v15.14.0",  
    "num_cpus":4,  
    "uptime":229.572266431,  
    "free_mem":366473216  
}

在浏览器中输入 http://群晖IP:5121 就能看到 Web 端的界面

TMM Docker 群晖_TMM Docker 群晖_05

这里需要输入服务端的地址,就是我们前面 docker-compose.yml 文件中设定的 HOST=http://192.168.0.197:5122

如果要从互联网访问,服务端和 Web 端都需要反代

接下来需要用前面设定的 ADMIN_EMAILADMIN_PASSWORD 登录

TMM Docker 群晖_docker_06

登录成功后的主界面还是空空的

TMM Docker 群晖_服务端_07

测试用的音频还是那几个

主要是剪来剪去可以节省空间 😂

TMM Docker 群晖_TMM Docker 群晖_08

应该是没设定 SpotifyLastfm 的缘故,没有专辑封面

其实专辑内有 cover.jpg 文件

TMM Docker 群晖_群晖_09

音轨模式也是一样

TMM Docker 群晖_服务端_10

直接可以播放

TMM Docker 群晖_服务端_11

进入右上角的 Queue 有播放列表和界面

TMM Docker 群晖_服务端_12

再回到首页的 Dashboard,就会有统计信息了

TMM Docker 群晖_docker_13

小结

没有找到 Auddly支持的音频格式的说明,反正老苏能确定的是,mp3 没问题,整轨的 wav 肯定是不支持的

参考文档

GitHub - Wellenline/waveline-server: Simple self-hosted music streaming server 地址:https://github.com/Wellenline/waveline-server

Auddly - self hosted music streaming 地址:https://auddly.app/