本文始于
2021
年11
月,已经忘记了是什么原因一直没发,这次基本上全部重写了一遍,除了官方的图,所有图片都是重新截取的;
什么是 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
,只需要我们重新构建一下就可以了
构建服务端镜像的基本命令如下👇
# 下载代码
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 .
构建网页端镜像运行的基本命令如下👇
# 下载代码
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
直接编译镜像会报错,需要做两处修改:
node
的版本; 从 node:15-alpine3.10
更换为 node:lts-alpine
Dockerfile
中需要屏蔽 COPY package-lock.json /app
服务端涉及到两个镜像,我们采用 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 | 管理员密码 |
- 关于
Spotify
和Last.fm
,可以参考老苏写的『 音乐流媒体服务器Navidrome 』相关部分,但老苏觉得在国内作用不大,所以没设MONGO_URL
按前面的设置,拼接为mongodb://auddly:YkdQ7iEBWTL7N2yk@adb/auddly?authSource=admin
JWT_SECRET
用密码生成随机生成了一个纯数字的674666487456875
然后执行下面的命令
# 新建文件夹 auddly 和 子目录
mkdir -p /volume2/docker/auddly/{cache,data,music}
# 进入目录
cd /volume2/docker/auddly
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
如果没什么意外应该会正常启动
Web
端就一个镜像 ,用 docker cli
安装更快捷
# 运行容器
docker run -d \
--name auddly-web \
-p 5121:80 \
wbsu2003/auddly:latest
在浏览器中输入 http://群晖IP:5122
就能看到服务端的界面,只有 JSON
格式的数据
格式化之后
{
"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_EMAIL
和 ADMIN_PASSWORD
登录
登录成功后的主界面还是空空的
测试用的音频还是那几个
主要是剪来剪去可以节省空间 😂
应该是没设定 Spotify
和 Lastfm
的缘故,没有专辑封面
其实专辑内有
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/