☰
Docker 部署 Navidrome,搭建自托管音乐库并连接移动端app
2026/10/19 13:42:59 网站建设 项目流程

目标读者:拥有 NAS、Linux 服务器或 VPS 的自托管爱好者,具备基本的 Docker 使用经验。
适用平台:任何能跑 Docker 的环境 —— 威联通 QNAP、群晖 Synology、绿联 UGREEN、Ubuntu / Debian / CentOS 服务器、树莓派,甚至一台迷你主机。
阅读时间:约 10 分钟,部署操作约 20 分钟。


一、为什么选择 Navidrome

订阅 Apple Music / Spotify 几年后,很多人会意识到同一个问题:无损 FLAC 本地文件越攒越多,每次想听都得连数据线或开 SMB 共享;流媒体平台要么不收你的小众专辑,要么偷偷把音轨换成低码率 AAC。于是「自托管音乐流媒体」成了刚需。

Navidrome 是一个用Go编写的开源音乐服务器,主打「轻量、快、专注音乐」。它实现了 Subsonic API,因此任何兼容 Subsonic 的客户端(手机、电脑、Web、第三方 App)都能直接接入。它和 Plex / Emby / Airsonic 不是同一个定位:

服务定位资源占用音乐体验维护成本
Plex全能媒体服务器大(流媒体同步需 Plex Pass)一般高
Emby全能媒体服务器大一般高
AirsonicSubsonic 老牌社区分支中(Java 虚拟机)中中(更新慢)
Navidrome专注音乐小(Go,单二进制)好(自动匹配歌词、艺人头像)低

Navidrome 没有 Plex / Emby 那种「全能压力」,扫库飞快,x86 和 ARM 架构都能流畅运行,天然适合 Docker 部署。


二、Docker 部署 Navidrome

2.1 准备工作

开始前先确认两件事:

  1. 音乐目录路径:把你要听的音乐整理到一个目录里(例如 Linux 服务器的/srv/music、群晖的/volume1/music、威联通的/share/Music)。记住它的宿主机绝对路径,稍后要作为「音乐卷」挂进容器。
  2. 数据目录路径:创建一个空目录存放 Navidrome 的数据库和缓存(例如/srv/navidrome/data)。数据卷与音乐卷要分开,不要混在一起。

挂载建议:音乐目录以只读(:ro)方式挂载,这样 Navidrome 不可能误删你的音乐文件,是最重要的安全实践。

2.2 方式一:docker run 单条命令(快速上手)

把下面两处路径换成你自己的实际路径,然后直接运行:

dockerrun-d\--namenavidrome\--restartunless-stopped\-p4533:4533\-eND_SCANNER_ENABLED=true\-eND_SCANNER_SCHEDULE="@every 1h"\-eND_LOGLEVEL=info\-eND_DEFAULTLANGUAGE=zh-cn\-eND_MUSICFOLDER=/music\-v/srv/navidrome/data:/data\-v/srv/music:/music:ro\deluan/navidrome:latest

运行后查看日志确认正常启动:

dockerlogs-fnavidrome

看到Navidrome is ready!或类似启动信息即成功。

2.3 方式二:docker-compose.yml(推荐,便于管理)

新建一个目录,写入docker-compose.yml:

services:navidrome:image:deluan/navidrome:latestcontainer_name:navidromerestart:unless-stoppedports:-"4533:4533"environment:ND_SCANNER_ENABLED:"true"ND_SCANNER_SCHEDULE:"@every 1h"ND_LOGLEVEL:infoND_DEFAULTLANGUAGE:zh-cnND_MUSICFOLDER:/musicvolumes:-/srv/navidrome/data:/data-/srv/music:/music:ro

注意:请把/srv/navidrome/data和/srv/music替换成你自己的实际路径。

保存后在文件所在目录执行:

dockercompose up-d

查看状态:

dockercomposepsdockercompose logs-fnavidrome

2.4 关键参数说明

参数说明
4533:4533左为宿主机端口、右为容器端口。默认 Web UI 用 4533,想换端口改左边即可(换完记得客户端那边同步改)。
ND_MUSICFOLDER容器内的音乐目录路径,与-v ...:/music:ro挂载点一致即可,一般保持/music不用动。
ND_SCANNER_ENABLED/ND_SCANNER_SCHEDULE自动扫库开关与周期。@every 1h表示每 1 小时扫描一次;刚拷完新专辑想立刻看到可临时改成@every 5m。
ND_DEFAULTLANGUAGE设为zh-cn可让中文文件名 / 艺人名匹配得更准,建议保留。
ND_LOGLEVEL日常用info;排查问题时临时改成debug。
ND_BASEURL留空即可;若用反向代理挂在子路径下(如https://xxx.com/music),可设为/music。

若需要接入 Last.fm 记录播放、Spotify 补齐封面等,可额外添加ND_LASTFM_APIKEY、ND_SPOTIFY_ID、ND_SPOTIFY_SECRET,详见 Navidrome 官方配置文档。


三、启动 + 创建管理员

浏览器打开http://你的服务器IP:4533,首次访问会自动进入创建管理员流程:

进入后到Settings → Music Folders,确认/music被正确识别。第一次扫全库会比较慢,等进度条跑完,回到主页应该就能看到所有专辑了。

首次元数据匹配(艺人头像 / 歌词)需要联网,之后会缓存到/data卷;NAS 或服务器无法联网时,可以提前离线准备元数据。


四、用客户端连接 Navidrome

服务端搭好后,还需要一个兼容 Subsonic 协议的客户端来播放。Navidrome 实现的是 Subsonic API,所以客户端选择非常多,iOS / Android / 桌面端都有对应 App。常见的几款如下:

客户端平台特点
DSubAndroid老牌客户端,功能全面
SymfoniumAndroid界面现代,支持离线缓存
substreameriOS / Android / Web开源免费
SonixdWindows / macOS / Linux跨平台桌面端
归流iOS / Android / 桌面中文界面,面向 NAS 自部署场景

下面以「归流」为例演示连接步骤——它是一款支持 NAS 自部署服务的中文客户端,音乐子系统同样走 Subsonic 协议。其他客户端的配置项大同小异,可对照参考:

打开归流 App,进入设置 → 添加服务 → 音乐服务器:

字段填写内容
服务类型Subsonic / Navidrome
服务器地址http://192.168.x.x:4533(换成你服务器 / NAS 的内网 IP 或域名)
用户名刚才创建的 Navidrome 管理员用户名
密码同一个密码

点连接,客户端会请求/rest/ping.view验证凭据,成功即自动进入音乐主页,随后自动同步全部专辑、艺人和歌单。

4.1 iOS 用户注意(HTTPS)

iOS 默认只允许 HTTPS 出口,直连 HTTP 内网 IP 时系统可能拒绝。三种解法:

  1. 本地 ATS 例外(零配置):部分客户端在Info.plist中已配置NSAllowsLocalNetworking = YES,局域网 IP 直连可直接使用。
  2. 反向代理 HTTPS:用 Nginx / Caddy / Nginx Proxy Manager 配一个music.xxx.com子域名 + Let’s Encrypt 证书。
  3. 公网 + HTTPS:DDNS + 反代 + 证书,实现外网访问。

局域网用户优先用方案 1;需要跨网络访问时再上方案 2 / 3。


五、进阶与踩坑

5.1 反向代理(HTTPS 访问)

用 Nginx 或 Caddy 反代 Navidrome,示例(Nginx):

server { listen 443 ssl; server_name music.example.com; ssl_certificate /etc/letsencrypt/live/music.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/music.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:4533; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

推荐用 Nginx Proxy Manager(Docker 一键部署),图形化配证书,省去手写配置。

5.2 扫库与性能

5.3 备份

最关键的卷是/data(本例宿主机路径为/srv/navidrome/data):

备份示例:

tar-czfnavidrome-backup-$(date+%F).tar.gz /srv/navidrome/data

建议把它纳入你现有的备份计划(NAS 的 HBS3 / Hybrid Backup Sync,或服务器的 cron 定时任务)。

5.4 常见问题

现象原因解决
扫库后库是空的音乐目录挂载路径不对docker exec -it navidrome ls /music查看容器内是否有内容
客户端连不上端口 4533 未放行检查宿主机防火墙 / 安全组放行 4533 端口
iOS 报 ATS 错误URL 不在 ATS 白名单用局域网 IP,或上 HTTPS 反代
scanner 卡在 0%容器读不到文件权限给音乐目录加读权限,或容器加user: "0"参数
同一首歌反复扫库文件名有变动避免频繁改名,scanner 周期适当调长

六、结尾

至此,你就拥有了一套完全自托管的音乐流媒体服务:无损本地文件静静躺在你的服务器 / NAS 上,手机、平板、Web 客户端随时访问,不依赖任何第三方订阅、不怕平台下架、不怕音质被偷换。

服务端交给 Navidrome,客户端选择任何一款兼容 Subsonic 协议的 App 即可;如果你更习惯中文界面、且希望在手机和电脑上统一管理多个自托管服务,可以试试上文的「归流」。


附:本文使用的环境版本


相关链接

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询