写在最前面

因为将我的群晖 DSM 升级到 7.3 版本,导致之前用代码安装的 rclone 直接没了,所以就想着用 Docker 部署 rclone,将遇到的问题到最后完成部署后的结果整理成了这篇文章。

前言:为什么你之前的挂载都失败了?

许多群晖用户在尝试通过 OpenList/Alist 挂载网盘时,往往会遇到三个看似 "玄学" 的问题:

问题现象

根本原因

File Station 能看到文件,Plex 却扫不到

Plex 套件缺乏访问 FUSE 虚拟文件系统的权限

播放 4K 原盘频繁卡顿

缺少本地缓存机制,网盘 API 被高频请求触发限速

重启 NAS 后挂载点变空

群晖默认存储卷挂载属性为 Private,容器挂载无法同步至宿主机

本文核心解决方案:通过 Docker Rclone 配合 挂载传播(Mount Propagation) 技术,构建一个稳定、高性能的网盘挂载架构。

Docker Rclone + OpenList 完美挂载 Plex 全攻略
Docker Rclone + OpenList 完美挂载 Plex 全攻略

第一阶段:宿主机底层环境加固(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 调用频率:

  • ✅ 禁用 "定期扫描"

  • ✅ 禁用 "检测到更改时扫描"

  • ✅ 改为 手动扫描 或设置 凌晨低峰期定时扫描

此举可显著降低网盘服务商的流量风控风险,提升长期稳定性。