搜歌→下载→播放,这一个Docker项目全包了

简介

什么是 Reverb ?

Reverb 是一个自托管的音乐应用,将本地曲库管理、在线搜索和一键下载整合在同一个 Web 界面中。它内置 Navidrome 音乐服务器,支持通过 Deezer(无需密钥)或 Spotify 搜索音乐,并通过 spotDL 一键下载缺失的曲目,下载完成后自动识别并加入曲库。

主要特点

  • 统一搜索:一个搜索框同时搜索本地曲库和在线来源(Deezer/Spotify),结果实时流式返回
  • 一键下载:缺失的曲目通过 spotDL 一键下载,WebSocket 实时显示下载进度
  • 内置音乐服务器:默认自带 Navidrome,挂载音乐目录即可使用,也支持外接 Subsonic 服务
  • 无间隙播放Web 播放器支持队列、随机播放、循环、进度跳转和键盘快捷键
  • PWA 支持:可安装为 PWA,支持桌面端和移动端,带操作系统媒体键和锁屏播放控制
  • 开源免费:基于 AGPL-3.0 协议开源,可免费使用和修改

应用场景

  • 个人音乐库管理:将本地收藏的音乐文件通过 Reverb 统一管理和播放,随时随地通过浏览器访问
  • 曲库补全:搜索并下载本地缺失的曲目,自动整合到音乐库中,无需手动管理多套流程
  • 家庭音乐共享:部署在 NAS 上,全家人可通过 WebSubsonic 客户端播放音乐

Search Everywhere — 统一搜索框,实时显示本地和在线结果

一键下载 — WebSocket 实时进度

Web 播放器 — 队列、随机、循环

Reverb 是一个将搜索、下载、播放三合一的轻量级自托管音乐工具。

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 0.2.2

由于镜像托管在 ghcr.io,群晖 Docker 套件无法直接搜索,需要通过命令行拉取镜像。

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 新建文件夹 reverb 和 子目录
mkdir -p /volume1/docker/reverb/data

# 进入 reverb 目录
cd /volume1/docker/reverb

# 修改目录权限
chmod a+rw data

# 一键启动
docker run -d \
--name=reverb \
--restart=unless-stopped \
-p 8195:8090 \
-v $(pwd)/data:/data \
-v /path/to/your/music:/music \
-e REVERB_ADMIN_PASSWORD=reverb123 \
ghcr.io/maxjb-xyz/reverb:latest

环境变量可选的配置项说明

变量 默认值 说明
REVERB_ADMIN_PASSWORD 首次启动时初始化管理员密码,完成后建议删除
REVERB_SPOTIFY_CLIENT_ID Spotify 应用 Client ID,用于扩展搜索来源
REVERB_SPOTIFY_CLIENT_SECRET Spotify 应用 Client Secret
REVERB_LIBRARY_PASSWORD 外接 Subsonic/Navidrome 库的密码

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
reverb:
image: ghcr.io/maxjb-xyz/reverb:latest
container_name: reverb
restart: unless-stopped
ports:
- "8195:8090"
volumes:
- ./data:/data
- /path/to/your/music:/music
environment:
REVERB_ADMIN_PASSWORD: reverb123
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8090/api/v1/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 reverb 和 子目录
mkdir -p /volume1/docker/reverb/data

# 进入 reverb 目录
cd /volume1/docker/reverb

# 修改目录权限
chmod a+rw data

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

# 一键启动
docker-compose up -d

提示REVERB_ADMIN_PASSWORD 仅在首次运行时用于初始化管理员账户,完成配置后建议从环境变量中移除。

运行

在浏览器中访问 http://<群晖IP>:8195 即可进登录界面

  • 用户:admin
  • 密码:环境变量 REVERB_ADMIN_PASSWORD 中设置的值 reverb123

播放

登录之后的主界面

因为我们挂载的音乐目录中已经有了音乐文件,所以可以直接播放

右下角可以切换播放显示模式

搜索

右上角用户 –> Admin –> Search providers –> + Add search

添加 Deezer 搜索适配器(无需密钥即可使用)

先测试一下

如果测试失败,可以在环境变量中增加自己的网络代理

1
2
3
HTTP_PROXY: http://192.168.0.206:2081
HTTPS_PROXY: http://192.168.0.206:2081
NO_PROXY: localhost,127.0.0.1,::1

别忘记了添加

尝试做个搜索

搜中文也没问题

下载

可以下载试试

等待下载成功

如果失败,而你的网络确认没问题,那就多试几次

下载的音乐文件,可以在映射的 /music 中找到

回到首页,可以直接播放

注意事项

  1. 密码安全REVERB_ADMIN_PASSWORD 仅首次启动时生效,设置完成后建议从 compose 文件中移除该环境变量
  2. 反向代理:如果需要外网访问,建议使用 CaddyNginxTraefik 反代并配置 HTTPS
  3. 法律声明Reverb 仅供个人合法使用,下载音乐时请确保您拥有相应的法律权利

参考文档

maxjb-xyz/reverb: The self-hosted music app that knows what you have, and knows how to get what you don’t.
地址:https://github.com/maxjb-xyz/reverb

ghcr.io/maxjb-xyz/reverb — GitHub Container Registry
地址:https://github.com/maxjb-xyz/reverb/pkgs/container/reverb