打造全自动云端音乐库:用Navidrome 挂载 Alist 网盘听歌
作为一个音乐爱好者,把音乐下载到本地不仅占用地方,多端同步也是个麻烦事。今天教大家如何利用 Navidrome 搭建专属的高颜值私有音乐服务器,并通过 Rclone 将 Alist 挂载的网盘(如 OneDrive)直接映射到 VPS 存储中,实现“零全盘同步、实时流媒体播放”的无限云端音乐库
Navidrome-web界面

苹果IOS下载音流软件导入Navidrome数据

🛠️ 核心架构与准备工作
必须有一台 Linux 服务器啊-0.0
本教程的实现原理非常简单:
数据源:Alist或者OpenList挂载的网盘音乐目录(本教程参考地址:
https://alist.oortaka.top/OneDrive网盘/music)桥梁:Rclone 通过 WebDAV 协议将 Alist 路径虚拟挂载为本地 Linux 目录。
播放器:Navidrome(Docker 部署)读取本地挂载目录,生成音乐库。
前提条件:你已经拥有一个运行中的 1Panel 或纯 Docker 环境,且 Alist或者Openlist网盘已搭建完毕。
一、 Rclone 安装与 WebDAV 挂载配置
首先,我们需要在服务器上配置 Rclone,让它能够顺畅地读取 Alist 中的音乐文件。
1. 安装 Rclone
在 Linux 服务器上执行官方一键安装脚本:
Bash
curl https://rclone.org/install.sh | sudo bash
2. 配置 Rclone 连接 Alist (WebDAV)
输入以下命令进入交互式配置界面:
Bash
rclone config
按照以下步骤进行交互(注意看注释):
输入
n(New remote) 创建新连接。Name(名称)输入:
alist_musicStorage 类型:找到并输入
webdav(或输入对应的数字,通常在 50+ 序号)。URL(服务地址):输入你的 Alist WebDAV 基础路径。注意:Alist 的 WebDAV 根路径通常是
https://你的域名/dav。示例输入:
https://alist.oortaka.top/dav
Vendor(供应商):输入
other(或者直接回车默认)。User(用户名):输入你的 Alist 登录账号(如
admin)。Password:输入
y表示输入自己的密码,然后输入你的 Alist 登录密码。Bearer token:直接回车跳过。
Edit advanced config? 输入
n。确认无误后输入
y保存,最后输入q退出。
3. 创建本地挂载目录
在服务器上创建一个专门给 Navidrome 读取的绝对路径:
Bash
mkdir -p /opt/1panel/docker/compose/music-navidrome/music_cloud
二、 关键:使用 Crontab 脚本进行开机自启与进程守护
为了确保 VPS 关机重启、或者 Rclone 进程意外断开后能够自动恢复挂载,我们通过 Crontab 定时任务 + Shell 脚本 来进行双重守护。
1. 创建守护脚本
在服务器中创建守护脚本文件:
Bash
nano /root/rclone_check.sh
将以下脚本内容复制进去(脚本会自动检测挂载路径是否有效,若断开则自动重新挂载):
Bash
#!/bin/bash
# 定义挂载路径和日志路径
MOUNT_PATH="/opt/1panel/docker/compose/music-navidrome/music_cloud"
LOG_PATH="/root/rclone_mount.log"
# 检测挂载点是否存在测试文件或是否可读,若未挂载则执行挂载
if ! mountpoint -q "$MOUNT_PATH"; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - 检测到 Rclone 挂载已断开,正在尝试重新挂载..." >> "$LOG_PATH"
# 取消可能存在的残留挂载锁定
umount -l "$MOUNT_PATH" >/dev/null 2>&1
# 执行 Rclone 挂载命令
/usr/bin/rclone mount alist_music:/OneDrive网盘/music "$MOUNT_PATH" \
--config=/root/.config/rclone/rclone.conf \
--allow-other \
--allow-non-empty \
--vfs-cache-mode full \
--vfs-cache-max-age 24h \
--vfs-cache-max-size 10G \
--buffer-size 32M &
# 等待 5 秒检查挂载状态
sleep 5
if mountpoint -q "$MOUNT_PATH"; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - Rclone 挂载成功!" >> "$LOG_PATH"
else
echo "$(date '+%Y-%m-%d %H:%M:%S') - Rclone 挂载失败,请检查配置。" >> "$LOG_PATH"
fi
fi
保存并退出后,赋予脚本执行权限:
Bash
chmod +x /root/rclone_check.sh
2. 配置 Crontab 守护
输入以下命令编辑当前用户的定时任务:
Bash
crontab -e
在文件末尾添加以下配置(实现开机自动挂载):
Plaintext
# 开机时自动执行一次挂载检查
@reboot /bin/bash /root/rclone_check.sh保存退出即可。此时你可以放心重启 VPS,Crontab 会在系统启动为你默默守护该挂载进程。
三、 Docker Compose 部署 Navidrome
网络磁盘挂载好后,下一步就是通过 1Panel 的编排(Docker Compose)将目录映射进 Navidrome。
进入 1Panel 后台 -> 容器 -> 编排 -> 创建编排,复制并修改以下 docker-compose.yml 代码:
YAML
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- "4533:4533"
environment:
# 重点 1: 扫描频率改为每 24 小时一次,或者手动扫描。减轻云端网盘 API 和本地 CPU 负担
ND_SCANSCHEDULE: "0 0 * * *"
ND_LOGLEVEL: info
# 重点 2: 针对低内存服务器,可开启并调整图像缓存增强(可选)
ND_IMAGECACHE_SIZE: "100MB"
TZ: Asia/Shanghai
volumes:
# 重点 3: 左边必须是你刚才用 Rclone 挂载的网盘绝对路径,末尾加上 :ro 表示只读安全模式
- "/opt/1panel/docker/compose/music-navidrome/music_cloud:/music:ro"
- "./data:/data"
restart: unless-stopped
💡 性能优化说明(避坑必看):
ND_SCANSCHEDULE:由于音乐存储在网盘,频繁的实时扫描会导致 Alist 和网盘 API 被风控。这里将其设置为"0 0 * * *"(每天凌晨全盘扫描一次),如果新上传了歌曲,可以在 Navidrome 后台手动点击Quick Scan刷新。:ro(Read-Only):在挂载映射末尾加上:ro,可以防止 Navidrome 意外修改或误删你网盘里的原始音乐文件。
点击确认并构建。等容器状态显示为 运行中 (1/1) 后,你就可以通过 http://你的服务器IP:4533 访问你的高颜值全功能音乐库了!
四、 结语与客户端推荐
初次进入网页端需要注册管理员账号。由于 Rclone 的缓存机制(--vfs-cache-mode full),首次播放或切歌时会有一两秒的缓存建立时间,之后便能享受丝滑的流媒体音乐体验。
精选全平台音质客户端推荐(在客户端内输入你的 Navidrome 网址和密码即可):
iOS / Apple Watch: 音流音乐 (Substreamer) / Amuse / Play:Sub
Android: Symfonium / Subtracks
Desktop: Navidrome 网页端本身就非常出色,支持自适应布局。
赶紧去折腾一下,把吃灰的网盘变成你的全能音乐随身听吧!如果在 Rclone 挂载阶段遇到报错,欢迎在评论区贴出日志交流。
-topaz-denoise-enhance-tuya.jpg)