搬瓦工搭建 Navidrome 音乐流媒体服务完整教程
Navidrome 是一款轻量级的开源音乐流媒体服务器,兼容 Subsonic 和 OpenSubsonic API,资源占用极低,非常适合在搬瓦工 VPS 上部署。它支持多用户管理、实时转码、歌词显示等功能,可以配合 DSub、Symfonium、Sublime Music 等众多客户端使用,让你随时随地聆听自己的音乐库。
一、准备工作
1.1 系统要求
- 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
- 内存:Navidrome 非常轻量,512MB 内存即可流畅运行。
- 磁盘空间:取决于你的音乐库大小,程序本身仅需约 50MB。
- Docker:需提前安装,参考 Docker 安装教程。
1.2 创建目录
mkdir -p /opt/navidrome/data
mkdir -p /opt/navidrome/music
二、Docker Compose 部署
2.1 创建配置文件
在 /opt/navidrome 目录下创建 docker-compose.yml:
cd /opt/navidrome
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
restart: unless-stopped
user: "1000:1000"
ports:
- "4533:4533"
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
ND_ENABLETRANSCODINGCONFIG: "true"
ND_TRANSCODINGBITRATE: 192
volumes:
- ./data:/data
- ./music:/music:ro
EOF
2.2 启动服务
docker compose up -d
2.3 查看运行状态
docker compose ps
docker compose logs -f navidrome
启动成功后,浏览器访问 http://你的服务器IP:4533 即可打开 Navidrome Web 界面。首次访问时需要创建管理员账户。
三、上传音乐文件
3.1 使用 SCP 上传
# 上传单个文件
scp song.flac root@你的服务器IP:/opt/navidrome/music/
# 上传整个专辑文件夹
scp -r "艺术家/专辑名/" root@你的服务器IP:/opt/navidrome/music/
3.2 使用 rsync 同步
如果音乐库较大,建议使用 rsync 进行增量同步:
rsync -avz --progress /本地音乐目录/ root@你的服务器IP:/opt/navidrome/music/
3.3 音乐文件组织规范
推荐按照以下结构组织音乐文件,Navidrome 会自动读取文件标签(ID3 Tag)进行分类:
/music/艺术家名/专辑名/01 - 曲名.flac- 支持格式:MP3、FLAC、AAC、OGG、WMA、APE、WAV 等。
- 确保音乐文件包含正确的 ID3 标签信息。
四、环境变量详解
Navidrome 提供丰富的环境变量用于自定义配置,以下是常用选项:
- ND_SCANSCHEDULE:音乐库扫描间隔,默认
1m,可设为1h或0(禁用自动扫描)。 - ND_LOGLEVEL:日志级别,可选
error、warn、info、debug。 - ND_ENABLETRANSCODINGCONFIG:是否允许用户配置转码参数。
- ND_TRANSCODINGBITRATE:默认转码码率(kbps)。
- ND_SESSIONTIMEOUT:会话超时时间。
- ND_ENABLESHARING:是否启用分享功能。
- ND_ENABLESTARRATING:是否启用五星评分。
五、客户端配置
5.1 Web 界面
Navidrome 自带一个精美的 Web 播放器,支持播放列表、收藏、搜索等功能,可以直接在浏览器中使用。
5.2 移动端客户端
由于 Navidrome 兼容 Subsonic API,可以使用以下客户端连接:
- Android:Symfonium(推荐)、DSub、Ultrasonic。
- iOS:play:Sub、Amperfy、SubStreamer。
- 桌面端:Sublime Music(Linux)、Sonixd(跨平台)。
客户端配置时,服务器地址填写 http://你的服务器IP:4533,用户名和密码使用在 Navidrome 中创建的账户。
六、Nginx 反向代理与 HTTPS
为了安全地从外部访问,建议配置 Nginx 反向代理并启用 HTTPS:
server {
listen 443 ssl http2;
server_name music.example.com;
ssl_certificate /etc/letsencrypt/live/music.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/music.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:4533;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
配置反向代理后,需要在 docker-compose.yml 中将端口映射改为仅监听本地:
ports:
- "127.0.0.1:4533:4533"
七、多用户管理
Navidrome 支持多用户,每个用户拥有独立的播放列表、收藏和播放记录。管理员可以在 Web 界面的「用户」页面创建和管理用户。每个用户可以通过不同的客户端同时访问音乐库。
八、维护与更新
8.1 手动触发扫描
上传新音乐后,可以在 Web 界面点击右上角菜单中的「扫描」按钮,或等待自动扫描。
8.2 更新 Navidrome
cd /opt/navidrome
docker compose pull
docker compose up -d
8.3 备份数据
tar -czf navidrome-backup.tar.gz -C /opt/navidrome data/
备份 data 目录即可保存所有用户数据、播放列表和设置。音乐文件建议单独备份。
九、常见问题
音乐文件无法被识别
检查文件权限是否正确,确保 Navidrome 容器内的用户有读取权限:
chown -R 1000:1000 /opt/navidrome/music
chmod -R 755 /opt/navidrome/music
转码失败
Navidrome 使用内置的 ffmpeg 进行转码。如果遇到转码问题,可以查看日志获取详细错误信息:
docker compose logs navidrome | grep -i error
总结
Navidrome 是一款极其轻量但功能强大的音乐服务器,在搬瓦工 VPS 上部署后可以打造完全属于自己的音乐流媒体平台。配合丰富的第三方客户端,你可以在手机、平板、电脑上随时享受自己的音乐收藏。如果你还需要管理视频内容,可以参考 Plex 媒体服务器或 Jellyfin 媒体服务器教程。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。如遇问题,可前往 搬瓦工官网 提交工单。