介绍
前一阵从网上看到的一个自建流媒体平台,目前还在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的版本信息了。
二.安装并配置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。之前已经发过宝塔的类似教程了,本文不再细说。