用Navidrome搭建个人音乐站

Navidrome支持docker、MacOS、Linux、FreeBSD,以及Windows,这使得它几乎可以安装在任何设备上。它是一个开源软件,安装和使用也非常简单,在https://www.navidrome.org/docs/上可以看到官方的文档,包括如何安装,如何配置等等。下面以Windows版本为例说明一下主要步骤。

一、安装与配置Navidrome

1、下载

需要下载3个东西:Navidrome、Shawl、ffmpeg。

Navidrome通过Github发布releases:https://github.com/navidrome/navidrome/releases

Shawl工具同样是一个开源软件,也通过Github发布:https://github.com/mtkennerly/shawl/releases

ffmpeg……你猜对了,它也是开源工具,Github发布地址:https://github.com/BtbN/FFmpeg-Builds/releases

Github需要科学访问,如果不方便,以上工具也可以从这里下载:(百度网盘) https://pan.baidu.com/s/1pRVtSdNhPg70NguF5LU0kw?pwd=1vhd

2、安装

Windows版本的Navidrome是一个单文件exe。我们将它放到任意文件夹内,假设为:

E:\Navidrome

将ffmpeg解压缩,放到任意文件夹,注意文件夹不要嵌套,确保ffmpeg目录下面有ffmpeg.exe。假设文件夹为:

E:\Navidrome\ffmpeg

将Shawl工具解压缩到任意文件夹,例如:

E:\Shawl

现在需要将它注册为系统服务。我们就用shawl工具来注册。

管理员身份打开cmd。用以下命令切换到E:\shawl目录,并执行注册服务命令,并启动navidrome服务。

e:
cd\shawl
shawl add --name Navidrome -- "E:\navidrome\navidrome.exe" -c "E:\navidrome\navidrome.toml"
sc start Navidrome

注意路径替换为你的实际路径。

细心的朋友可能注意到,这里通过“-c xxx.toml”指定了一个配置文件。

好了,理论上这时候Navidrome已经以服务形式运行了。可以用浏览器访问:localhost:4533,不出意外的话,应该就可以打开主页了。

打开之后先不要太激动,现在只是测试一下服务能否运行。使用它还需要其他配置。

3、配置

我们在E:\Navidrome中,找到navidrome.toml文件,如果没有就用记事本手动创建一个。注意,务必将它保存为UTF-8编码(记事本就可以另存为UTF-8),否则无法正常读取。

编辑其中的内容。它可以被Navidrome在每次启动时读取,以进行个性化设置。一个典型的navidrome.toml的内容如下:

ScanSchedule = '@every 24h'
TranscodingCacheSize = '150MiB'

# IMPORTANT: Use single quotes for paths in Windows
MusicFolder = 'F:\MusicOnline'

# Set this to the path of your ffmpeg executable
FFmpegPath = 'E:\Navidrome\ffmpeg\ffmpeg.exe' 

DefaultLanguage = "zh-Hans"
EnableSharing = true
UIWelcomeMessage = "欢迎周教授的朋友们!"

几个主要的设置介绍一下:

ScanSchedule表示自动扫描文件夹的时间间隔。我们常常会往文件夹中添加音频文件,有时候可能不想立即刷新,希望系统可以自动刷新。

MusicFolder,顾名思义,指明了音频文件存储位置。在Windows系统中,路径需要加上单引号。我们这里是“F:\MusicOnline”。

FFmpegPath,指定了FFmpeg工具的位置。

DefaultLanguage,可以设置为"zh-Hans",简体中文。如果不设置默认为英文。用户也可以在网页中自行设置界面语言。

EnableSharing,这个比较重要,如果需要共享音乐链接给别人,则必须设置为"True",默认是关闭Sharing的。

其他参数还有很多,详见官网:https://www.navidrome.org/docs/usage/configuration-options/

4、重启Navidrome服务以应用配置

管理员身份打开cmd,运行:

sc stop Navidrome
sc start Navidrome

或者也可以打开“服务”(或开始菜单-运行-services.msc),找到Navidrome,右键重启。

往你的音乐文件夹(本例中的F:\MusicOnline)copy若干测试音频文件。

用浏览器打开localhost:4533,第一次进入它会引导你设置默认管理员admin的密码。

熟悉管理员设置、新增用户设置、语言设置,目录扫描,专辑和音乐列表,以及播放功能。目前共享功能虽然可以使用,但意义不大,因为网站仍然只能在本地运行。

二、设置公网访问

要实现将家里的某台电脑公网可以访问,方法有很多。例如:

1、申请公网IP,并在路由器上做端口映射

该方法如今几乎已经不行了,国内电信、联通、移动几大运营商,在主要城市均已经不支持普通家庭用户申请公网IP。而且即使给了公网IP,也不是静态IP,还需要使用诸如花生壳动态域名这样的工具动态转换。国内的动态域名服务管控也越来越严了,受制于人,不推荐。

2、VPS+Zerotier

这是我目前使用的方法。它的好处是隐私性强,依赖性弱,除了VPS之外不依赖任何第三方服务,自己就可以搞定。而且Zerotier虚拟组网后,往Navidrome服务器上copy音频文件也很方便。

如何申请VPS不再赘述,建议不要使用腾讯、阿里的VPS,可以选择国外商家开在香港、台湾、日本、新加坡的VPS。

在VPS和家里电脑上分别安装Zerotier,并Join同一个Network。

购买一个域名,并申请免费SSL(可以到OpenSSL上申请)。这一步不是必须,但推荐这样操作,毕竟SSL可以多少保护一下用户信息。

然后在VPS的IIS或Nginx上设置反向代理,令访问VPS的流量重定向到家里的Navidrome。特别需要提醒的是,要放行navidrome服务器的防火墙4533端口

大功告成。

三、分享Music

开启公网访问后,并启用Sharing,就可以在网站里分享专辑或某首歌了。它会自动生成一个分享链接。

注意,分享链接是公开的,任何人都可以无需登录直接打开。该权限默认会保留较长时间(大概是1年)。

为了减少域名暴露,建议将分享的链接转换为二维码。通过https://classic.qrbtf.com/可以轻松转换多种样式的二维码,这个二维码的作者还在研究AI二维码,非常有意思,有兴趣的可以到他的discord频道去看看。

补充一下:整理音乐库,最好用的工具莫过于MusicTag。应该有点眼熟吧?没错,它也在上面的百度网盘里。