Ghostboard pixel

全自动化观影之 MoviePilot 安装与使用

全自动化观影之 MoviePilot 安装与使用
根据作者意愿,请勿将本文转载至任何中国社交媒体与平台,包括但不限于小红书、Bilibili、微博、简书、什么值得买等。

相信绝大多数搭建了 NAS 的人都有着一个比较重要的使用途径,即使用 Emby、Plex、Jellyfin 或 Infuse 来搭建专属于自己的家庭影院。在此之前,我一直使用 NasTools 与 Plex 来完成我的家庭影院搭建,可以很好的完成自动化的观影需求,在 NasTools 内订阅某个剧集或者某部电影,便不再关心资源下载等内容,等待 NasTools 自动完成即可,如下图所示。

后续因为一些众所周知的因素,NasTools 的作者不得不停止更新并将 Github Repo 进行了 Archive 处理,尽管最后的版本对我而言仍旧可以保持日常需求,但是有的时候也不得不面对一些问题,比如在搜索资源时耗时越来越长等。但是有一个好消息,NasTools 的原作者最近开了新坑,基于 NasTools 的代码精简化需求,开发了新的影视管理工具 MoviePilot ,看到其他人的描述说新版本的软件运行速度有了相当多的提升。
话不多说,那便开始部署,我也在这里记录下我的安装过程,我在这里使用 Synology 的 Container Manager(原 Docker Manager),以下内容也可稍作修改应用到其他支持 Docker 的平台,就凭各位自行发挥了。

Synology Nas 准备工作

安装 Container Manager

打开 Synology 套件中心搜寻 Container Manager 并进行安装,安装过程根据相应提示即可。

设置 Docker 工作目录

打开 Synology 控制面板,选择共享文件夹,创建新的共享文件夹,文件夹名称根据需求自行选择,我这里就叫做 docker。

接下来,进入 Synology File Station,鼠标右键选择刚刚穿件的目录,进入 属性 菜单,选择 权限 菜单中的 新增,用户与组选项选择 EveryOne ,应用于全部文件夹,给予 读取与写入 权限,如下图:

点击应用后再选择 应用到这个文件夹,子文件夹及文件,如下图,点击保存后即可。

设置项目运行目录开始创建项目

在 File Station 内进入上一步设置的目录,新建文件夹,根据个人喜好选择命名即可,我这里将命名为 theater
设置完成后打开 Container Manager,点击左侧 项目,再选择 新增,根据自己喜好命名,路径选择为上一步设置的目录,来源选择 创建 docker compose,内容留空进入下一步即可,设置完成后如下图所示:

完成后点进 theater 进入项目,选择 YAML 配置,我们的准备工作便已完成。

我这里就继续沿用之前 NasTools 的配置文件了。

MoviePilot 依赖项目准备

CookieCloud 安装

根据 MoviePilot 项目描述,CookieCloud 为本项目的必须依赖,原文如下:

站点信息需要通过 CookieCloud 同步获取,因此需要安装 CookieCloud 插件,将浏览器中的站点 Cookie 数据同步到云端后再同步到 MoviePilot 使用。

服务端 Docker 安装

尽管 MoviePilot 项目中已经包含了公共 CookieCloud 服务器,但是本着能自建即自建的原则,我们也会在这里自行搭建 CookieCloud 服务器,docker compose 代码如下:

version: "3"
services:
  cookie-cloud:
    image: easychen/cookiecloud:latest
    restart: always
    network_mode: bridge
    hostname: cookie-cloud
    ports:
      - 8088:8088

将上面的代码复制粘贴进入 Container Manager,点击保存后选择启动,会看到 Container Manager 正在拉取镜像,如下图:

等这里的代码结束运行后,在浏览器输入 http://${Synology IP}:8088,如果看到如下界面,则表示部署成功:

CleanShot 2023-08-19 at 21.25.22

浏览器插件安装

进入 CookieCloud Release 下载最新的浏览器插件,并进行解压保存。进入 Chrome 插件设置:chrome://extensions/,打开开发者模式,选择 加载已解压的扩展程序,选择刚刚的解压目录,点击选择进行安装,如下图所示:

CleanShot 2023-08-19 at 21.30.37

安装完成后,我们可以打开 CookieCloud 插件进行配置,具体的教程可以移步 官方教程 ,下面以我的配置进行示例:

CleanShot 2023-08-19 at 21.40.37

设置完成后点击下方 保存测试 确保这里配置正确。到此为止,CookieCloud 配置完成。

下载服务器安装(以 QBitTorrent 为例)

根据 MoviePilot 项目文档,其支持 QBitTorrentTranssisson,大家可以根据个人喜好自行选择,我这里便以 QBitTorrent 为例,Transsisson 大家可以自行搜寻相关内容进行安装。

服务端 Docker 安装

第一步我们需要在之前设置的 MovePilot 项目的运行目录内新建一个名为 qbittorrent 的目录,这里的目的是将 QBitTorrent 的部分文件映射出来,以便我们进行后续操作,如忘记密码的修改或者 docker 迁移。如下图所示:

CleanShot 2023-08-19 at 21.51.42

同时,我们需要新建 QBitTorrent 的下载目录,以我个人的设置为例,如下:

CleanShot 2023-08-19 at 21.55.28

我这里设置为 media/movies(seriese)/raw 存储下载的原始媒体文件,media/movies(seriese)/clean 存储经过刮削的媒体文件,downloads 目录存储其他的下载内容。
以上内容准备后,我们便可以开始部署,docker compose 文件如下,你可以根据你的需求进行修改,以下仅为示例:

version: "3"
services:
  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    network_mode: host # 可以更改为 bridge,我这里选择 host 仅为方便设置 ipv6
    restart: always
    volumes:
      - ./qbittorrent:/config   # 冒号左边请修改为你想保存配置的路径
      - /volume1/media:/media   # 媒体目录,多个目录需要分别映射进来,需要满足配置文件说明中的要求
      - /volume1/downloads:/downloads
    environment:
      - PUID=1026
      - PGID=100
      - WEBUI_PORT=8999
      - TZ=Asia/Shanghai  # 时区

我们再次进入 Container Manager,选择 停止 项目,并将上文的代码复制粘贴,随后再次点击启动,如下图:

CleanShot 2023-08-19 at 22.01.02

等待弹出窗口内代码运行完成后,浏览器内输入 http:${Synology IP}:8999 便可进入 QBitTorrent WEBUI,如下图:

QBitTorrent WEBUI 配置

上一步后我们需要输入用户名(默认 admin)与密码(默认 adminadmin),便可以进入界面,点击设置图标便可以进入设置,各位根据自己的需求自行调参,可以参考 qBittorrent 参数详细设置教程

CleanShot 2023-08-19 at 22.11.59

媒体服务器安装(以 Plex 为例)

MovilePilot 支持 Emby、Plex 与 JsllyFin,大家可以根据个人需求选择相应的媒体服务器,我个人的体验结论是:

  • Emby 提供了较好的多人分享体验,也提供了多种客户端,如 Android、iOS、macOS、Apple TV等多平台,但其在 Apple TV 端的 APP 体验截止本文书写日期仍旧比较糟糕,如需 Apple TV 使用,一般需要搭配 Infuse 使用。
  • Plex 更加注重个人观影,也提供多平台客户端,Apple TV 客户端较为完善,达到了一般流媒体平台的流畅度与观影体验。
  • JellyFin 没有过多体验,但是可以把它理解为免费开源版的 Emby,手头紧张的朋友可以选择。

服务端 Docker 安装

在上一步中我们新建了媒体目录,在这一步便可以开始应用。同时,我们也需要新建一个目录用于存储 Plex 的配置,与上文中 QBitTorrent 相同,便不再赘述。这里的 docker-compose 文件如下,各位可以根据自己的需求进行修改:

version: "3"
services:
  plex:
    image: linuxserver/plex:latest
    container_name: plex
    network_mode: host
    restart: always
    environment:
      - PUID=1026
      - PGID=100
      - VERSION=docker
      - TZ=Asia/Shanghai  # 时区
    volumes:
      - ./plex:/config
      - /volume1/media:/media

这里步骤如上文相同,复制粘贴重新构建项目即可,这里不再赘述。

Plex WEBUI 配置

经过上文配置,这时便可以打开浏览器输入 http:${Synology IP}:32400,按照文字说明进行配置,可以参考 如何在 FreeNAS 上安装 Plex 媒体服务器,跳过前文的安装,直接从网页配置看起即可。

正文开始之 MoviePilot 安装

建议开始之前首先熟读 MoviePilot 配置文档,熟悉每一项环境变量的命名与含义。

服务端 Docker 安装

基础配置

与上一步相同的,我们需要新建一个目录用于存储 MoviePilot 配置,如图所示:

CleanShot 2023-08-20 at 02.22.39

然后我们便要开始稍显繁琐的 Docker 配置,我们跟随官方文档,开始一步步的编写 docker compose 文件,首先开头还是老几样:

version: "3"
services:
  moviepilot:
    image: jxxghp/moviepilot:latest
    volumes:
      - ./movie-pilot:/moviepilot # 冒号左边请修改为你想保存配置的路径
      - ./movie-pilot/config:/config#  冒号左边请修改为你想保存配置的路径
      - /volume1/media:/media # 媒体目录,多个目录需要分别映射进来,需要满足配置文件说明中的要求
      - ./qbittorrent/qBittorrent/BT_backup:/BT_backup #qb 种子目录,转移和辅钟需要
      - ./nastools/config:/nas-tools/config # nt数据库,用于转移历史记录,如果之前没有安装过 NasTools 的可以忽略删除这一行
    restart: always
    network_mode: bridge
    ports:
      - 3003:3000
    hostname: movie-pilot

以上这一部分为基础配置,接下来才是重头戏。

环境变量设置

要在 compose 文件中设置环境变量,其关键词为 environment,只需要在上文中的代码中继续加入即可,接下来我们来一个个的填入 需要配置的环境变量。

Docker 运行权限管理

首先我们要获取 Synology 用户的 uidgid,这里可以通过 ssh 到 Synology 输入命令来获取,第一步需要打开 Synology 的 ssh 权限,如图所示:

CleanShot 2023-08-20 at 02.37.02

接下来我们可以使用如下命令获取相关内容:

ssh ${username}@${Synology IP}
# 根据提示信任 Host 以及输入密码进行验证
username@SynologyNas:~$ id
uid=1026(username) gid=100(users) groups=100(users),101(administrators)

获取到上述内容之后,我们便可以设置以下内容,关于这里为什么不设置默认值,因为默认值为 0 的话即表明该程序可以获得我们 Synology 的 root 权限,这是不大安全的,具体的大家可以自行搜寻相关资料进行了解,这里不再赘述,这一步我们需要添加的环境变量如下:

    environment: 
      - PUID=1026 # 运行程序用户的 uid,默认 0
      - PGID=100  # 运行程序用户的 gid,默认 0
      - UMASK=022 # 掩码权限,默认 000,可以考虑设置为 022
      - MOVIEPILOT_AUTO_UPDATE=true #重启更新,true/false,默认 true
Docker 网络以及用户管理
    environment: 
      - MOVIEPILOT_CN_UPDATE=false #重启更新是否使用国内加速,true/false,默认false 
      - NGINX_PORT=3000 #WEB服务端口,默认3000,可自行修改,但不能为3001
      - SUPERUSER=admin #超级管理员用户名,默认admin,安装后使用该用户登录后台管理界面
      - SUPERUSER_PASSWORD=password  # 超级管理员初始密码,默认password,建议修改为复杂密码
      - API_TOKEN=moviepilot #API密钥,默认 moviepilot,在媒体服务器 Webhook、微信回调等地址配置中需要加上 ?token= 该值,建议修改为复杂字符串
      - PROXY_HOST=http(s)://ip:port #网络代理(可选),访问 themovied b需要使用代理访问,格式为 http(s)://ip:port
      - TMDB_API_DOMAIN=api.themoviedb.org # TMDB API地址,默认 api.themoviedb.org,也可配置为 api.tmdb.org 或其它中转代理服务地址,能连通即可
MoviePilot 文件下载路径管理
DOWNLOAD_PATH: 下载保存目录,注意:需要将 moviepilot 及下载器的映射路径保持一致,否则会导致下载文件无法转移

这里的这一句话看起来有些绕,但是我们解决的方式其实很简单,我们只需要保持 MoviePilot 与 QBitTorrent 的 Docker 下载目录映射名称一致即可,我们在之前已经将其均设置为 media,所以这里无需过多考虑。

    environment: 
      - DOWNLOAD_PATH=/media #下载保存目录,注意:需要将moviepilot及下载器的映射路径保持一致,否则会导致下载文件无法转移 - 仅供参考
      - DOWNLOAD_MOVIE_PATH=/media/movies/raw #电影下载保存目录,必须是DOWNLOAD_PATH的下级路径,不设置则下载到 DOWNLOAD_PATH
      - DOWNLOAD_TV_PATH=/media/series/raw #电视剧下载保存目录,必须是DOWNLOAD_PATH的下级路径,不设置则下载到 DOWNLOAD_PATH
      - DOWNLOAD_CATEGORY=false #下载二级分类开关,true/false,默认 false,开启后会根据配置 category.yaml 自动在下载目录下建立二级目录分类,因为我不需要这里进行更加详细的分类,电影与剧集两个分类即可,所以可以保持 false,各位可以根据自身需求进行更改
      - DOWNLOAD_SUBTITLE=true #下载站点字幕,true/false,默认true
      - REFRESH_MEDIASERVER=true #入库刷新媒体库,true/false,默认true
      - SCRAP_METADATA=true #刮削入库的媒体文件,true/false,默认true
      - TORRENT_TAG=MOVIEPILOT #种子标签,默认为 MOVIEPILOT,设置后只有 MoviePilot 添加的下载才会处理,留空所有下载器中的任务均会处理
MoviePilot 媒体库文件设置

这里的路径与上文相同,我们只需要保持 MoviePilot 与 Plex 的 Docker 媒体库目录映射名称一致即可。

    environment:
      - LIBRARY_PATH=/media #媒体库目录,多个目录使用,分隔 - 仅供参考
      - LIBRARY_MOVIE_NAME=movies/clean #电影媒体库目录名,默认电影
      - LIBRARY_TV_NAME=series/clean #电视剧媒体库目录名,默认电视剧
      - LIBRARY_CATEGORY=false # 媒体库二级分类开关,true/false,默认 false,开启后会根据配置 category.yaml 自动在媒体库目录下建立二级目录分类,可以根据自身需求进行更改
# 转移方式,支持link/copy/move/softlink
      - TRANSFER_TYPE=link
CookieCloud 配置
    environment:
      - COOKIECLOUD_HOST=http://10.0.0.6:8088  # CookieCloud服务器地址,格式:http://${Synology IP}:port,必须配置,否则无法添加站点
      - COOKIECLOUD_KEY=从 CookieCloud 插件复制
      - COOKIECLOUD_PASSWORD=从 CookieCloud 插件复制
      - COOKIECLOUD_INTERVAL=180  # CookieCloud同步间隔(分钟)
# CookieCloud对应的浏览器UA
      - USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 #CookieCloud 对应的浏览器 UA,可选,设置后可增加连接站点的成功率,同步站点后可以在管理界面中修改
通知器设置

暂时跳过。

下载器配置

以 QBitTorrent 为例,其他的请自行探索。

    environment:
      - DOWNLOADER=qbittorrent #下载器,支持qbittorrent/transmission,QB 版本号要求>= 4.3.9,TR 版本号要求 >= 3.0,同时还需要配置对应渠道的环境变量,非对应渠道的变量可删除,推荐使用 qbittorrent
#qbittorrent设置项
      - QB_HOST=http://10.0.0.6:8999 #qbittorrent地址,格式:http://${Synology IP}:port,https需要添加 https:// 前缀
      - QB_USER=username #qbittorrent用户名
      - QB_PASSWORD=passport #qbittorrent密码
      - DOWNLOADER_MONITOR=true #下载器监控,true/false,默认为true,开启后下载完成时才会自动整理入库
媒体服务器设置

以 Plex 为例,首先我们需要获取 X-Plex-Token,在浏览器中登陆 Plex,F12 进入开发者模式,选择 Network,搜索栏输入关键词进行搜寻,如下图所示:

CleanShot 2023-08-20 at 03.21.19

获取后进行复制粘贴即可。

    environment:
      - MEDIASERVER=plex #媒体服务器,支持emby/jellyfin/plex,同时还需要配置对应媒体服务器的环境变量,非对应媒体服务器的变量可删除,推荐使用emby
      - PLEX_HOST=http://10.0.0.6:32400 # Plex 服务器地址,格式:http://${Synology IP}:port,https 需要添加 https:// 前缀
      - PLEX_TOKEN= # Plex 网页 Url 中的 X-Plex-Token ,通过浏览器F12->网络从请求URL中获取
      - MEDIASERVER_SYNC_INTERVAL=1 #媒体服务器同步间隔(小时),默认 6,留空则不同步
认证站点设置

因为某些原因,MoviePilot 首先需要你时某一些 PT 站点的会员,才可进行使用,尽管这样提高了本项目的使用门槛,但这样可以使得本项目更加长久。详细内容可以参考 Movie Pilot 用户认证
这里以 Audiences 进行举例,我们首先需要获取 uidpasskey,登陆网站后,点击控制面板,即可获得,如下图所示:

CleanShot 2023-08-20 at 03.28.18

获取后进行复制粘贴即可。

    environment:
      - AUTH_SITE=audiences  # 认证站点,支持hhclub/audiences/hddolby/zmpt/freefarm/hdfans/wintersakura/leaves/1ptba/icc2022/iyuu
      - AUDIENCES_UID=uid
      - AUDIENCES_PASSKEY=passkey

部署 MoviePilot

与上文相同的,将最后的完成版复制粘贴加入 Container Manager,重新构建项目即可。

WEBUI 配置

打开 http://${Synology IP}:3003,如果出现登录界面,即表明安装成功,如下图所示:

输入上文中设置的账号密码登录后,即可进入主界面,如下图所示:

接下来便可以由你来进行探索这里的设定了,更加详细的关于 WEBUI 内的配置也会在日后在本文内进行更新。