6.8 KiB
Loading...
群晖 NAS 影音终极方案:Docker Rclone + OpenList 完美挂载 Plex 全攻略
写在最前面
因为将我的群晖DSM升级到7.3版本,导致之前用代码安装的rclone直接没了,所以就想着用Docker部署rclone,将遇到的问题到最后完成部署后的结果整理成了这篇文章。
前言:为什么你之前的挂载都失败了?
许多群晖用户在尝试通过 OpenList/Alist 挂载网盘时,往往会遇到三个看似"玄学"的问题:
| 问题现象 | 根本原因 |
|---|---|
| File Station 能看到文件,Plex 却扫不到 | Plex 套件缺乏访问 FUSE 虚拟文件系统的权限 |
| 播放 4K 原盘频繁卡顿 | 缺少本地缓存机制,网盘 API 被高频请求触发限速 |
| 重启 NAS 后挂载点变空 | 群晖默认存储卷挂载属性为 Private,容器挂载无法同步至宿主机 |
本文核心解决方案:通过 Docker Rclone 配合 挂载传播(Mount Propagation) 技术,构建一个稳定、高性能的网盘挂载架构。
第一阶段:宿主机底层环境加固(SSH 必做)
这是整个方案的"地基"。地基不稳,后续容器运行再顺畅,Plex 也无法识别文件。
1. 开启 FUSE 内核支持
FUSE(用户态文件系统)是 Rclone 在 Linux 上模拟硬盘的基础依赖:
sudo modprobe fuse
2. 修改存储卷共享属性(核心步骤)
群晖默认禁止容器修改宿主机挂载表,需手动将存储卷改为 shared 模式:
# 将 /volume4 替换为你实际的存储卷路径(如 /volume1)
sudo mount --make-shared /volume4
3. 建立标准化目录结构
建议统一存放 Docker 配置文件,便于日后迁移和维护,以下为示例:
# Rclone 配置文件目录
mkdir -p /volume4/docker/rclone/config
# VFS 缓存目录(建议选用 SSD 卷,加速 Plex 元数据扫描)
mkdir -p /volume4/docker/rclone/cache
# Plex 最终扫描的物理挂载点(需保持为空文件夹)
mkdir -p /volume4/OpenList
第二阶段:精细化配置 Rclone 凭据
1. 密码加密(不能填明文哦)
Rclone 配置文件禁止存储明文密码。执行以下命令生成加密字符串:
docker run --rm rclone/rclone obscure [你的OpenList密码]
记录输出结果(如 EY_L_2...),用于下一步配置。
2. 编写 rclone.conf
编辑 /volume4/docker/rclone/config/rclone.conf:
[openlist]
type = webdav
url = http://127.0.0.1:5244/dav # 必须包含端口和路径
vendor = other # 没错,就是other
user = admin # 你的用户名
pass = EY_L_2... # 填入上一步生成的加密字符串
⚠️ 关键细节:
- URL 格式:必须包含端口号
5244 和路径/dav,端口号请填写你自己的。 - 禁止尾随斜杠:URL 结尾不加
/,否则可能会触发405 Method Not Allowed错误。
第三阶段:部署高性能挂载容器
部署前建议清理可能存在的僵尸挂载点:
sudo fusermount -u -z /volume4/OpenList 2>/dev/null || true
执行部署命令:
docker run -d \
--name rclone-mount \
--restart always \
--privileged \
--network host \
--device /dev/fuse \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-v /etc/localtime:/etc/localtime:ro \
-v /volume4/docker/rclone/config:/config/rclone \
-v /volume4/docker/rclone/cache:/cache \
-v /volume4/OpenList:/data:shared \
rclone/rclone \
mount openlist:/ /data \
--config /config/rclone/rclone.conf \
--allow-other \
--allow-non-empty \
--vfs-cache-mode full \
--vfs-cache-max-size 20G \
--vfs-cache-max-age 24h \
--cache-dir /cache \
--buffer-size 64M \
--vfs-read-chunk-size 32M \
--vfs-read-chunk-size-limit 1G \
--attr-timeout 10s \
--dir-cache-time 24h \
--umask 000
核心参数解析
| 参数 | 作用说明 |
|---|---|
:shared |
挂载传播关键,使宿主机能够感知容器内的挂载变化 |
--vfs-cache-mode full |
启用完整 VFS 缓存,让网盘文件表现为本地文件特性 |
--vfs-cache-max-size 20G |
限制缓存上限,防止 Plex 扫库时耗尽 NAS 存储 |
--umask 000 |
赋予挂载点 777 权限,确保 Plex 能够正常读取 |
--vfs-read-chunk-size 32M |
顺序读取时的初始块大小,优化大文件播放性能 |
-e PUID=0 -ePGID=0 |
可以修改为管理员的,但是要注意权限 |
第四阶段:Docker 版 Plex 的特别配置
若使用 Docker 部署 Plex,需进行路径二次穿透:
1. 添加卷映射
在 Plex 容器配置中增加:
- 宿主机路径:
/volume4/OpenList - 容器路径:
/video(可自定义)
2. 必须添加 :shared 后缀
-v /volume4/OpenList:/video:shared
原理说明:不加 :shared 时,宿主机挂载点更新后,Plex 容器因命名空间隔离无法感知变化。
第五阶段:自动化运维与故障排查
1. 开机自动配置(群晖任务计划)
群晖重启后内核设置会重置。进入 控制面板 > 任务计划 > 新增 > 触发的任务:
- 事件:开机
- 用户:root
- 脚本内容:
#!/bin/bash
modprobe fuse
mount --make-shared /volume4
2. 常见故障速查表
| 报错现象 | 根因分析 | 解决方案 |
|---|---|---|
Input/output error |
挂载死锁或容器异常重启 | 停止容器,执行 fusermount -u -z /volume4/OpenList 强制卸载后重启 |
405 Method Not Allowed |
URL 格式错误 | 检查 rclone.conf 中 URL 是否以 / 结尾 |
| Plex 扫描不到文件 | 挂载传播未生效 | 确认宿主机执行了 mount --make-shared 且 Docker 映射包含 :shared |
| Plex 海报加载缓慢 | VFS 缓存正在构建 | 正常现象,等待 Rclone 将元数据下载至 /cache 目录 |
结语
完成上述配置后,你的网盘已通过 Rclone 无缝"寄生"在群晖本地。Plex 扫描 /volume4/OpenList 时,体验将与本地硬盘无异。
🎬 享受你的高清私人影院吧!
💡 进阶建议:Plex 资料库优化
进入 Plex 设置 > 资料库,建议调整以下选项以降低网盘 API 调用频率:
- ✅ 禁用 "定期扫描"
- ✅ 禁用 "检测到更改时扫描"
- ✅ 改为 手动扫描 或设置 凌晨低峰期定时扫描
此举可显著降低网盘服务商的流量风控风险,提升长期稳定性。