引言
本人手机存储空间128G,网易云音乐6个G,本就不富裕的空间更是雪上加霜,而且重点是,我根本没有听几首歌,清除缓存后,整个软件都还是占用了5个G左右,正巧,本人最近购入了一块树莓派zero 2w,秉承着不让树莓派变吃灰派的原则,所以萌生出了自己搭建音乐服务器的想法。
解决方案
使用Navidrome在树莓派搭建音乐音乐服务器,再结合音流app访问歌曲,期间为了让树莓派在公网也能访问到,所以又使用了云服务器通过frp将树莓派进行穿透,这样在局域网外也能访问了。
本人选择Navidrome的理由是它有一个非常打动我的特性。
Very low resource usage. Runs well even on simple Raspberry Pi Zero and old hardware setups
它可以跑在树莓派zero上面!!!树莓派zero 2w的内存只有512mb。
一、搭建Navidrome
本教程所有步骤都是跟着官方教程操作的
-
一台已经可以进行内网访问的树莓派
-
下载Navidrome相关脚本并上传至树莓派
注意!!!:树莓派是arm架构,所以注意下自己使用的服务的架构,如果直接使用服务器搭建,需要选择amd架构
安装相应的工具
需要安装vim和ffmpeg,已经安装了的可以跳过
sudo apt install vim ffmpeg
创建文件夹
创建完成后记得添加权限
sudo mkdir /opt/navidrome
sudo mkdir /var/lib/navidrome
解压Navidrome的压缩包
sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo chmod -R 777 /opt/navidrome
创建音乐库配置文件
在/var/lib/navidrome路径下创建配置文件navidrome.toml
MusicFolder = "准备存放音频文件的路径"
创建后台运行任务
在/etc/systemd/system/创建任务文件navidrome.service
[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]
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服务
sudo systemctl daemon-reload
sudo systemctl start navidrome.service
sudo systemctl status navidrome.service
开机自启(可选)
sudo systemctl enable navidrome.service
测试
完成上述步骤后,先进行内网访问,初次访问需要添加一个用户,账户和密码都是自定义的
进入之后可以修改中文右上角人像->personal->langguage->简体中文
完成以上步骤后,现在就拥有了一个仅可在局域网下访问的音乐服务器,接下来需要将其穿透至公网,让你能够随时随地的听音乐。
二、服务穿透
此步骤只展示关键的客户端配置,详细配置步骤见此博客
frp服务端配置
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = 1426061489
dashboard_pwd = "20011021yzkyzk"
vhost_http_port = 7002
vhost_https_port = 7003
max_pool_count = 50
token = "xxx"
tcp_mux = true
log_file = "/opt/frps/log/frps.log"
log_level = "info"
log_max_days = 3
privilege_mode = true
frp客户端配置
serverAddr = "xxx"
serverPort = 7000
auth.method = "token"
auth.token = "xxx"
loginFailExit=false
[[proxies]]
name = "远程音乐推流"
type = "http"
localIP = "127.0.0.1"
localPort = 4533
customDomains = ["xxxx"]
[log]
to = "/opt/frpc/log"
level= "info"
该配置主要就是把服务端的7002端口映射到树莓派的4533端口(4533端口就是Navidrome的默认端口),登录到frps面板(7500端口)也能看到映射的结果。
测试
使用服务器ip:7002端口访问,成功访问到Navidrome,这儿的音乐,只要你将mp3文件上传至你navidrome.toml中配置的路径中,它就会自动的读取。
现在在web端我们可以远程访问了,但是,本人平常使用手机听音乐的频率更高,所以,我们需要在移动端也能够访问到这些音乐。
三、音流配置
现在手机基本上是64位的,所以下载ARM64的就行了
下载完成后进行配置
选择Navidrome
填写服务器ip:frp配置的端口号
登录后进入首页,就可以看到之前上传的歌曲
至此一步就完成了,现在我将网易云常听的歌曲全部传到树莓派中,然后音流中就会扫描,大体的功能也和平常的音乐软件差不多,主要是占空间很小很小,几乎可以忽略不计。