终极指南:在群晖NAS上使用Docker搭建全自动Rclone+Jellyfin云端影音库

前言

你是否也曾面临NAS硬盘空间告急的窘境?是否希望将海量的影音收藏存放在容量几乎无限的云端,同时又能享受如本地般流畅、精美的Jellyfin海报墙和播放体验?本教程将带你走过一段激动人心的探索之旅,最终我们将搭建一套稳定、可靠、全自动的云端媒体中心。

方案架构

我们将使用三个核心的Docker容器协同工作,各司其职,完美配合:

  • Openlist (翻译官):负责连接您的云盘(本例中为天翼云盘),并提供一个标准的WebDAV服务。
  • Rclone (搬运工):负责连接Openlist的WebDAV,并将云盘文件以高性能的VFS缓存模式,“搬运”并挂载到NAS的一个本地文件夹上。
  • Jellyfin (播放器):负责读取Rclone准备好的文件,整理成漂亮的海报墙,并提供强大的硬解播放服务。

数据流: [天翼云盘] -> [Openlist容器] -> [Rclone容器] -> [NAS本地文件夹] -> [Jellyfin容器]

准备工作

在开始之前,请确保您已具备:

  • 一台可以正常运行Docker的群晖NAS(或其他Linux系统的NAS)。
  • 已安装好Docker套件(或在群晖上叫Container Manager)。
  • 已开启SSH功能,并能以root用户身份登录。
  • 一个云盘账号(本例为天翼云盘)。

第一阶段:在群晖上准备“基建”环境

这一步的目标是为我们的Docker容器准备好所有需要的文件夹和系统环境。

步骤 1.1:创建所需文件夹

我们需要创建用于存放各个容器配置数据和挂载点的文件夹。请通过SSH登录NAS,以root用户执行以下命令:

# 创建 rclone 配置文件存放目录
sudo mkdir -p /volume1/docker/rclone/config

# 创建 rclone 挂载点目录 (云盘文件将出现在这里)
sudo mkdir -p /volume1/rclone_mount

# 创建 Jellyfin 配置文件和缓存目录
sudo mkdir -p /volume1/docker/jellyfin/config
sudo mkdir -p /volume1/docker/jellyfin/cache

# 创建 Openlist 配置文件目录
sudo mkdir -p /volume1/docker/openlist/data

# (可选) 创建一个NAS本地电影文件夹,用于混合媒体库
sudo mkdir -p /volume1/Local_Movies

步骤 1.2:设置文件夹权限

为了避免后续Docker容器因权限不足而无法读写,我们赋予这些文件夹通用的权限。

sudo chmod 777 /volume1/docker/rclone/config
sudo chmod 777 /volume1/rclone_mount
sudo chmod 777 /volume1/docker/openlist/data
sudo chmod 777 /volume1/Local_Movies

步骤 1.3:配置“共享挂载”并设置为开机自启

这是让Rclone容器能正常进行FUSE挂载的关键一步。

  1. 临时生效:在SSH中执行一次以下命令,让设置在当前立刻生效。
sudo mount --make-shared /volume1

2.永久生效:为了让NAS重启后这个设置依然有效,我们需要创建一个开机任务。

  • 进入群晖的 控制面板 -> 任务计划
  • 点击 新增 -> 触发的任务 -> 用户自定义的脚本
  • 常规 标签页:
    • 任务名称:Enable Shared Mount for Docker
    • 用户账号:root
    • 事件:开机
  • 任务设置 标签页:
    • 在脚本框内输入:mount --make-shared /volume1
  • 保存任务。

第二阶段:部署 Openlist 容器 (翻译官)

步骤 2.1:启动 Openlist 容器

在SSH中执行以下命令来启动Openlist。

docker run -d \
  --name openlist \
  --restart=unless-stopped \
  -v /volume1/docker/openlist/data:/opt/openlist/data \
  -p 5244:5244 \
  ghcr.io/openlistteam/openlist:latest

步骤 2.2:在 Openlist 中配置天翼云盘

  1. 在浏览器中访问 http://您的NAS_IP:5244
  2. 首次访问会要求设置管理员密码,请设置一个您记得住的密码。
  3. 登录后,进入 存储 -> 添加
  4. 驱动选择 天翼云盘,然后按照提示输入您的账号信息完成添加。
  5. 验证:添加成功后,您应该能在Openlist的文件管理界面看到您天翼云盘里的文件。记下您登录Openlist的用户名密码,下一步会用到。

第三阶段:部署 Rclone 容器 (搬运工)

步骤 3.1:生成 Rclone 配置文件

我们将在一个临时的rclone容器内,以交互模式生成配置文件。

docker run --rm -it \
  -v /volume1/docker/rclone/config:/config/rclone \
  rclone/rclone \
  config

进入向导后,请按照以下步骤操作:

  1. n) New remote
  2. name> tyyunpan
  3. Storage> webdav
  4. url> http://您的NAS_IP:5244/dav/
  5. vendor> other (直接按回车)
  6. user> 您Openlist的用户名
  7. pass> y,然后输入并确认您Openlist的密码
  8. 之后一路按回车接受默认选项,直到最后看到 e/n/d/r/c/s/q> 菜单,输入 q 保存并退出。

步骤 3.2:验证 Rclone 配置

  1. 检查文件是否生成:
ls -l /volume1/docker/rclone/config/

预期结果:应看到 rclone.conf 文件。

2.测试连接是否正常:

docker run --rm -it -v /volume1/docker/rclone/config:/config/rclone rclone/rclone lsd tyyunpan:

预期结果:应看到 天翼云盘 目录。

步骤 3.3:启动 Rclone 永久挂载容器

这是核心步骤之一,启动一个在后台持续运行的rclone容器。

sudo docker run -d \
  --name rclone-mount \
  --restart unless-stopped \
  --privileged \
  --cap-add SYS_ADMIN \
  --device /dev/fuse \
  -v /volume1/docker/rclone/config:/config/rclone \
  -v /volume1/rclone_mount:/data:rshared \
  rclone/rclone \
  mount tyyunpan:/天翼云盘 /data \
    --allow-other \
    --allow-non-empty \
    --dir-cache-time 5m \
    --vfs-cache-mode minimal \
    --vfs-cache-max-size 20G \
    --buffer-size 32M \
    --vfs-read-chunk-size 16M \
    --vfs-read-chunk-size-limit 1G

验证:等待一分钟后,执行 ls -lh /volume1/rclone_mount,应该能看到您云盘里的文件列表。

第四阶段:部署 Jellyfin 容器 (播放器)

步骤 4.1:启动 Jellyfin 容器

现在,我们启动最终的Jellyfin容器,并同时连接到云盘和本地的媒体文件夹。

# 如果已存在旧的Jellyfin容器,请先停止并删除
# sudo docker stop jellyfin
# sudo docker rm jellyfin

# 启动新的Jellyfin容器
sudo docker run -d \
  --name jellyfin \
  --restart=unless-stopped \
  -p 8096:8096 \
  \
  # --- 永久化数据映射 ---
  -v /volume1/docker/jellyfin/config:/config \
  -v /volume1/docker/jellyfin/cache:/cache \
  \
  # --- 核心媒体库映射 ---
  -v "/volume1/rclone_mount":"/media/cloud" \
  -v "/volume1/Local_Movies":"/media/local" \
  \
  # --- 硬件加速相关设置 ---
  --privileged \
  --device /dev/dri \
  --device /dev/dma_heap \
  --device /dev/mali0 \
  --device /dev/rga \
  --device /dev/mpp_service \
  --device /dev/iep \
  --device /dev/mpp-service \
  --device /dev/vpu_service \
  --device /dev/vpu-service \
  --device /dev/hevc_service \
  --device /dev/hevc-service \
  --device /dev/rkvdec \
  --device /dev/rkvenc \
  --device /dev/vepu \
  --device /dev/h265e \
  \
  # --- 使用的镜像 ---
  nyanmisaka/jellyfin:latest-rockchip

步骤 4.2:在 Jellyfin 中配置媒体库

  1. 登录 Jellyfin 网页界面。
  2. 进入 控制台 -> 媒体库
  3. 编辑或新增您的电影库,在“文件夹”部分,同时添加容器内部的两个路径:
    • /media/cloud (指向您的云盘电影)
    • /media/local (指向您的本地电影)
  4. 保存后,执行“扫描媒体库”。

结语

恭喜您!至此,您已经拥有了一个功能完整、稳定可靠、开机自启的自动化云端媒体中心。无论是扫描新媒体,还是日常播放,都应该能稳定运行。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注