用NAS打造家庭数字生活:影视篇

0. 最终效果

用 Docker 容器部署多个容器:qBittorrentmoviePilot V2emby

这套体系的核心价值在于:

  • **搜索或订阅后自动下载
  • **下载完自动分类整理
  • 精美的海报墙
  • 多成员隔离观看
  • 多终端、多场地同步观影记录

0.1 存储结构:所有媒体资源统一归档到 /volume2/media

NAS 采用如下最终目录布局:

/volume1/docker/                  ← 所有容器配置目录
/volume2/media/                   ← 所有媒体数据(PT 下载、MP 整理)
    ├── downloads/                ← qb 与 emby 的资源目录和媒体库目录
    │      ├── raw/              ← qB 下载目录(用于 pt 做种)
    │      └── clean/            ← mp 输出(硬链接后的成品库)
    │             ├── tv/
    │             │     ├── 国产剧
    │             │     ├── 欧美剧
    │             │     └── 日韩剧
    │             ├── movies/
    │             ├── anime/     ← 大人番剧
    │             └── kids/
    │                    ├── 动画片(剧)
    │                    └── 动画电影
    │
    └──(其余非 MP 管辖的目录略)

目录结构示意图
CleanShot 2025-11-23 at 09.27.54@2x 1
设计要点:

  • 媒体数据全部放在大容量的 volume2
  • Docker 配置全部放 volume1
  • downloads/raw 是唯一下载入口
  • downloads/clean 是唯一媒体成品库入口
  • clean 下面子目录的设计可以根据自己需求建立,只需要在 mp 的<存储&目录>中相应设置好即可

0.2 Docker 映射规则:所有容器内部媒体路径统一

为了让 mp 能正常调用 qb 下载,并用硬连接的方式转移下载文件到 emby 的媒体库。

统一约定:容器内部媒体目录一律使用 /media

示例:

/volume2/media/downloads/  →  /media

0.3 权限要求:为 everyone 赋予“管理(Administration)”

如果没有“管理”权限,会出现:

  • MoviePilot 无法在 raw 和 clean 中创建文件(deny)
  • 无法硬链接
  • 整理失败但无明显提示

因此必须为 /volume2/media 及其子目录设置:

用户:everyone
权限:管理 + 读写(Administration)

文件夹权限设置示意图

CleanShot 2025-11-23 at 09.37.24@2x 1

CleanShot 2025-11-23 at 09.41.47@2x 1
CleanShot 2025-11-23 at 09.44.03@2x

0.4 多用户体系:按家庭成员进行媒体隔离

在 Emby 中我采用如下多用户设计:

  • 儿童账号
    仅开放 kids/
    (动画片、动画电影)
  • 老人账号
    仅开放 tv/国产剧/movies/
  • 其它账号
    全部开放

每个账户的:

  • 观看记录
  • 观看进度
  • 推荐逻辑

全部互不干扰。


0.5 网络

  • 局域网播放
  • 外网播放利用Synology 官方免费 DDNS + 群晖登录门户反代即可 (本文不讨论)

1. 全链条系统概览

整体链条如下:

PT Tracker  →  qb (raw)  
             →  mp(清洗、刮削、分类、硬链接、整理)  
             →  clean(tv / movies / anime / kids)  
             →  Emby(媒体库、账号体系、跨平台播放)  
             →  TV / iPhone / Android /

链条逻辑非常清晰:

  • qb 下载
  • mp 识别 + 分类 + 硬链接
  • emby 播放
  • 各端同步观看记录

mp 是整个系统的核心枢纽,负责将“下载文件”转化成“可播放媒体资产”。


2. 下载层:qb

qB 是系统的下载入口层,负责从 PT 站拉取种子数据。

2.1 下载路径规划:所有源文件统一进入 raw

/volume2/media/downloads/raw

qBittorrent 的配置非常简单:

  • 不重命名
  • 不移动
  • 不“完成后转移”
  • 保持原始文件结构(为了做种)

这保证了:

  • 硬链接不会破坏做种
  • MoviePilot 能识别
  • 原始文件完整可靠

2.2 Docker Compose(qBittorrent)

version: "3.8"

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent

    environment:
      PUID: 1000         # 更换成你的
      PGID: 100          # 更换成你的
      TZ: Asia/Shanghai
      WEBUI_PORT: 8999
      TORRENTING_PORT: 18036 # 更换成随机高位端口

    volumes:
      - "/volume1/docker/qbittorrent/config:/config"
      - "/volume2/media/downloads/:/media"

    ports:
      - "8999:8999"
      - "6881:6881"
      - "6881:6881/udp"

    restart: unless-stopped

关键点:

  • /volume2/media/downloads 映射成 /media
  • raw 路径必须与 MoviePilot 一致

3. 媒体库层:Emby(Media Layer)

Emby 是家庭多端播放的统一入口。

3.1 Docker Compose(Emby)

version: "2.3"

services:
  emby:
    image: emby/embyserver
    container_name: embyserver
    network_mode: host

    environment:
      PUID: 1000
      PGID: 100
      GIDLIST: 100
      TZ: Asia/Shanghai

    volumes:
      - "/volume1/docker/emby/config:/config"
      - "/volume2/media/downloads/clean:/media"

    devices:
      - "/dev/dri:/dev/dri"

    ports:
      - "8096:8096"
      - "8920:8920"

    restart: unless-stopped

Emby 只需要 clean(媒体库)。


4. 整理层:MoviePilot V2

MoviePilot 是本系统的“核心”。

它负责:

  • 在 pt 网站搜索资源
  • 下载资源到 raw
  • 从 raw 读取文件
  • 自动识别剧集/电影/番剧
  • 按照你在<存储&目录>中的设置,把文件放置到 clean 的相应目录
  • 自动生成 NFO / poster / backdrop
  • 投递给 Emby 索引

4.1 Docker Compose(MoviePilot v2)

version: "3.3"

services:
  moviepilot:
    image: jxxghp/moviepilot-v2:latest

    container_name: moviepilot-v2
    hostname: moviepilot-v2
    stdin_open: true
    tty: true
    network_mode: host

    volumes:
      - "/volume2/media/downloads/:/media"
      - "/volume1/docker/moviepilot_2/config:/config"
      - "/volume1/docker/moviepilot_2/core:/moviepilot/.cache/ms-playwright"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

    environment:
      NGINX_PORT: 3000
      PORT: 3001
      PUID: 1000
      PGID: 100
      UMASK: "000"
      TZ: Asia/Shanghai
      SUPERUSER: admin
      SUPERUSER_PASSWORD: "你的初始登录密码"

    restart: always
      

4.2 MoviePilot 成功的首要条件

MoviePilot 能硬链接整理的前提:

qBittorrent 与 MoviePilot 的容器内部文件都能以相同的路径访问,且都是以 media 开头。

示意图

CleanShot 2025-11-24 at 11.24.39@2x


5. 跨设备观看层(Apple / Android)

5.1 Apple 全链条(Infuse)

  • iPhone / iPad
  • Apple TV
  • Infuse 自动识别 Emby
  • HDR / 字幕兼容性最佳
  • 本地网络直连性能极高

5.2 安卓设备

  • Google TV / 小米盒子
  • Android 手机 / 平板
  • 直接使用 Emby App
  • 观看记录与 Apple 端完全同步(由 Emby 控制)

5.3 外网访问(轻触)

  • 使用 Synology 官方 DDNS
  • 通过 WebStation / Nginx 做简单反代

6. 总结

把我自己使用的家庭版影视系统做了完整文档化,从存储结构到 Docker 编排,从路径一致性到硬链接机制,从多用户体系到跨设备观看。

支持

Leave a Comment