这些年听歌越来越闹心:收藏的歌单说灰就灰,想听的歌分散在好几个平台,每个都要开会员。其实我电脑里存着不少早年收集的无损音乐文件,与其在各个平台之间来回切换,不如把这些文件搬到服务器上,自己搭一个音乐服务,手机电脑随时听。
Navidrome 就是为这个场景生的:开源、轻量、界面好看,还兼容 Subsonic 协议,手机上有大量现成客户端可以连。我搭了小半年,体验相当好,把过程记录下来。
一、准备工作
Navidrome 出了名的省资源,树莓派都跑得动,云服务器按最低配来就行:
| 项目 | 建议 |
|---|---|
| 系统 | Ubuntu 22.04 LTS |
| CPU | 1 核 |
| 内存 | 1G |
| 硬盘 | 看曲库大小,建议 40G 起步 |
服务器我用的雨云rainyun-com的入门款,1 核 1G 跑 Navidrome 绰绰有余,注册填码:2026off,可领5折,月付十几块钱。硬盘要留意:音乐文件多的话选配置时把磁盘空间留够,不然后期扩容麻烦。
装 Docker,用系统仓库的版本就行:
sudoaptupdatesudoaptinstall-ydocker.iosudosystemctlenable--nowdockersudousermod-aGdocker$USER最后一条执行完要退出重新登录才生效,用docker version能正常输出版本信息就说明装好了。
二、部署 Navidrome
建两个目录,一个放程序数据,一个放音乐文件:
sudomkdir-p/opt/navidrome/data /opt/navidrome/music启动容器:
dockerrun-d\--namenavidrome\--restart=always\-p4533:4533\-v/opt/navidrome/data:/data\-v/opt/navidrome/music:/music:ro\deluan/navidrome:latest说明几点:
4533是默认网页端口,记得在防火墙里放行/music:ro表示容器对音乐目录只读,程序永远不会改动你的原始文件,这点很安心- 数据目录里存的是扫描后的索引和配置,以后换机器连它一起拷走就行
启动后浏览器访问服务器 IP 加 4533 端口,第一次打开会引导你创建管理员账号,设好用户名密码就进主界面了。
三、把音乐传上去
本地文件传到服务器的 /opt/navidrome/music 目录就行。文件多的话用 rsync,断点续传很省心:
rsync-avzP/本地音乐目录/ 用户名@服务器IP:/opt/navidrome/music/传完回到网页,Navidrome 默认会定期自动扫描新文件,等一会儿歌曲就出现在曲库里了。想立刻看到的话,在设置里手动触发一次扫描。
整理建议:按"歌手/专辑/歌曲"的目录结构存放,标签信息完整的文件识别效果最好。标签乱的文件可以用 MusicBrainz Picard 这类工具批量整理后再传,专辑封面也能一并补上。
四、手机上怎么听
网页版在电脑上够用,手机端体验更好的是客户端。Navidrome 兼容 Subsonic 的 API,主流客户端都能连:
- 安卓:Ultrasonic、Tempo,开源免费
- iOS:Substreamer、play:Sub
- 想要跨平台更好体验:Symfonium
连接方式都一样:服务器地址填 IP 加 4533 端口,输入账号密码即可。客户端普遍支持把歌缓存到本地离线听,通勤路上不费流量。
家里有多台设备的话可以给家人各开一个账号,在 Navidrome 的用户管理里加用户就行,每个人的歌单和播放记录互相独立。我自己是电脑用网页版、手机用客户端、平板偶尔用浏览器,三个端进度各自保存,体验跟商业平台没什么差别。
五、几个实用进阶设置
通过环境变量调整行为,在 docker run 命令里加-e参数:
ND_SCANSCHEDULE:扫描周期,比如1h表示每小时扫一次新文件ND_SESSIONTIMEOUT:登录会话时长,手机党建议设长一点,比如720h,免得反复登录ND_ENABLETRANSCODINGCONFIG:开启后可以给不同客户端设转码,流量紧张时把音频压成 128k 再听,能省一大截流量
改完环境变量记得删掉旧容器重建,挂着数据卷的配置不会丢:
dockerstop navidrome&&dockerrmnavidrome# 重新执行带新参数的 docker run 命令六、常见问题
问:歌曲扫不出来?
答:八成是文件权限问题。音乐目录要让容器内进程可读,简单处理一下:
sudochmod-Ra+rX /opt/navidrome/music问:外网听会不会很卡?
答:无损文件一首几十兆,家用上行带宽小的话建议开转码,或者在客户端里提前缓存常听的歌单。
问:以后想换服务器怎么办?
答:音乐目录和 /opt/navidrome/data 整个打包拷走,新机器上原样挂回去,扫一遍就恢复了。
问:支持哪些音频格式?
答:常见的 MP3、FLAC、AAC、OGG、WAV 都支持,无损格式在网页端会自动转码播放,客户端则看各自能力。我曲库里 FLAC 占大头,网页和客户端播放都很正常。
问:能跟别人合租一台服务器分摊成本吗?
答:可以,多开几个用户账号就行,每个人独立登录互不干扰。不过管理员账号自己留好,别随便给别人。
七、总结
自己的曲库自己说了算:不会灰、不用看广告、不受会员到期影响。Navidrome 部署只要十分钟,之后基本不用管,属于搭完就忘了它存在的那种服务。手里有存货的朋友值得花一个下午把它搭起来。