MoviePilot 搭建

起因 & 背景

前段时间由于一些原因, nas-tools 工具作者不再维护了,转而投向 MoviePilot 的开发,最近看更新日志已经可以满足我大部分功能需求,正好最近有空,给媒体服务器升级一下

我的环境很有可能跟你的不一样,还请自行斟酌

由于之前已经搭建了 nas-tools 的环境,搭建过程相对来说简单一些,本文会尽量详细的介绍每个步骤

CookieCloud 搭建

CookieCloud 的搭建过程非常简单,需要分别安装客户端和服务端,服务端直接在群晖 docker 中搜索 CookieCloud,我安装的版本是 easychen/cookiecloud,仅需要配好端口映射即可

客户端直接安装 Chrome 插件,然后按照下图填入服务器地址、key 和密码

注意服务器地址需要使用公网地址,由于我自己使用了 Surge Ponte 可以不把服务暴露在公网中,如果你没有类似的工具,可以考虑使用群晖自身的 DDNS 功能

在配置完毕后,点一下手动保存,到这里 CookieCloud 的工作就完成了

群晖文件层级

在我的群晖中,主要有两个文件夹 docker视频 文件夹,其中 docker 存放所有容器的配置,视频 存放所有媒体文件,如果你的路径跟我的不一致,还请自行调整

视频/link 目录是专门给 plex 使用的,MoviePilot 在检测到视频完成下载后,会将内容以硬链接的形式转移到 link 目录下

这里的 视频/temp 目录,是 qbit 下载文件时的临时存放目录

.
├── docker
│  ├── moviepilot
│  │  ├── config
│  │  ├── main
│  │  └── docker-compose.yaml
│  └── nas-tools
└── 视频
   ├── link
   │  ├── 日番
   │  ├── 电影
   │  └── 电视剧
   ├── temp
   ├── 日番
   ├── 电影
   └── 电视剧

通知

之前在 nas-tools 上使用 bark 作为通知方式,但是截止到目前 MoviePilot 尚未支持 bark,我在目前 企业微信TGSlack 三者之间选了 Slack 作为通知方式,由于整体配置较为繁琐,可以参考下方视频

虽然这个教程是基于 nas-tools 的,但是在 MoviePilot 上依然好用

最终通知的样子长这样

配置 MoviePilot

目前 MoviePilot 绝大多数内容都是由 env 进行配置,所以必须要了解每个变量到底是做什么的,建议在这一步开始前去读一读官方的 README,这里我在群里热心老哥提供的 compose 文件的基础上做了一些修改,同样的你也需要根据自身环境情况稍作修改

搭建时我使用的版本为 1.0.9,如果新版本出现问题需要自行调整

version: "3"
services:
  moviepilot:
    image: jxxghp/moviepilot:latest
    ports:
        - 3020:3020 # web 接口
        - 3001:3001 # overseerr 接口
    restart: always
    network_mode: bridge
    hostname: moviepilot    
    volumes:   
      - /volume1/docker/moviepilot/main:/moviepilot #程序主目录,必选
      - /volume1/docker/moviepilot/config:/config #config 配置文件,必选
      - /volume1/视频:/volume1/视频
      - /volume1/docker/nas-tools:/volume1/docker/nas-tools
    environment: 
# 基础设置
      - NGINX_PORT=3020
      - PUID=0
      - PGID=0 
      - UMASK=000
      - SUPERUSER=admin   #登录账号
      - SUPERUSER_PASSWORD=  #登录密码
      - API_TOKEN=moviepilot
      - MOVIEPILOT_AUTO_UPDATE=true   #重启更新
      - PROXY_HOST=你的代理 # 代理地址
      - MOVIEPILOT_CN_UPDATE=true
      - TMDB_API_DOMAIN=api.tmdb.org      
# 下载目录设置
      - DOWNLOAD_PATH=/volume1/视频   # 下载保存目录
      - DOWNLOAD_CATEGORY=false #下载二级分类开关
      - DOWNLOAD_MOVIE_PATH=/volume1/视频/电影
      - DOWNLOAD_TV_PATH=/volume1/视频/电视剧
      - DOWNLOAD_ANIME_PATH=/volume1/视频/日番
# 媒体库目录设置
      - LIBRARY_PATH=/volume1/视频/link #媒体库目录
      - LIBRARY_MOVIE_NAME=电影   #电影目录名
      - LIBRARY_TV_NAME=电视剧    #电视剧目录名
      - LIBRARY_ANIME_NAME=日番   # 动漫目录名
      - LIBRARY_CATEGORY=true    # 媒体库自动分类功能
# 媒体库功能设置     
      - DOWNLOAD_SUBTITLE=true  # 下载站点字幕
      - DOWNLOADER_MONITOR=true  # 下载器监控
      - TORRENT_TAG=MOVIEPILOT   #种子标签
      - SCRAP_METADATA=true   # 刮削入库的媒体文件
      - REFRESH_MEDIASERVER=true    # 入库刷新媒体库
      - TRANSFER_TYPE=link      #转移方式,支持link/copy/move/softlink  
# CookieCloud设置
      - COOKIECLOUD_HOST=http://xxx:8080   #CookieCloud服务器地址 必须添加
      - COOKIECLOUD_KEY=  #cc用户KEY
      - COOKIECLOUD_PASSWORD=  #cc端对端加密密码
      - COOKIECLOUD_INTERVAL=180  # CookieCloud同步间隔(分钟)
      - USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203    #CookieCloud对应的浏览器UA,可选,同步站点后可以在管理界面中修改
#  消息通知渠道
      - MESSAGER=slack  #消息通知渠道      
# slack通知
      - SLACK_OAUTH_TOKEN=xoxb-xxx #Slack Bot User OAuth Token
      - SLACK_APP_TOKEN=xapp-xxx #Slack App-Level Token
      - SLACK_CHANNEL=  #频道名称,默认全体
# 下载器设置
     ##qbittorrent设置项
      - QB_HOST=http://xxx:xxx # qbittorrent地址
      - QB_USER= #qbittorrent用户名
      - QB_PASSWORD= #qbittorrent密码
# 媒体服务器
      - MEDIASERVER=plex   
      - PLEX_HOST=http://xxx:32400 
      - PLEX_TOKEN=
      - MEDIASERVER_SYNC_INTERVAL:6   #媒体服务器同步间隔(小时)
# 用户认证
      - AUTH_SITE=audiences  #认证站点
      - AUDIENCES_UID= # 观众 ID 
      - AUDIENCES_PASSKEY= # 观众 passkey
# 其他设置
      - BIG_MEMORY_MODE=true  #大内存模式

下面我会挑一些可能会造成理解问题的参数做一些解释

下载目录

- DOWNLOAD_PATH=/volume1/视频
- DOWNLOAD_CATEGORY=false
- DOWNLOAD_MOVIE_PATH=/volume1/视频/电影
- DOWNLOAD_TV_PATH=/volume1/视频/电视剧
- DOWNLOAD_ANIME_PATH=/volume1/视频/日番

这段内容是指在 qbit 下载结束后,将文件移动到哪里,同时不开启二级分类,实际对应的目录如下

.
└──视频
   ├── 日番
   ├── 电影
   └── 电视剧

媒体库目录

- LIBRARY_PATH=/volume1/视频/link 
- LIBRARY_MOVIE_NAME=电影
- LIBRARY_TV_NAME=电视剧
- LIBRARY_ANIME_NAME=日番
- LIBRARY_CATEGORY=true

这段内容是指,在 MoviePilot 将 qbit 下载的文件,移动后,要把这个文件 硬链接 到哪里,也就是同步给 plex 的位置

最开始我被这里搞混了,上面是 路径,而到这里却变成了 文件夹名称,实际对应的目录如下

└── 视频
   ├── link
   │  ├── 日番
   │  ├── 电影
   │  └── 电视剧

其他配置

其他配置相对来说都比较好理解,比如你没有使用 plex,而使用的 emby,去 README 找到相关的 key 自行修改即可

运行 MoviePilot

在配置好 compose 文件后,我们将文件上传到这个目录

接着打开 7.2+ 版本的 docker 选择 项目->新增,最后选择上传好的 compose 文件,就可以运行了

第一次运行时,MoviePilot 会下载浏览器内核等信息,推荐在日志中查看进度

当你通过 web 进入后台看到登录界面,就说明搭建好了

配置不生效

偶尔我会发现停止运行,修改 compose 文件再运行,刚刚配置的新内容无法生效,此时你需要点击清除,然后再运行构建,这个问题解决了

插件配置

目前我添加了如下插件,其中 历史记录同步 这个插件我为了演示重新装时,导致我 MoviePilot 整个服务挂了,重启也依然有问题,猜测可能是 issue 中关于 db 死锁问题导致的,因此本篇对这个就不做详细介绍了

在 compose 文件路径映射中,有 nas-tools 相关的路径,就是为这个插件服务的

自动备份

这个插件非常重要,目前 MoviePilot 还不算太稳定,一定要做好备份,我这里的配置是最多保存 5 份,每天 12 点备份一次

备份会自动存放在这个目录下,如果你的服务不幸挂了,需要恢复,此时需要手动解压这个 zip 文件

zip 文件的内容就两个,看下图对照非常好理解,直接拖进去覆盖就完成了备份恢复

其他插件

其他插件都非常好理解,我这里就不做过多的介绍了,自己挨个看一遍,挑自己喜欢的用就行~

overseerr

在 MoviePilot README 中,我发现作者增加了 overseerr 的支持,出于好奇我自己也搭了一个服务,正好我手上还有一台 Mac Mini,我就直接把 overseerr 搭建在 Mac 上了

在 MoviePilot Compose 文件中 3001 端口的开放就是给 overseerr 准备的

这里同样使用 compose 创建,暴露在 5055 这个端口上

---
version: '3'

services:
  overseerr:
    image: sctx/overseerr:latest
    container_name: overseerr
    environment:
      - LOG_LEVEL=debug
      - TZ=Asia/ShangHai
      - PORT=5055 #optional
    ports:
      - 5055:5055
    volumes:
      - ./config:/app/config
    restart: unless-stopped

接着运行如下指令,在 Mac 上开启服务

docker compose up -d

第一次访问时,overseerr 会让你登录,你可以选择使用 plex 登录,接着来到后台,设定->服务器

这里的 应用程序秘钥 指的就是 MoviePilot compose 文件中的 API_TOKEN 即 moviepilot

最后

整体 MoviePilot 已经实现了 nas-tools 绝大多数的功能,新 UI 的审美也是在线的,唯一美中不足的是目前还没有那么稳定

所以在这个阶段使用,请一定一定做好备份