Files
StudyDiary/10-WebClipper/群晖 NAS 影音终极方案:Docker Rclone + OpenList 完美挂载 Plex 全攻略 - 蛋蛋之家.md
T
2026-07-23 20:36:13 +08:00

231 lines
6.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Loading...
[![](https://cdn.ssslove.com/files/2026/03/VZmrhwfJspC.webp!wwater)
](https://cdn.ssslove.com/files/2026/03/VZmrhwfJspC.webp!wwater)
[群晖 NAS 影音终极方案:Docker Rclone + OpenList 完美挂载 Plex 全攻略](https://cdn.ssslove.com/files/2026/03/VZmrhwfJspC.webp!wwater)
写在最前面
-----
因为将我的群晖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 上模拟硬盘的基础依赖:
```null
sudo modprobe fuse
```
### 2\. 修改存储卷共享属性(核心步骤)
群晖默认禁止容器修改宿主机挂载表,需手动将存储卷改为 `shared` 模式:
```null
# 将 /volume4 替换为你实际的存储卷路径(如 /volume1)
sudo mount --make-shared /volume4
```
### 3\. 建立标准化目录结构
建议统一存放 Docker 配置文件,便于日后迁移和维护,以下为示例:
```null
# Rclone 配置文件目录
mkdir -p /volume4/docker/rclone/config
# VFS 缓存目录(建议选用 SSD 卷,加速 Plex 元数据扫描)
mkdir -p /volume4/docker/rclone/cache
# Plex 最终扫描的物理挂载点(需保持为空文件夹)
mkdir -p /volume4/OpenList
```
* * *
第二阶段:精细化配置 Rclone 凭据
--------------------
### 1\. 密码加密(不能填明文哦)
Rclone 配置文件禁止存储明文密码。执行以下命令生成加密字符串:
```null
docker run --rm rclone/rclone obscure [你的OpenList密码]
```
记录输出结果(如 `EY_L_2...`),用于下一步配置。
### 2\. 编写 rclone.conf
编辑 `/volume4/docker/rclone/config/rclone.conf`
```null
[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` 错误。
* * *
第三阶段:部署高性能挂载容器
--------------
部署前建议清理可能存在的僵尸挂载点:
```null
sudo fusermount -u -z /volume4/OpenList 2>/dev/null || true
```
执行部署命令:
```null
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` 后缀
```null
-v /volume4/OpenList:/video:shared
```
**原理说明**:不加 `:shared` 时,宿主机挂载点更新后,Plex 容器因命名空间隔离无法感知变化。
* * *
第五阶段:自动化运维与故障排查
---------------
### 1\. 开机自动配置(群晖任务计划)
群晖重启后内核设置会重置。进入 **控制面板 > 任务计划 > 新增 > 触发的任务**
* **事件**:开机
* **用户**root
* **脚本内容**
```null
#!/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 调用频率:
* ✅ 禁用 **"定期扫描"**
* ✅ 禁用 **"检测到更改时扫描"**
* ✅ 改为 **手动扫描** 或设置 **凌晨低峰期定时扫描**
此举可显著降低网盘服务商的流量风控风险,提升长期稳定性。