系统环境

标题 版本 备注
系统版本 ubuntu 22.04.3 LTS (Jammy Jellyfish) -
内核版本 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux -
Navidrome v0.51.1 -

Navidrome 官方网址:https://www.navidrome.org/
Navidrome 托管地址:https://github.com/navidrome/navidrome

Navidrome是一个开源的音乐流媒体服务器,可以让用户通过Web界面或移动应用程序访问自己的音乐库。它提供了一个简单而强大的界面,使用户可以轻松地浏览、搜索和播放自己的音乐收藏。Navidrome支持多种音频格式,并且可以在各种设备上运行,包括个人电脑、树莓派等。

以下是Navidrome的一些主要特点和功能:

  1. Web界面: Navidrome提供了一个现代化的Web界面,用户可以通过浏览器轻松地访问自己的音乐库,无论是在桌面还是移动设备上。

  2. 音乐库管理: 用户可以将自己的音乐收藏整理成不同的歌手、专辑和播放列表,并且可以对其进行搜索和浏览。

  3. 流媒体播放: Navidrome支持在线流媒体播放,用户可以随时随地通过网络访问自己的音乐,并且可以在不同设备上同步播放。

  4. 标签和元数据支持: Navidrome可以自动从音乐文件中提取标签和元数据,并且可以用于搜索和浏览音乐。

  5. 多用户支持: Navidrome支持多用户访问,每个用户可以拥有自己的音乐库和个性化设置。

  6. 跨平台: Navidrome可以在多种操作系统上运行,包括Linux、Windows和macOS,并且可以部署到自己的服务器上。

1.安装必要的依赖包:

1
$ sudo apt install -y vim ffmpeg

2.点击这里下载最新版本的 navidrome 二进制包到服务器的 /usr/local/src/ 目录下:

1
$ sudo wget -O /usr/local/src/navidrome_0.51.1_linux_amd64.tar.gz https://github.com/navidrome/navidrome/releases/download/v0.51.1/navidrome_0.51.1_linux_amd64.tar.gz

3.将下载好的二进制包文件解压到 /usr/local/navidrome/sbin/ 目录下:

1
$ sudo tar -zxf /usr/local/src/navidrome_0.51.1_linux_amd64.tar.gz -C /usr/local/navidrome/sbin/

4.在 /usr/local/ 目录下创建 navidrome 工作目录 navidrome:

1
$ sudo mkdir -p /usr/local/navidrome/{etc,sbin,music,data,cache}

5.将创将的目录所属主和组都修改为当前用户:

1
$ sudo chown -R $USER:$USER usr/local/navidrome

6.将解压出来的二进制文件软链接到 /usr/sbin/ 目录下:

1
$ sudo ln -s /usr/local/navidrome/sbin/navidrome /usr/sbin/

7.在 /usr/local/navidrome/etc/ 目录下新建 navidrome 配置文件 navidrome.toml, 内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ sudo sh -c "cat << EOF >/usr/local/navidrome/etc/navidrome.toml 
MusicFolder='/usr/local/navidrome/music'
DataFolder='/usr/local/navidrome/data'
CacheFolder='/usr/local/navidrome/cache'
Spotify.ID='01a8dd2a5f7843fa97f08ddfa19b4033'
Spotify.Secret='73cd9d4e5611482a86dae672d39407c1'
LastFM.Enabled=true
LastFM.ApiKey='ef32a48ac31d9d40cfa80976b7baa5d5'
LastFM.Secret='4461af64eb597a7ebdf4b48b697cfdc2'
LastFM.Language='zh'
EnableGravatar=true
DefaultLanguage='zh'
LogLevel='info'
Address='0.0.0.0'
Port='4533'
EOF"

8.在 /lib/systemd/system/ 目录下创建 navidrome 启动脚本文件 navidrome.service,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$ sudo sh -c 'cat << EOF > /lib/systemd/system/navidrome.service
[Unit]
Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
After=remote-fs.target network.target
AssertPathExists=/usr/local/navidrome

[Install]
WantedBy=multi-user.target

[Service]
User=$USER
Group=$USER
Type=simple
ExecStart=/usr/local/navidrome/sbin/navidrome --configfile "/usr/local/navidrome/etc/navidrome.toml"
WorkingDirectory=/usr/local/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=/usr/local/navidrome

# You can uncomment the following line if you are 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 do not
# 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 do not 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"
EOF'

9.执行命令 systemctl daemon-reload 加载启动脚本:

1
$ sudo systemctl daemon-reload

10.启动 navidrome 服务并将其设置为开机启动:

1
$ sudo systemctl enable --now navidrome.service

Spotify

打开 https://developer.spotify.com/ ,登陆你的 Spotify 账号,创建一个应用(需要注意的是:Website 留空;Redirect URIs 输入 http://localhost )。然后获取该应用的 Client IDClient Secret

1
2
Client ID: 01a8dd2a5f7843fa97f08ddfa19b4033
Clinet secret: 73cd9d4e5611482a86dae672d39407c1

LastFM

打开 https://www.last.fm/api/account/create, 登陆你的账号,创建一个应用(这里只需要填入 Application name<应用名称>)。提交后获取应用的 API KeySecret Key:

1
2
API Key: ef32a48ac31d9d40cfa80976b7baa5d5
Secret Key: 4461af64eb597a7ebdf4b48b697cfdc2