前言
前几篇文章提过现在音乐平台一直在涨价,版权还麻烦,后来用iOS侧载安装第三方音乐软件感觉也稍显麻烦了些,主要是几个软件不是非常专业,用着有点难受,于是最终还是选择了自己搭建服务这一条路。
前提
首先,必须有自己的音乐库(或者准备建一个库);
其次,有NAS这类服务器;
最后,付诸行动。
如果你基本上只听固定的几首歌,或者固定的几位歌手,直接将那些歌下载下来存放到手机里或者U盘之类就行,没必要建一个库,维护成本太高。
建议
建议一:安装方式
裂墙建议 使用 Docker Compose 部署 !!!
理由: Navidrome官方推荐和支持的做法是音乐文件只读,即它只读取你的音乐信息,而不更改,防止你在后台操作导致整个库被操作导致数据丢失等问题。
其他安装方式虽然也可以做到只读,但是操作上会复杂很多,而且权限管理上面有点混乱,不推荐。
建议二:配置文件
Navidrome可以使用 navidrome.toml 进行统一配置,将自定义的配置都放在里面,启动时可以进行加载。
完整的配置文件建议像学习时期做语文阅读理解那样深度阅读:Navidrome Configuration Options | Navidrome
如果是 Docker Compose 的安装方式,建议放在 data 目录下面,并在 environment 中定义,如下:
environment:
- ND_CONFIGFILE=/data/navidrome.toml #容器中的绝对路径
volumes:
- "./data:/data"
- "/music:/music"
如果是 二进制 的安装方式,直接放在二进制的根目录下就行。
建议三:多音乐库挂载
Navidrome从 v 0.58 开始支持多库,/music 为基础库,无法删除,就目前使用下来,不建议子目录挂载 方式进行挂载,即:
-- /music
|-- Chinese #华语音乐
|-- Western #欧美音乐
|-- Japanese #日语音乐
|__ Others #其他
这样会导致选择库的时候,基础库已经包含所有音乐,如果再选择其他库,歌曲都会重复。
要避免重复添加的情况,需要让它们保持目录平行,即:
-- /music
-- /Chinese #华语音乐
-- /Western #欧美音乐
-- /Japanese #日语音乐
-- /Others #其他
这个方式 /music 这个基础库是空的,但是又无法删除,看着很不舒服,建议的目录结构是:
-- /music #华语音乐
-- /Western #欧美音乐
-- /Japanese #日语音乐
-- /Others #其他
把 华语音乐 或者其他某个类别目录映射到 /music ,这样默认的库可以在页面给它改个名字,各个库相对独立,也没有闲置的。
最终配置文件大致为:
services:
navidrome:
image: deluan/navidrome:latest
ports:
- "4533:4533"
restart: unless-stopped
environment:
- ND_CONFIGFILE=/data/navidrome.toml
volumes:
- "./data:/data"
- "/mnt/music/A.Chinese:/music:ro"
- "/mnt/music/B.Western:/Western:ro"
- "/mnt/music/C.Japanese:/Japanese:ro"
- "/mnt/music/D.Classical:/Classical:ro"
建议四:硬盘休眠(不开启!!)
如果要自己建库,当然最好是Nvme 或者 SSD,但现实情况非常残酷,一个稍微全面点的华语库估计就要几个TB(无损音乐,mp3这类不谈),如果是古典发烧友,这个库估计更大。
这就造成一个情况,这个硬盘99%会是HDD。
说到这里,必须澄清比较常见的一个误区:硬盘休眠可以保护硬盘,从而寿命更长???
这个说法比较有争议,目前最可靠的说法是:
一直转动:轴承持续运转,现代NAS/企业级硬盘(如WD Red、Seagate IronWolf、Exos)设计就是 24×7 全天候运行,轴承寿命很长。温度稳定反而比较关键。
休眠唤醒:每次唤醒时马达启动电流大、磁头加载/卸载(load/unload cycle),有一定机械应力。硬盘有额定启动次数(Load Cycle Count,常在几十万到几百万次),频繁启停(比如一天几十次)理论上会加速磨损。
现实情况是 硬盘坏掉更多是因为质量、温度、震动、批次等问题。没有大规模证据证明“休眠一定有助于延长使用寿命”。
所以,从多个角度来看,硬盘休眠只能省每年几十块钱的电费!
当然,这个也要分情况来看,如果是1T、2T这种容量小的盘,或者红盘、紫盘(?)这类硬盘,可能可以设置休眠,具体还是看硬盘的标准工作环境。
如果需要设置硬盘休眠,在 navidrome.toml 文件中添加下面配置来阻止程序后台自行扫描动作:
Scanner.Schedule = "0" # 关闭计划扫描
Scanner.WatcherWait = "0" # 关闭监视文件变动后启动扫描
Scanner.ScanOnStartup = false # 程序启动时扫描
建议五:App
官网有独立的版面介绍基于不同系统可以使用的App:Client Apps | Navidrome
基于我现有的iPhone手机的测试,给出一点点小小的建议:
-
歌曲数量在 10k左右 :挑一个好看的并且免费的即可,无特殊注意事项;
-
歌曲数量在 30k+ :有些App在初始化音乐库的时候,会读取完所有数据才加载随机板块(随机专辑和随机播放),也就是前期会非常慢,比如我之前使用的
Nautiline加载50k 首歌曲时就要 半小时左右 :
目前这些App更新非常迅速,基本上几天就要一更新,后续版本随时可能修正,所以这边我就不推荐了,建议查看官方的App页面,每个都去下载使用一下。适合自己的就是最好的。
目前我手机上就2款App,都支持Carplay:
花了真金白银的
Nautiline:初始要全部加载,等待后续更新目前处于TestFlight的
Narjo:功能性完全不输Nautiline,而且没有任何问题
最后
其实还有一种终极方式,前段时间玩了几天。
在NAS上部署 roonserver开心版 以及 easytier 这种打洞服务,手机与NAS打洞成功后,直接使用 Roon 就能播放,这样做的好处是依赖于Roon的成熟度,体验非常丝滑,不会像Navidrome的App那样第三方开发适配或多或少有点问题。
缺点也很明显:不支持CarPlay,很痛~
其实估计很多朋友会说各种成品NAS自带的音乐播放功能还不错,又有现成的App可以直接使用,都不用部署DDNS外网都能连接,我随便举两个非常提升体验性的功能:
-
多艺术家的识别: tag标签中使用
,;/&任意一种,能够配置分隔符并识别 -
艺术家图片以及介绍: 联网自动获取艺术家照片和介绍
能做到这两点的不多,所以要我说音乐服务这块,开源免费的就是Navidrome,付费的就Roon,没有其他。
之前AI还推荐了一些其他的比如 lyrionmusic 、koel 、Jellyfin ,还说某些方面 Plex 比 Navidrome 还好。。。都试过,不评价~
