前言

navidrome,开源的流媒体服务器,全平台客户端都有。功能和群晖的audio station一样,但首先不是人人都有群晖,其次有群晖的人也不一定都喜欢群晖那个沙雕的audio station。

这里记录下安装步骤。其实官网的安装教程已经非常完整且详细,只是没有中文版而已。英文阅读没问题的可以直接看【[官方安装教程][1]】。这里仅做一个自己安装过程的记录和英译中。有人会问navidrome不是支持docker安装吗而且docker安装很简单,STOP!我不喜欢docker,所以选择自己手搓。

好了,让我们开始安装navidrome吧!


安装

第一步:安装ffmpeg

解码音频文件用的,ffmpeg的包大概200~500MB,请保证有足够的存储空间。

apt install ffmpeg -y

第二步:创建文件夹

navidrome需要两个文件夹:

  • 一个安装文件夹,存放navidrome的二进制包,默认是/opt/navidrome
  • 一个运行文件夹,用来存放配置文件和运行缓存,默认是/var/lib/navidrome

我准备用非root用户jack来运行navidrome服务,所以要提前考虑好两个文件夹的用户权限。

执行以下命令创建文件夹

install -d -o jack -g jack /opt/navidrome
install -d -o jack -g jack /var/lib/navidrome

第三步:下载安装包

到navidrome官方github发布页面下载对应系统、对应硬件架构的二进制包(安装包),指路👉【navidrome/releases

我这里以amd64(x64)版本为例。如果用wget下载很慢的话,可以先在其它电脑上下载好了然后用sftp工具上传,或者直接路由器挂代理。

# 进入安装目录
cd /opt/navidrome

# 下载安装包
wget https://github.com/navidrome/navidrome/releases/download/v0.49.3/navidrome_0.49.3_Linux_x86_64.tar.gz

# 解压
tar -zxvf navidrome_0.49.3_Linux_x86_64.tar.gz

# 解压后删除压缩包
rm navidrome_0.49.3_Linux_x86_64.tar.gz

# 解压出来的文件分配用户和组,避免权限问题
chown -R jack:jack *

第四步:创建配置文件

/var/lib/navidrome目录下创建navidrome.toml文件,用来指定音乐源文件的目录等其它参数。

默认只需要指定音乐源文件路径。更多自定义参数看【官方页面】,比如自定义端口。

# 进入目录
cd /var/lib/navidrome

# 新建配置文件
# touch navidrome.toml

然后在配置文件中添加以下内容

# 音乐源文件路径
MusicFolder = "/media/music"

# 自定义端口
Port = 4533

注意音乐源文件夹目录的用户权限,jack需要有读写权限。

第五步:添加到系统服务

进入/etc/systemd/system目录,新建navidrome.service文件,然后添加以下配置信息。

注意参数中的UserGroup两个参数对应的值要改成自己设定的值。其它参数默认即可,如果你能看懂参数也可以自行修改。

[Unit]
Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
After=remote-fs.target network.target
AssertPathExists=/var/lib/navidrome

[Install]
WantedBy=multi-user.target

[Service]
User=<user>
Group=<group>
Type=simple
ExecStart=/opt/navidrome/navidrome --configfile "/var/lib/navidrome/navidrome.toml"
WorkingDirectory=/var/lib/navidrome
TimeoutStopSec=20
KillMode=process
Restart=on-failure

# See https://www.freedesktop.org/software/systemd/man/systemd.exec.html
DevicePolicy=closed
NoNewPrivileges=yes
PrivateTmp=yes
PrivateUsers=yes
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
ReadWritePaths=/var/lib/navidrome

# You can uncomment the following line if you're not using the jukebox This
# will prevent navidrome from accessing any real (physical) devices
#PrivateDevices=yes

# You can change the following line to `strict` instead of `full` if you don't
# want navidrome to be able to write anything on your filesystem outside of
# /var/lib/navidrome.
ProtectSystem=full

# You can uncomment the following line if you don't have any media in /home/*.
# This will prevent navidrome from ever reading/writing anything there.
#ProtectHome=true

# You can customize some Navidrome config options by setting environment variables here. Ex:
#Environment=ND_BASEURL="/navidrome"

第六步:启用navidrome

# 重新载入服务配置信息
systemctl daemon-reload

# 启动navidrome
systemctl start navidrome.service

# 查看navidrome运行状态
systemctl status navidrome.service

成功启动的话,就可以在浏览器中访问 http://host_ip:4533 开始使用navidrome了。

第七步:设置开机自启

systemctl enable navidrome.service

参考文章

  1. Linux Install https://www.navidrome.org/docs/installation/linux/