Navidrome安装与配置
Navidrome 音乐服务器安装与配置摘要 本文记录了在Linux系统上安装配置Navidrome音乐服务器的完整过程。Navidrome是一款轻量级自托管音乐服务器,适合在NAS、树莓派等设备上搭建个人音乐流媒体服务。文章详细介绍了使用.deb包安装的方法、systemd服务配置、音乐目录规划,以及解决权限问题和专辑标签显示异常的方案。重点内容包括:通过apt安装.deb包自动处理依赖、创建配
Navidrome 安装与配置记录:从二进制安装到专辑标签修复
1. 背景
为了在局域网内搭建一个稳定、开放的本地音乐服务器,可以使用 Navidrome。
Navidrome 是一个轻量级的自托管音乐服务器,可以扫描本地音乐目录,并通过 Web 页面或兼容 Subsonic / OpenSubsonic API 的客户端访问音乐库。它适合部署在 NAS、小主机、Aidlux、树莓派等设备上,用来管理本地音乐文件。
本文记录一次在 Linux 盒子(arm64)上使用二进制方式安装 Navidrome 的过程,包括:
- Navidrome 简介
- 二进制安装
- systemd 服务配置
- 音乐目录和数据目录配置
- 权限问题处理
- 专辑显示为“无名”的修复方法
- 批量设置 Album 标签
2. Navidrome 适合做什么
Navidrome 的定位是“个人流媒体音乐服务器”。
它适合:
- 扫描本地音乐目录
- 在浏览器中播放音乐
- 作为局域网音乐服务器
- 通过 Subsonic / OpenSubsonic API 给第三方客户端调用
- 给智能音箱、语音点歌系统提供后端曲库
它不适合:
- 从网上自动下载音乐
- 自动绕过各音乐平台版权限制
- 自动把文件夹名当专辑名
- 直接替代完整的音乐下载器
简单理解:
Navidrome = 本地音乐库索引 + Web 播放器 + 音乐流服务
它只负责管理和播放你已经放进音乐目录里的音乐。
3. 目录规划
这次使用的目录结构如下:
/home/simon/navidrome/
├── data/ # Navidrome 数据库、缓存、封面等
└── music/ # 本地音乐文件目录
音乐文件放在:
/home/simon/navidrome/music/
其中有一个合辑目录:
/home/simon/navidrome/music/50亿播放合辑/
Navidrome 的数据目录放在:
/home/simon/navidrome/data/
4. 使用 .deb 包安装 Navidrome
推荐使用 Navidrome 官方发布的 .deb 包安装,而不是手动复制二进制文件。这样安装更干净,也会自动处理依赖,例如 ffmpeg。
4.1 下载 .deb 安装包
先打开 Navidrome 的 GitHub Releases 页面,找到适合当前系统架构的 .deb 文件。
常见架构选择:
amd64 常见 64 位 x86 电脑 / 服务器
arm64 常见 ARM64 开发板 / 服务器
armv7 部分 32 位 ARM 设备
查看当前系统架构:
dpkg --print-architecture
例如输出:
amd64
就下载 linux_amd64.deb。
如果输出:
arm64
就下载 linux_arm64.deb。
下载示例:
wget https://github.com/navidrome/navidrome/releases/download/v0.61.2/navidrome_0.61.2_linux_amd64.deb
如果你的系统是 ARM64,则类似:
wget https://github.com/navidrome/navidrome/releases/download/v0.61.2/navidrome_0.61.2_linux_arm64.deb
实际版本号需要以 GitHub Releases 页面为准。
4.2 使用 apt 安装
推荐使用 apt 安装本地 .deb 包:
sudo apt install ./navidrome_0.61.2_linux_amd64.deb
如果是 ARM64 包,则命令类似:
sudo apt install ./navidrome_0.61.2_linux_arm64.deb
使用 apt install ./xxx.deb 的好处是:它会自动检查并安装依赖,例如 ffmpeg。
也可以使用 dpkg 安装:
sudo dpkg -i navidrome_0.61.2_linux_amd64.deb
但如果缺依赖,还需要再执行:
sudo apt -f install
或者
sudo apt install ./navidrome_0.61.2_linux_arm64.deb --fix-missing
所以一般优先使用 apt。
4.3 检查安装结果
安装完成后检查版本:
navidrome --version
本文环境中运行的版本是:
Navidrome 0.61.2
使用 .deb 安装后,通常会自动创建 systemd 服务文件。可以查看:
sudo systemctl status navidrome --no-pager -l
如果安装后服务还没有正常启动,后面继续配置 navidrome.toml、音乐目录和权限。
5. 创建配置文件
创建配置目录:
sudo mkdir -p /etc/navidrome
编辑配置文件:
sudo nano /etc/navidrome/navidrome.toml
写入:
MusicFolder = "/home/simon/navidrome/music"
DataFolder = "/home/simon/navidrome/data"
Address = "0.0.0.0"
Port = 4533
ScanSchedule = "@every 1h"
LogLevel = "info"
各配置项含义如下:
MusicFolder 音乐文件目录
DataFolder Navidrome 数据目录
Address 监听地址,0.0.0.0 表示允许局域网访问
Port Web 访问端口,默认常用 4533
配置好后,后续可以通过浏览器访问:
http://服务器IP:4533
例如:
http://192.168.1.100:4533
注意:首次访问需要输入管理员账号密码。
6. 创建 systemd 服务
创建 systemd 服务文件:
sudo nano /etc/systemd/system/navidrome.service
写入:
[Unit]
Description=Your Personal Streaming Service
After=network.target
[Service]
ExecStart=/usr/bin/navidrome service execute -c /etc/navidrome/navidrome.toml
WorkingDirectory=/home/simon/navidrome
User=simon
Group=simon
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
重新加载 systemd:
sudo systemctl daemon-reload
设置开机自启并启动:
sudo systemctl enable --now navidrome
查看状态:
sudo systemctl status navidrome --no-pager -l
7. 如果服务启动失败:permission denied
一开始启动时遇到了类似错误:
FATAL: Error creating cache path: mkdir /home/simon/navidrome/data/cache: permission denied
手动创建 cache 后,又出现:
FATAL: Error creating artwork path: mkdir /home/simon/navidrome/data/artwork: permission denied
这说明 Navidrome 运行用户没有权限写入 DataFolder。
先检查目录权限:
ls -ld /home /home/simon /home/simon/navidrome /home/simon/navidrome/data
示例输出:
drwxr-xr-x 4 root root 4096 /home
drwxr-xr-x 27 simon simon 4096 /home/simon
drwxr-xr-x 4 simon simon 4096 /home/simon/navidrome
drwxr-xr-x 3 simon simon 4096 /home/simon/navidrome/data
再查看 simon 用户所属组:
groups simon
示例输出:
simon : simon sudo docker
或者:
id -a simon
示例输出:
uid=1001(simon) gid=1001(simon) 组=1001(simon),27(sudo),111(docker)
所以 simon 的主组就是 simon。
如果 systemd 服务不是以 simon 用户运行,可以执行:
sudo systemctl edit navidrome
打开后里面大部分是 # 开头的注释,这是正常的。直接添加:
[Service]
User=simon
Group=simon
保存后执行:
sudo systemctl daemon-reload
sudo systemctl restart navidrome
sudo systemctl status navidrome --no-pager -l
确认 override 是否生效:
sudo systemctl cat navidrome
应该能看到:
# /etc/systemd/system/navidrome.service.d/override.conf
[Service]
User=simon
Group=simon
如果目录归属不对,可以重新设置:
sudo chown -R simon:simon /home/simon/navidrome/data
sudo chown -R simon:simon /home/simon/navidrome/music
然后重启:
sudo systemctl restart navidrome
8. Navidrome 有没有下载功能
Navidrome 有下载功能,但这里的“下载”指的是:
从 Navidrome 服务器下载已有音乐文件到浏览器或客户端
不是:
从酷我、网易云、QQ 音乐、YouTube 自动下载新歌到服务器
9. 专辑显示为“无名”的原因
我在音乐目录下创建了:
/home/simon/navidrome/music/50亿播放专辑/
里面放了很多歌曲。Navidrome 扫描后,Web 页面里专辑名显示为:
无名
原因是:Navidrome 主要根据音频文件里的 metadata tags 组织音乐,而不是根据文件夹名推断专辑名。
也就是说,即使文件夹叫:
50亿播放专辑
如果音频文件里的 Album 标签是空的,Navidrome 仍然可能显示为:
无名
解决方法是:批量给这些文件写入 Album 标签。
10. 安装 kid3-cli
使用 kid3-cli 可以批量修改音频标签:
sudo apt update
sudo apt install kid3-cli
11. 批量设置 Album 标签
目标目录:
/home/simon/navidrome/music/50亿播放合辑
给目录下的所有常见音频文件设置专辑名:
find "/home/simon/navidrome/music/50亿播放合辑" -type f \( \
-iname "*.mp3" -o \
-iname "*.flac" -o \
-iname "*.m4a" -o \
-iname "*.ogg" -o \
-iname "*.wav" \
\) -exec kid3-cli -c "set album '50亿播放合辑'" {} \;
如果这是各种歌手的合集,建议同时设置 AlbumArtist:
find "/home/simon/navidrome/music/50亿播放合辑" -type f \( \
-iname "*.mp3" -o \
-iname "*.flac" -o \
-iname "*.m4a" -o \
-iname "*.ogg" -o \
-iname "*.wav" \
\) -exec kid3-cli \
-c "set album '50亿播放合辑'" \
-c "set albumartist 'Various Artists'" \
-c "set compilation 1" \
{} \;
这样可以避免 Navidrome 把不同歌手的歌曲拆成多个专辑。
12. 检查标签是否写入成功
找一首歌测试:
kid3-cli -c "get album" "/home/simon/navidrome/music/50亿播放合辑/某首歌.mp3"
查看专辑艺术家:
kid3-cli -c "get albumartist" "/home/simon/navidrome/music/50亿播放合辑/某首歌.mp3"
如果返回:
50亿播放合辑
说明标签已经写入成功。
13. 重新扫描 Navidrome
修改标签后,需要让 Navidrome 重新扫描音乐库。
可以在 Web 页面里触发扫描,也可以直接重启服务:
sudo systemctl restart navidrome
查看服务状态:
sudo systemctl status navidrome --no-pager -l
如果还没有刷新,可以再看日志:
journalctl -u navidrome -n 100 --no-pager
14. 小结
这次安装和配置的关键点如下:
1. Navidrome 适合做本地音乐服务器
2. MusicFolder 放音乐文件
3. DataFolder 放数据库、缓存和封面
4. systemd 服务用户必须有 DataFolder 写权限
5. 音乐目录可以只读,但数据目录必须可写
6. Navidrome 按音频标签组织专辑,不按文件夹名自动生成专辑
7. 专辑显示“无名”时,需要批量写入 Album 标签
8. 合集类音乐建议设置 AlbumArtist = Various Artists
最终配置示例:
MusicFolder = "/home/simon/navidrome/music"
DataFolder = "/home/simon/navidrome/data"
Address = "0.0.0.0"
Port = 4533
ScanSchedule = "@every 1h"
LogLevel = "info"
systemd override 示例:
[Service]
User=simon
Group=simon
访问地址:
http://服务器IP:4533
这样 Navidrome 就可以作为一个稳定的局域网音乐服务器使用。后续还可以继续接入 R1 音箱、Subsonic API 或自定义语音点歌服务。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)