之所以选择在 NAS 上搭建自己的音乐库,不外乎下面几个原因:
- 有好的播放设备,希望找到无损音源发挥最佳收听效果。
- 音乐平台即使购买了会员,因为版权或中外音源差异的原因,总有自己喜欢的歌曲无法播放。
- 和文字内容一样,出于某些原因,音乐也会因为歌词被屏蔽。
而在积累了足够多的音乐专辑后,就会希望找到一种优雅,高效的方式来随时随地播放自己收集到的歌曲。具体来讲,需求是:
- 方便在电脑(web 端或 app)和移动设备(app)上播放。
- 能够整理并利用音乐的专辑,歌词等元数据信息。
- 服务器端安装需要docker友好(方便使用 docker compose 管理及迁移到任何平台)。
首先被排除的就是群晖(QNAP)自带的 Music Station,它的 web 端和移动端 app 在体验上都难以令人满意。除自带软件之外,提供音乐服务一般有两种方式:1. 专门的服务器端软件串流音乐文件 + 客户端播放;2. 将音乐文件当作普通文件,通过 SMB 或 WebDAV 等协议播放。因为需要外网访问,第二种方式对于体积比较大的无损音源来说不太友好。在尝试了一些软件组合后,找到了下面几个软件可以满足需求。
Navidrome
Navidrome 的简介是“开源的基于网页的音乐收藏服务器和流媒体服务。它让你可以在任何浏览器或移动设备上自由地听你的音乐收藏。它就像你的个人 Spotify!”,它既提供服务器端的音乐串流功能,也能当作 web 端的网页播放软件使用(也可通过 PWA 方式安装到移动设备上)。另外它支持 Subsonic 和 OpenSubsonic,所以有不少客户端可以直接使用。Docker compose 安装如下:
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # 设置了合适权限的用户
ports:
- "4533:4533"
restart: unless-stopped
volumes:
- "/share/Container/navidrome:/data"
- "/share/Music:/music:ro"
networks: # 为了可以被同网络上的 Nginx proxy manager 访问到
- my-dockers-network
networks:
my-dockers-network:
external: true

安装好后即可通过 http(s)://<ip>:4533
打开它的管理页面。但很快发现因为流媒体的设计理念,它无法通过传统的文件目录来浏览音乐,而只能通过歌曲的元数据(如专辑、艺术家等)来组织曲库。如果音乐文件的元数据不完整或不正确,整个曲库会混乱不堪。这时需要另一款能够补齐所有音乐元数据信息的软件。
Music Tag Web
Music Tag Web 是一款可以编辑歌曲的标题,专辑,艺术家,歌词,封面等信息的音乐标签编辑器程序(也就是“刮削”), 支持FLAC, APE, WAV, AIFF, WV, TTA, MP3, M4A, OGG, MPC, OPUS, WMA, DSF, MP4等音频格式。最主要它可以直接在浏览器中整理 NAS 上的音乐文件,省去了通过 SMB 等协议挂载远程目录的繁琐步骤。
它的 docker compose 安装如下:
version: '3'
services:
music-tag:
image: xhongc/music_tag_web:latest
container_name: music-tag-web
ports:
- "8002:8002"
environment:
- PUID=1000 # 设置了合适权限的用户
- PGID=1000
volumes:
- /share/Music:/app/media:rw
- /share/Container/music-tag-web:/app/data
restart: unless-stopped

虽然操作逻辑需要熟悉一下,但提供的功能很方便,可以手动,自动,批量对音乐文件的元数据进行编辑。在此,也向该项目的作者表示感谢。
播放客户端
有了元数据和歌词完备的音乐,Navidrome 就可以提供稳定可靠的音乐串流服务了。当然,你很可能需要把它配置成可以通过外网访问。客户端选择上,我个人测试了几款兼容 Subsonic 协议的应用:Navidrome, Feishin, Symfonium。目前的搭配方案是:电脑端直接用 Navidrome 本身的播放功能(web 端和 PWA),手机端购买了功能更强大,UI比较精美的 Symfonium。
写在最后
当你再次听到熟悉的歌,想起上学时中午飞奔回家打开录音机;想起中考结束的夏日晚上躺在凉席上反复听着一张专辑;想起第一次买到磁带随身听,一方面感叹音乐如此美妙,一方面希望那充电电池可以再耐用一些;想起父亲说“我听到一首非常好听的歌”;想起第一次听现场演唱会;想起在陌生的城市和音乐为伴……通过整理这些音乐,重拾当时的记忆,何尝也不是一种乐趣。