目标读者:拥有 NAS、Linux 服务器或 VPS 的自托管爱好者,具备基本的 Docker 使用经验。 适用平台:任何能跑 Docker 的环境 —— 威联通 QNAP、群晖 Synology、绿联 UGREEN、Ubuntu / Debian / CentOS 服务器、树莓派,甚至一台迷你主机。 阅读时间:约 10 分钟,部署操作约 20 分钟。
一、为什么是 Navidrome
订阅 Apple Music / Spotify 几年后,很多人会意识到同一个问题:无损 FLAC 本地文件越攒越多,每次想听都得连数据线或开 SMB 共享;流媒体平台要么不收你的小众专辑,要么偷偷把音轨换成低码率 AAC。于是「自托管音乐流媒体」成了刚需。
Navidrome 是什么?
Navidrome 是一个用 Go 编写的开源音乐服务器,主打「轻量、快、专注音乐」。它实现了 Subsonic API,因此任何兼容 Subsonic 的客户端(手机、电脑、Web、第三方 App)都能直接接入。它和 Plex / Emby / Airsonic 不是同一个定位:
Navidrome 没有 Plex / Emby 那种「全能压力」,扫库飞快,x86 和 ARM 架构都能流畅跑,天然适合 Docker 部署。
二、Docker 部署 Navidrome
2.1 准备工作
开始前先确认两件事:
音乐目录路径:把你要听的音乐整理到一个目录里(例如 Linux 服务器的
/srv/music、群晖的/volume1/music、威联通的/share/Music)。记住它的宿主机绝对路径,稍后要作为「音乐卷」挂进容器。数据目录路径:创建一个空目录存放 Navidrome 的数据库和缓存(例如
/srv/navidrome/data)。数据卷与音乐卷要分开,不要混在一起。
挂载建议:音乐目录以 只读(
:ro) 方式挂载,这样 Navidrome 不可能误删你的音乐文件,是最重要的安全实践。
2.2 方式一:docker run 单条命令(快速上手)
把下面两处路径换成你自己的实际路径,然后直接运行:
docker run -d \
--name navidrome \
--restart unless-stopped \
-p 4533:4533 \
-e ND_SCANNER_ENABLED=true \
-e ND_SCANNER_SCHEDULE="@every 1h" \
-e ND_LOGLEVEL=info \
-e ND_DEFAULTLANGUAGE=zh-cn \
-e ND_MUSICFOLDER=/music \
-v /srv/navidrome/data:/data \
-v /srv/music:/music:ro \
deluan/navidrome:latest运行后查看日志确认正常启动:
docker logs -f navidrome看到 Navidrome is ready! 或类似启动信息即成功。
2.3 方式二:docker-compose.yml(推荐,便于管理)
新建一个目录,写入 docker-compose.yml:
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
restart: unless-stopped
ports:
- "4533:4533"
environment:
ND_SCANNER_ENABLED: "true"
ND_SCANNER_SCHEDULE: "@every 1h"
ND_LOGLEVEL: info
ND_DEFAULTLANGUAGE: zh-cn
ND_MUSICFOLDER: /music
volumes:
- /srv/navidrome/data:/data
- /srv/music:/music:ro注意:请把
/srv/navidrome/data和/srv/music替换成你自己的实际路径。
保存后在文件所在目录执行:
docker compose up -d查看状态:
docker compose ps
docker compose logs -f navidrome2.4 关键参数说明
若需要接入 Last.fm 记录播放、Spotify 补齐封面等,可额外添加
ND_LASTFM_APIKEY、ND_SPOTIFY_ID、ND_SPOTIFY_SECRET,详见 Navidrome 官方配置文档。
三、启动 + 创建管理员
浏览器打开 http://你的服务器IP:4533,首次访问会自动进入创建管理员流程:
填 用户名 + 密码。注意:这个密码同时就是 Subsonic API 的密码,后面归流 App 连接时要原样填写。
进入后到 Settings → Music Folders,确认 /music 被正确识别。第一次扫全库会比较慢,等进度条跑完,回到主页应该就能看到所有专辑了。
首次元数据匹配(艺人头像 / 歌词)需要联网,之后会缓存到
/data卷;NAS 或服务器无法联网时,可以提前离线准备元数据。
四、用「归流」App 连接 Navidrome
到这里,你的自托管音乐服务就架好了。但服务端只是「库」,真正决定体验的是客户端。强烈推荐用「归流」App 来连接 —— 它就是为了 NAS 自部署场景而生的原生客户端。
4.1 归流是什么
归流(Klusto) 是一款支持 NAS 自部署服务的 Flutter 原生客户端,音乐子系统原生实现了 Subsonic 协议,与 Navidrome 无缝对接。它的几个核心体验:
🎧 原生音乐体验:专辑网格 / 列表、全屏播放器、后台播放、锁屏 / 控制中心 / AirPods 上一首下一首,开箱即用。
⚡ 细节到位:专辑封面缓存、歌词、播放队列,连接后自动同步专辑 / 艺人 / 歌单。
📱 跨平台:iOS / Android / 桌面端均已发布,一套服务多端访问。
🔌 不止音乐:后续还会接入视频、笔记、记账等更多 NAS 自部署服务,一个 App 管所有自托管。
📲 立即下载归流 App:
👉 https://apps.apple.com/cn/app/归流/id6782746622
App Store 搜索「归流」即可下载,或直接点上方链接跳转。
4.2 添加服务器
打开归流 App,进入 设置 → 添加服务 → 音乐服务器:
点 连接,归流会请求 /rest/ping.view 验证凭据,成功即自动进入音乐主页,随后自动同步全部专辑、艺人和歌单。
4.3 iOS 用户注意(HTTPS)
iOS 默认只允许 HTTPS 出口,直连 HTTP 内网 IP 时系统可能拒绝。归流已经帮你处理好了三种情况:
本地 ATS 例外(推荐,零配置):归流在
Info.plist中已配置NSAllowsLocalNetworking = YES,局域网 IP 直连可直接使用,无需任何额外操作。反向代理 HTTPS:用 Nginx / Caddy / Nginx Proxy Manager 配一个
music.xxx.com子域名 + Let's Encrypt 证书。公网 + 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 扫库与性能
scanner 周期:
ND_SCANNER_SCHEDULE默认 1 小时;拷贝新专辑后不会立刻出现,要么等,要么临时改5m。数据库:Navidrome 默认 SQLite,10 万首歌以内基本无压力;更大的库可把
ND_DB指向外部 PostgreSQL(详见官方文档)。转码:默认不转码、源文件直推。若客户端不支持 FLAC,可在 Settings 开启转码,但会吃 CPU,家用环境一般不开。
5.3 备份
最关键的卷是 /data(本例宿主机路径为 /srv/navidrome/data):
navidrome.db:所有扫库结果、播放计数、收藏夹都存在这里,最需要备份。cache/:封面 / 艺人头像缓存。
备份示例:
tar -czf navidrome-backup-$(date +%F).tar.gz /srv/navidrome/data建议把它纳入你现有的备份计划(NAS 的 HBS3 / Hybrid Backup Sync,或服务器的 cron 定时任务)。
5.4 常见问题
六、结尾
至此,你就拥有了一套完全自托管的音乐流媒体服务:无损本地文件静静躺在你的服务器 / NAS 上,手机、平板、Web 客户端随时访问,不依赖任何第三方订阅、不怕平台下架、不怕音质被偷换。
服务端交给 Navidrome,客户端交给「归流」—— 一个为 NAS 自部署而生的原生 App,音乐只是它的起点,后续还会接入更多自托管服务。
📲 下载归流 App:
👉 https://apps.apple.com/cn/app/归流/id6782746622
App Store 搜索「归流」即可下载。
如果你也用威联通、群晖或其他品牌 NAS,欢迎留言告诉我你最想看哪个自托管服务的部署教程。
附:本文使用的环境版本
Docker:20.10+(支持
docker compose命令)Navidrome 镜像:
deluan/navidrome:latest(发布时版本号见镜像 tag)归流 App 版本:1.x.x(发布时以 App 内为准)
相关链接
Navidrome 官网:https://www.navidrome.org/
Navidrome 配置文档:https://www.navidrome.org/docs/operators/configuration/
Nginx Proxy Manager:https://nginxproxymanager.com/
归流 App(App Store):https://apps.apple.com/cn/app/%E5%BD%92%E6%B5%81/id6782746622
用 Docker 部署 Navidrome,搭建自托管音乐库并连接「归流」App
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。