技术笔记

NAS 搭建私人音乐库:Navidrome 部署与客户端选择

yaobingbin yaobingbin · · 约 7 分钟 · 0 条评论

为什么自己搭音乐库

几个现实的理由:

  • 曲库会消失。版权到期后歌曲下架是常态,你的歌单可能一夜之间少一半
  • 音质。无损(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 数据库(播放记录、收藏、播放列表)体积小,可以频繁备份到云端。

真正不可恢复的是你花时间整理好的标签。文件备份的时候记得连标签一起保住——这也是为什么建议在整理完之后再考虑归档。

微信搜一搜 纳思Note
评论经后台审核通过后显示 · 请勿发布广告、外链或无关内容

发表评论

邮箱地址不会被公开。填写昵称与邮箱后方可评论。