介绍

前一阵从网上看到的一个自建流媒体平台,目前还在0.x版本测试中,应该只有网页版,页面也略显简陋。不过对于普通音乐播放器的常用功能如封面显示,元数据显示,分专辑与歌手分类等Navidrome都是有的,安装了FFmpeg之后还支持在线自定义转码,方便压缩体积进行串流。

官网Demo:https://www.navidrome.org/demo/

一.前期准备

前期准备其实挺简单的,只需要部署一下FFmpeg即可。官网提供了可以直接运行的二进制版本与需要自己编译的源码版本,本文都会介绍,可以自己选择。

以下为编译教程

首先安装git并且clone FFmpeg项目到本地,如果没有git也可以使用wget下载并解压。

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

之后切换到ffmpeg目录并安装编译器。

cd ffmpeg
#安装gcc编译器
yum install gcc 
#安装yasm编译器
yum install yasm 

安装完编译环境之后使用以下命令将FFmpeg的安装目录设置为/usr/local/ffmpeg,这里路径是可以修改的,如果自己选择了路径在接下来的环境配置中记得统一更改。

./configure --enable-shared --prefix=/usr/local/ffmpeg

最后执行make并且make install。这里make之后可能需要编译相当久的时间,请耐心等待。

make
make install

make install完成后就能在之前设置的安装目录中找到ffmpeg了。

以下为编译与二进制共用教程

如果你是使用的预编译的二进制文件,请直接从官网下载二进制文件,然后解压到你想要的安装目录里即可,以下教程默认是/usr/local/ffmpeg

编译或者解压完成后,修改文件/etc/ld.so.conf

vim /etc/ld.so.conf

#在 include ld.so.conf.d/*.conf 后添加以下内容
/usr/local/ffmpeg/lib/

并输入ldconfig使修改生效。

之后配置环境变量,输入 vim /etc/profile 打开环境变量文件,加入以下内容。注意如果之前更改了ffmpeg的安装目录这里请根据你自己的安装目录更改环境变量。

#set ffmpeg environment
PATH=$PATH:/usr/local/ffmpeg/bin
export PATH

保存后更新环境变量使其生效。

source /etc/profile

之后在控制台中输入 ffmpeg -version 就可以查看ffmpeg的版本信息了。

image.png

二.安装并配置Navidrome

Navidrome也有编译与二进制两种安装方法,但是目前Navidrome对于编译的环境版本要求比较严格,有需求的请根据官网的教程自行尝试。本教程仅使用预编译的二进制文件。

首先新建一个用户用来运行Navidrome,因为安全原因,官方不推荐使用root用户来运行Navidrome。

sudo groupadd -r navidrome
sudo useradd -r -g navidrome -s /sbin/nologin -M -c "Navidrome Daemons" navidrome

创建Navidrome的安装目录与运行目录。

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

之后使用wget从github发布页面下载Navidrome最新的二进制文件,重命名为Navidrome.tar.gz解压至安装目录并且设置运行权限。

sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo chown -R navidrome:navidrome /opt/navidrome

新建Navidrome的配置文件 vim /var/lib/navidrome/navidrome.toml 并加入以下内容。更多的配置设置请去官网配置教程查看。

#将<library_path>修改为你想用来保存音乐的目录
MusicFolder = "<library_path>"

然后vim /etc/systemd/system/navidrome.service创建Navidrome的服务文件,加入以下内容。

[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=navidrome
Group=navidrome
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 comment the following line if you don't have any media in /home/*.
# This will prevent navidrome from ever reading/writing anything there.
#ProtectHome=true

更新并启动Navidrome,

sudo systemctl daemon-reload
sudo systemctl start navidrome.service
sudo systemctl status navidrome.service

如果执行上述命令后显示绿色的running,那么此时访问vps_ip:4533就可以访问Navidrome了。

最后设置开机启动。

sudo systemctl enable navidrome.service

三.反向代理

如果有需要可以使用Nginx等软件的反向代理功能来为Navidrome添加域名和ssl。之前已经发过宝塔的类似教程了,本文不再细说。

最后修改:2021 年 01 月 11 日 09 : 53 PM
如果觉得我的文章对你有用,请随意赞赏