Navidrome
阅读量: 101
阅读人次: 102
Navidrome 是一个开源的音乐服务器和流媒体解决方案,类似于 Subsonic,它允许你组织和播放你的音乐收藏,并通过 Web 界面或移动应用访问。
特性
- 支持 MP3, FLAC, OGG, AAC 等多种音频格式
- 自动扫描和标记音乐文件
- 支持用户管理
- 播放列表和收藏功能
- 支持多语言界面
- RESTful API
- 响应式 Web 界面
Docker 部署
Navidrome 可以通过 Docker 容器轻松部署:
docker run -d \
--name navidrome \
--restart=unless-stopped \
--user 1000:1000 \
-p 4533:4533 \
-e ND_SCANSCHEDULE=1h \
-e ND_LOGLEVEL=info \
-e ND_SESSIONTIMEOUT=24h \
-e ND_BASEURL=/navidrome \
-v /mnt/user/Music:/music \
-v /mnt/user/appdata/navidrome:/data \
deluan/navidrome:latest
参数说明
| 参数 | 说明 |
|---|---|
--user 1000:1000 | 使用非 root 用户运行,与 unRaid 用户权限匹配 |
-p 4533:4533 | 端口映射,4533 是 Navidrome 的默认端口 |
ND_SCANSCHEDULE | 音乐库扫描计划,1h 表示每小时扫描一次 |
ND_LOGLEVEL | 日志级别,info 表示显示信息级别日志 |
ND_SESSIONTIMEOUT | 会话超时时间,24h 表示 24 小时 |
ND_BASEURL | 基础 URL,用于反向代理配置 |
-v /mnt/user/Music:/music | 音乐目录映射 |
-v /mnt/user/appdata/navidrome:/data | 数据目录映射 |
反向代理配置
如果使用 Nginx 进行反向代理,可以添加以下配置:
location /navidrome/ {
proxy_pass http://192.168.5.3: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;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
客户端应用
Navidrome 与 Subsonic 兼容,可以使用以下客户端:
移动端
- DSub (Android)
- Subsonic (Android)
- play:Sub (iOS)
- substreamer (iOS)
桌面端
- Sonixd - 跨平台桌面客户端
- Jellyfin Media Player - 支持 Subsonic 协议
音乐库组织
为了获得最佳体验,建议按以下结构组织音乐文件:
Music/
├── Artist Name/
│ ├── Album Name/
│ │ ├── 01 Song Title.mp3
│ │ ├── 02 Song Title.flac
│ │ └── cover.jpg
│ └── Another Album/
│ ├── 01 Song Title.mp3
│ └── cover.jpg
└── Another Artist/
└── Album Name/
├── 01 Song Title.mp3
└── cover.jpg
高级配置
可以在数据目录下创建 navidrome.toml 文件进行高级配置:
# 基本设置
Address = "0.0.0.0"
Port = 4533
MusicFolder = "/music"
DataFolder = "/data"
# 扫描设置
ScanInterval = "1h"
ScanSchedule = "@every 1h"
# 用户设置
DefaultLanguage = "zh"
EnableTranscodingConfig = true
EnableDownloads = true
# 性能设置
ImageCacheSize = 100
EnableArtworkPrecache = true
# 安全设置
SessionTimeout = "24h"
EnableUserEditing = true
故障排除
音乐文件不被识别
- 检查文件格式是否受支持
- 确认文件权限正确
- 手动触发扫描:在 Web 界面中点击"立即扫描"
播放问题
- 检查音频文件是否损坏
- 确认网络连接稳定
- 尝试不同的音频质量设置
性能优化
- 定期清理日志文件
- 限制并发用户数
- 使用 SSD 存储音乐文件以提高读取速度
与其他服务集成
Navidrome 可以与其他自托管服务集成:
- 与 Jellyfin 共享音乐库
- 通过 Home Assistant 控制播放
- 使用 Frp 进行外网访问
备份策略
建议定期备份 Navidrome 数据:
#!/bin/bash
#description=备份 Navidrome 数据
DATE=$(date +%Y%m%d)
BACKUP_DIR="/mnt/user/Backup/Appdata"
TAR_FILE="$BACKUP_DIR/navidrome-$DATE.tar.gz"
tar -czvf $TAR_FILE /mnt/user/appdata/navidrome
echo "Navidrome backup completed: $TAR_FILE"
可以将此脚本添加到 User Scripts 中定期执行。