Auddly Music Server的编译和安装

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

什么是 auddly ?

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

什么是 auddly-server ?

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

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

构建镜像

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

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

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

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

服务端

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

1
2
3
4
5
6
7
8
9
10
11
# 下载代码
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 端

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 下载代码
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

安装

服务端

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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,可以参考老苏写的『 音乐流媒体服务器Navidrome 』相关部分,但老苏觉得在国内作用不大,所以没设
  2. MONGO_URL 按前面的设置,拼接为 mongodb://auddly:YkdQ7iEBWTL7N2yk@adb/auddly?authSource=admin
  3. JWT_SECRET 用密码生成随机生成了一个纯数字的 674666487456875

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 auddly 和 子目录
mkdir -p /volume2/docker/auddly/{cache,data,music}

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

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

# 一键启动
docker-compose up -d

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

Web 端

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

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

运行

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

格式化之后

1
2
3
4
5
6
7
8
9
10
11
12
{  
    "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 端的界面

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

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

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

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

测试用的音频还是那几个

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

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

其实专辑内有 cover.jpg 文件

音轨模式也是一样

直接可以播放

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

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

小结

没有找到 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/