NAS 搭建私人音乐库:Navidrome 部署与客户端选择
为什么自己搭音乐库
几个现实的理由:
- 曲库会消失。版权到期后歌曲下架是常态,你的歌单可能一夜之间少一半
- 音质。无损(FLAC)在多数流媒体平台上需要额外付费,且不一定有你想要的专辑
- 去重与整理。自己管理可以按照自己的分类逻辑组织
- 离线可用。不依赖网络和会员状态
代价是你要自己找音源、整理文件、维护服务。这不是所有人都愿意做的交换,但如果你已经有 NAS 和一批音乐文件,搭一个服务只需要半小时。
Navidrome 是什么
Navidrome 是一个用 Go 写的音乐服务器,兼容 Subsonic API。这个兼容很关键——意味着你不需要用它的 Web 界面听歌,可以用生态里任何支持 Subsonic 的第三方客户端,而这些客户端的质量普遍比 Web 界面好得多。
核心特性:
- 轻量,内存占用通常在一两百 MB
- 自动扫描音乐目录,按标签(artist/album/genre)组织
- 支持 FLAC、MP3、AAC、OGG 等主流格式
- 支持在线转码(需要 ffmpeg),可以给移动客户端推低码率流省流量
- 多用户,各自独立的播放记录和收藏
- 支持播放列表(m3u 导入)
默认端口 4533。
部署
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
restart: unless-stopped
environment:
- ND_SCANSCHEDULE=1h
- ND_LOGLEVEL=info
- ND_SESSIONTIMEOUT=24h
volumes:
- ./data:/data
- /volume1/music:/music:ro
ports:
- 4533:4533
几个要点:
音乐目录挂成只读(:ro)。Navidrome 只读取不会写入,挂只读能避免误操作损坏音乐文件。
/data 目录要持久化。它存数据库(索引、播放记录、收藏)。这个目录不大,但丢了要重新扫描。
扫描策略:默认启动时会扫一次,之后按 ND_SCANSCHEDULE 定时扫描。首次扫描几万首歌可能需要几十分钟,之后增量扫描很快。
ffmpeg:如果要用到转码(客户端限速播放),容器内需要有 ffmpeg。官方镜像已内置。
音乐文件的整理比部署更重要
Navidrome 完全依赖文件内嵌的标签来组织音乐。 它不会去网上刮削(这一点和视频库不同——视频需要刮削海报和简介,音乐主要靠标签)。
所以如果你的音乐文件标签是乱的,Navidrome 里显示出来就是乱的。常见的问题:
- 缺失艺术家、专辑标签
- 专辑名带 “[FLAC]”、”[2020 Remaster]” 之类的后缀
- 同一张专辑被拆成多个(因为 compilation 标签不一致)
- 日文/中文歌名乱码(编码问题)
整理工具:
| 工具 | 平台 | 用途 |
|---|---|---|
| MusicBrainz Picard | Win/Mac/Linux | 自动匹配 MusicBrainz 数据库并写入标签,最推荐 |
| Mp3tag | Windows | 手动/批量编辑标签,强大 |
| Yate | macOS | 类似 Mp3tag |
| Beets | Linux/命令行 | 自动化程度最高,可编程 |
流程建议:先用 Picard 跑一遍自动匹配(它能通过音频指纹识别歌曲,即使文件名是乱的),再手动修正没匹配上的。
目录结构建议:
/music
├── Artist Name/
│ └── 2020 - Album Name/
│ ├── 01 - Track.flac
│ ├── 02 - Track.flac
│ └── cover.jpg
Navidrome 对目录结构不敏感(它读标签),但清晰的目录方便你自己管理和备份。
封面图:在专辑目录里放一张 cover.jpg(或 folder.jpg),Navidrome 会自动识别为专辑封面。也可以让它从文件内嵌标签里读。
客户端选择
这是决定体验的关键。Navidrome 自带的 Web 界面能用,但第三方客户端体验好很多。
手机端(支持 Subsonic API 的):
| 客户端 | 平台 | 特点 |
|---|---|---|
| Symfonium | Android | 功能最全,界面现代,付费但值得 |
| DSub | Android | 老牌,免费开源 |
| 音流 / 轻听 | Android | 国内开发者,中文体验好 |
| play:Sub | iOS | iOS 上的老牌选择 |
| Amperfy | iOS | 较新,界面清爽 |
桌面端:
- Sonixd(Win/Mac/Linux)— 开源,界面漂亮
- Feishin — Sonixd 的精神续作
- Audinaut — 跨平台
使用方式:在客户端里选择 Subsonic/Navidrome 服务器,填入你的地址、用户名、密码,就能用了。因为是标准协议,切换服务器和客户端都很自由。
离线缓存:好的客户端都支持缓存歌曲到本地,出门前把要听的专辑缓存下来,路上不耗流量。
存储容量估算
音乐文件比视频小得多:
| 格式 | 单曲大小 | 一张专辑(12 首) | 1000 张专辑 |
|---|---|---|---|
| MP3 320kbps | 8–12 MB | 约 120 MB | 约 120 GB |
| FLAC(16/44.1) | 25–40 MB | 约 400 MB | 约 400 GB |
| FLAC(24/96 高解析) | 80–150 MB | 约 1.2 GB | 约 1.2 TB |
主流选择是 FLAC 16/44.1,也就是 CD 音质。1000 张专辑大约 400GB,对 NAS 来说是很轻的负担。
高解析音频(24bit/96kHz 及以上)体积翻几倍,而实际听感提升在盲测中很难被证实。除非你有明确的设备支持和高解析音源,否则没必要追求。
关于歌词
Navidrome 会读取同目录下的 .lrc 文件作为歌词。如果你的音乐文件内嵌了歌词标签,它也能读取。
批量获取歌词可以用 MusicTag、LrcGet 这类工具,或者 Beets 的 lyrics 插件。中文歌曲的歌词覆盖率不错。
与其他方案的对比
| 方案 | 特点 |
|---|---|
| Navidrome | 轻量,专注音乐,Subsonic 生态 |
| Jellyfin | 影音一体,音乐功能相对弱 |
| Plex / Plexamp | Plex 的音乐客户端体验很好,但整体重 |
| Airsonic / LMS | 老牌 Subsonic 服务器,Navidrome 是更现代的替代品 |
如果你已经在跑 Jellyfin 或 Plex,可以直接用它们的音乐功能,不用再单独搭 Navidrome。但如果你主要需求是音乐、且希望轻量,Navidrome 是更好的选择。
备份建议
音乐库的备份成本可能比你想象的高——几百 GB 的 FLAC 重新找回来很麻烦。
音乐文件本身是冷数据,改动少,适合:
- 一份在 NAS 上(有 RAID 保护)
- 一份离线冷备(外接硬盘,定期更新)
Navidrome 的 /data 数据库(播放记录、收藏、播放列表)体积小,可以频繁备份到云端。
真正不可恢复的是你花时间整理好的标签。文件备份的时候记得连标签一起保住——这也是为什么建议在整理完之后再考虑归档。
