first commit
This commit is contained in:
@@ -0,0 +1,231 @@
|
||||
Loading...
|
||||
|
||||
[
|
||||
](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 调用频率:
|
||||
|
||||
* ✅ 禁用 **"定期扫描"**
|
||||
* ✅ 禁用 **"检测到更改时扫描"**
|
||||
* ✅ 改为 **手动扫描** 或设置 **凌晨低峰期定时扫描**
|
||||
|
||||
此举可显著降低网盘服务商的流量风控风险,提升长期稳定性。
|
||||
Reference in New Issue
Block a user