Cirry's Blog

docker搭建moviepilot实现自动化家庭影音

2023-10-12
docker
最后更新:2024-03-26
16分钟
3189字

因为之前的nastool事件,作者不希望在国内平台推广moviepilot相关内容,请不要转载。

搭建此功能需要有一定基础,这里默认有公网ip,知道ddns,docker搭建,Transmission/qbitorrent/jellyfin/emby/plex的使用。

搭建环境

本文是在windows下使用docker来搭建的moviepilot。 使用jellyfin作为播放器,是下载的exe安装运行的。 使用docker版本的qbittorrent作为moviepilot的下载器。 还有moviepilot中的pt站点需要cookie同步,还使用到了docker版本的cookiecloud。 还有moviepilot的使用需要有pt站点来认证,所以你需要有对应的认证站点。 没有选择Transmission的原因是我本地下载的Transmission.exe文件作为下载器的话,无法正确的挂载到moviepilot中去。

另外这里的通知软件我选择了slack,个人感觉这个比较简单好用。

所以总结下来就是:

  • docker版moviepilot、qbittorrent、cookiecloud
  • exe应用jellyfin
  • 一个支持moviepilot认证的站点hdfans
  • 使用slack作为通知的key[自行获取]

如果你没有认证的站点的话可以留言附上ptpp图,我邀请你入站。

接下来我们就从最简单的开始来一步一步开始搭建吧。

安装jellyfin应用

jellyfin官网下载Server版本的Jellyfin,并启动后在任务栏中右键设置好开机自动启动(autostart)。

关于Jellyfin的具体配置,内容也挺多的,这里就不赘述了。

安装cookiecloud

cookiecloud github

您也可以直接使用我搭建好的cookiecloud,地址:http://cookiecloud.cirry.cn

1
version: '2'
2
services:
3
cookiecloud:
4
image: easychen/cookiecloud:latest
5
container_name: cookiecloud-app
6
restart: unless-stopped
7
volumes:
8
- ./data:/data/api/data
9
ports:
10
- 8088:8088

windows下在此文件的存放位置使用命令行运行docker compose up -d就可以了,后续就不在赘述此运行命令了。

运行完成后需要在浏览器中下载cookiecloud插件并进行配置。

工作模式记得要设置为上传到服务器,如果在其他的电脑浏览器中使用此功能记得选择覆盖到浏览器。建议只有一个主浏览器用来上传cookie。

你需要登录要同步的pt站点,然后把站点的域名添加到同步域名关键词中,一行一个网站。下面还有个Cookie保活选项,建议填写相同的内容。

安装qbitorrent

1
version: "2"
2
services:
3
qbittorrent:
4
image: linuxserver/qbittorrent
5
container_name: qbittorrent
6
environment:
7
- TZ=Asia/Shanghai # 你的时区
8
- UMASK_SET=022
9
- WEBUI_PORT=8080 # 将此处修改成你欲使用的 WEB 管理平台端口
10
volumes:
11
- E:\qbittorrent\config:/config # 绝对路径请修改为自己的config文件夹
12
- E:\qbittorrent\downloads:/downloads # 绝对路径请修改为自己的downloads文件夹
13
ports:
14
# 要使用的映射下载端口与内部下载端口,可保持默认,安装完成后在管理页面仍然可以改成其他端口。
15
- 6881:6881
4 collapsed lines
16
- 6881:6881/udp
17
# 此处WEB UI 目标端口与内部端口务必保证相同,见问题1
18
- 8080:8080
19
restart: unless-stopped

安装完成后,默认的登录密码是username: admin password: adminadmin,打开8080端口可以正常登录则搭建完成。 一定要挂载config目录,config/qBittorrent/BT_backup是下载的种子,建议备份好。 挂载的downloads目录就是视频下载到的地址,一定需要记住这个位置,在moviepilot中需要使用到。

安装moviepilot

1
version: "3"
2
services:
3
moviepilot:
4
image: jxxghp/moviepilot:1.4.4
5
ports:
6
- 3000:3000 # web 接口
7
- 3001:3001 # overseerr 接口
8
restart: unless-stopped
9
hostname: moviepilot
10
network_mode: bridge
11
volumes:
12
- E:\moviepilot\main:/moviepilot #程序主目录,必选 【自行修改】
13
- E:\moviepilot\config:/config #config 配置文件,必选 【自行修改】
14
- E:\qbittorrent\downloads:/downloads # 记得这个路径就是上面qb设置的downloads路径 【自行修改】
15
environment:
60 collapsed lines
16
# 基础设置
17
- NGINX_PORT=3000
18
- PUID=0
19
- PGID=0
20
- UMASK=000
21
- SUPERUSER=admin #登录账号 【自行修改】
22
- SUPERUSER_PASSWORD=123456 #登录密码 【自行修改】
23
- API_TOKEN=moviepilot
24
- MOVIEPILOT_AUTO_UPDATE=true #重启更新
25
- MOVIEPILOT_CN_UPDATE=true
26
- TMDB_API_DOMAIN=api.tmdb.org
27
# 下载目录设置
28
- DOWNLOAD_PATH=/downloads # 下载保存目录
29
- DOWNLOAD_CATEGORY=false #下载二级分类开关
30
- DOWNLOAD_MOVIE_PATH=/downloads/movies
31
- DOWNLOAD_TV_PATH=/downloads/series
32
- DOWNLOAD_ANIME_PATH=/downloads/anime
33
# 媒体库目录设置
34
# 记住一定要在downloads目录下提前新建link文件夹,比如我这里就是E:\qbittorrent\downloads下新建link文件夹,不然会整理视频失败
35
- LIBRARY_PATH=/downloads/link #媒体库目录
36
- LIBRARY_MOVIE_NAME=movies #电影目录名
37
- LIBRARY_TV_NAME=series #电视剧目录名
38
- LIBRARY_ANIME_NAME=anime # 动漫目录名
39
- LIBRARY_CATEGORY=true # 媒体库自动分类功能
40
# 媒体库功能设置
41
- DOWNLOAD_SUBTITLE=true # 下载站点字幕
42
- DOWNLOADER_MONITOR=true # 下载器监控
43
- TORRENT_TAG=MOVIEPILOT #种子标签
44
- SCRAP_METADATA=true # 刮削入库的媒体文件
45
- REFRESH_MEDIASERVER=true # 入库刷新媒体库
46
- TRANSFER_TYPE=link #转移方式,支持link/copy/move/softlink
47
# CookieCloud设置
48
- COOKIECLOUD_HOST=http://xxxxxxx.fun:30080 #CookieCloud服务器地址 必须添加 【自行修改】
49
- COOKIECLOUD_KEY=a4hFJxxxxxxxxxxxxxx #cc用户KEY 【自行修改】
50
- COOKIECLOUD_PASSWORD=xi7ebAMxxxxxxxxxxx #cc端对端加密密码 【自行修改】
51
- COOKIECLOUD_INTERVAL=180 # CookieCloud同步间隔(分钟)
52
- USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43 #CookieCloud对应的浏览器UA,可选,同步站点后可以在管理界面中修改
53
# 消息通知渠道
54
- MESSAGER=slack #消息通知渠道【自行修改】
55
# slack通知
56
- SLACK_OAUTH_TOKEN=xoxb-5961180479250-5954552xxxxxxxxxx #Slack Bot User OAuth Token 【自行修改】
57
- SLACK_APP_TOKEN=xapp-1-A05TUKDHP7H-5963726611284-3f9768e4256exxxxxxxxxxx #Slack App-Level Token 【自行修改】
58
- SLACK_CHANNEL=xxxxxxxx #频道名称,默认全体 【自行修改】
59
# 下载器设置
60
## qbittorrent设置项
61
- DOWNLOADER=qbittorrent
62
- QB_HOST=192.168.0.127:8080 # qbittorrent地址 【自行修改】
63
- QB_USER=admin #qbittorrent用户名 【自行修改】
64
- QB_PASSWORD=adminadmin #qbittorrent密码 【自行修改】
65
# 媒体服务器
66
- MEDIASERVER=jellyfin
67
- JELLYFIN_HOST=xxxxxxxxxx.fun:8096 #【自行修改】
68
- JELLYFIN_API_KEY=36d9bdc2488xxxxxxxx # 【自行修改】
69
- MEDIASERVER_SYNC_INTERVAL:6 #媒体服务器同步间隔(小时)
70
# 用户认证
71
- AUTH_SITE=hdfans #认证站点 【自行修改】
72
- HDFANS_UID=xxxxxx # 观众 ID 【自行修改】
73
- HDFANS_PASSKEY=146336df899e6427xxxxxxxxx # 观众 passkey【自行修改】
74
# 其他设置
75
- BIG_MEMORY_MODE=true #大内存模式

以上内容中,除了我特别标记出来的需要自行修改之外,其余的设置都可以使用跟我一样的配置。

这是我的qbittorrent目录的路径,如果你的moviepilot搭建失败了,大多是因为目录路径问题导致。

说明:这里使用到了硬链接,所以在/downloads/movies下的电影和/downloads/link/movies下的文件其实是一个文件,自行计算硬盘占用空间或者删除link里的视频文件就可以验证了。

至此我们的moviepilot就算搭建完成了。

[另一种安装方式]使用exe

这一种方式可以正常的使用exe方式安装的Transmission和jellyfin,完全摒弃docker,减少系统压力,但是也需要自己手动配置一些东西。

直接在这里下载MoviePilot_Win_vx.x.x.exe

下载 MoviePilot.exe,双击运行后自动生成配置文件目录,访问:http://localhost:3000。

生成的配置文件目录如下:

步骤一

在其中的D:\moviepilot\config目录下有一个app.env需要修改此配置文件,具体路径位置依个人情况而定。

修改内容如下:

Terminal window
1
#######################################################################
2
# 【*】为必配项,其余为选配项,选配项可以删除整项配置项或者保留配置默认值 #
3
#######################################################################
4
5
####################################
6
# 基础设置 #
7
####################################
8
# 【*】API监听地址
9
HOST=0.0.0.0
10
# 是否调试模式,打开后将输出更多日志
11
DEBUG=true
12
# 是否开发模式,打开后后台服务将不会启动
13
DEV=false
14
# 【*】超级管理员,设置后一但重启将固化到数据库中,修改将无效
15
SUPERUSER=admin
182 collapsed lines
16
# 【*】超级管理员初始密码,设置后一但重启将固化到数据库中,修改将无效
17
SUPERUSER_PASSWORD=123456
18
# 【*】API密钥,建议更换复杂字符串,有Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API中使用
19
API_TOKEN=moviepilot
20
# 登录页面电影海报,tmdb/bing,tmdb要求能正常连接api.themoviedb.org
21
WALLPAPER=tmdb
22
# TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com`
23
TMDB_IMAGE_DOMAIN=image.tmdb.org
24
# TMDB API地址,无需修改需保留默认值,也可配置为`api.tmdb.org`或其它中转代理服务地址,能连通即可
25
TMDB_API_DOMAIN=api.tmdb.org
26
# 媒体识别来源 themoviedb/douban,使用themoviedb时需要确保能正常连接api.themoviedb.org,使用douban时不支持二级分类
27
RECOGNIZE_SOURCE=themoviedb
28
# 大内存模式,开启后会增加缓存数量,但会占用更多内存
29
BIG_MEMORY_MODE=true
30
# 自动检查和更新站点资源包(索引、认证等)
31
AUTO_UPDATE_RESOURCE=true
32
33
####################################
34
# 媒体识别&刮削 #
35
####################################
36
# 刮削入库的媒体文件 true/false
37
SCRAP_METADATA=true
38
# 新增已入库媒体是否跟随TMDB信息变化,true/false,为false时即使TMDB信息变化时也会仍然按历史记录中已入库的信息进行刮削
39
SCRAP_FOLLOW_TMDB=true
40
# 刮削来源 themoviedb/douban,使用themoviedb时需要确保能正常连接api.themoviedb.org,使用douban时会缺失部分信息
41
SCRAP_SOURCE=themoviedb
42
43
####################################
44
# 媒体库 #
45
####################################
46
# 【*】转移方式 link/copy/move/softlink/rclone_copy/rclone_move
47
TRANSFER_TYPE=link
48
# 转移覆盖模式,`nerver`/`size`/`always`/`latest`,分别表示`不覆盖同名文件`/`同名文件根据文件大小覆盖(大覆盖小)`/`总是覆盖同名文件`/`仅保留最新版本,删除旧版本文件(包括非同名文件)`
49
OVERWRITE_MODE=size
50
# 【*】媒体库目录,多个目录使用,分隔
51
LIBRARY_PATH=E:\video\link
52
# 电影媒体库目录名,默认电影
53
LIBRARY_MOVIE_NAME=movies
54
# 电视剧媒体库目录名,默认电视剧
55
LIBRARY_TV_NAME=series
56
# 动漫媒体库目录名,默认电视剧/动漫
57
LIBRARY_ANIME_NAME=anime
58
# 二级分类,开启后会根据配置 [category.yaml](https://github.com/jxxghp/MoviePilot/raw/main/config/category.yaml) 自动在媒体库目录下建立二级目录分类
59
LIBRARY_CATEGORY=false
60
# 电影重命名格式,Jinja2语法,参考:https://jinja.palletsprojects.com/en/3.0.x/templates/
61
MOVIE_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}{{fileExt}}
62
# 电视剧重命名格式,Jinja2语法,参考:https://jinja.palletsprojects.com/en/3.0.x/templates/
63
TV_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/Season {{season}}/{{title}} - {{season_episode}}{% if part %}-{{part}}{% endif %}{% if episode %} - 第 {{episode}} 集{% endif %}{{fileExt}}
64
65
####################################
66
# 站点同步 #
67
####################################
68
# 【*】CookieCloud服务器地址,默认为公共服务器
69
COOKIECLOUD_HOST=http://cookiecloud.cirry.cn
70
# 【*】CookieCloud用户KEY
71
COOKIECLOUD_KEY=a4hFJyxxxxxxxxk8AUk
72
# 【*】CookieCloud端对端加密密码
73
COOKIECLOUD_PASSWORD=xi7ebxxxxxxxxxxxxxb
74
# 【*】CookieCloud同步间隔(分钟)
75
COOKIECLOUD_INTERVAL=180
76
# 【*】CookieCloud对应的浏览器UA
77
USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43
78
79
####################################
80
# 订阅 & 搜索 #
81
####################################
82
# 订阅模式 spider/rss,`rss`模式通过定时刷新RSS来匹配订阅(RSS地址会自动获取,也可手动维护),`spider`为爬虫模式,随机时间(间隔20-40分钟)爬取站点首页种子
83
SUBSCRIBE_MODE=spider
84
# RSS订阅模式刷新时间间隔(分钟)
85
SUBSCRIBE_RSS_INTERVAL=30
86
# 订阅搜索开关,开启后会每隔24小时对所有订阅进行全量搜索,以补齐缺失剧集
87
SUBSCRIBE_SEARCH=false
88
# 交互搜索自动下载用户ID(消息通知渠道的用户ID),使用,分割,未设置需要用户手动选择资源或者回复`0`
89
AUTO_DOWNLOAD_USER=
90
91
####################################
92
# 消息通知 #
93
####################################
94
# 【*】消息通知渠道 telegram/wechat/slack,多个通知渠道用,分隔
95
MESSAGER=slack
96
# WeChat企业ID
97
WECHAT_CORPID=
98
# WeChat应用Secret
99
WECHAT_APP_SECRET=
100
# WeChat应用ID
101
WECHAT_APP_ID=
102
# WeChat代理服务器,无需代理需保留默认值
103
WECHAT_PROXY=https://qyapi.weixin.qq.com
104
# WeChat Token
105
WECHAT_TOKEN=
106
# WeChat EncodingAESKey
107
WECHAT_ENCODING_AESKEY=
108
# WeChat 管理员
109
WECHAT_ADMINS=
110
# Telegram Bot Token
111
TELEGRAM_TOKEN=
112
# Telegram Chat ID
113
TELEGRAM_CHAT_ID=
114
# Telegram 用户ID,使用,分隔
115
TELEGRAM_USERS=
116
# Telegram 管理员ID,使用,分隔
117
TELEGRAM_ADMINS=
118
# Slack Bot User OAuth Token
119
SLACK_OAUTH_TOKEN=xoxb-5961180xxxxxxxxxxxxxxxxxxxxxxxxxxxxxd51jNPgf93Sq #自行修改
120
# Slack App-Level Token
121
SLACK_APP_TOKEN=xapp-1-A0xxxxxxxx7H-5963726xxxxxxxxxxxxxxxxxxxxxxxxxxxxx7580a01 #自行修改
122
# Slack 频道名称
123
SLACK_CHANNEL=mp #自行修改
124
# SynologyChat Webhook
125
SYNOLOGYCHAT_WEBHOOK=
126
# SynologyChat Token
127
SYNOLOGYCHAT_TOKEN=
128
129
####################################
130
# 下载 #
131
####################################
132
# 【*】下载器 qbittorrent/transmission,仅支持单个下载器,做为主下载器使用,非主下载器只要配置了参数仍可在插件等使用
133
DOWNLOADER=transmission
134
# 下载器监控开关
135
DOWNLOADER_MONITOR=true
136
# Qbittorrent地址,IP:PORT
137
QB_HOST=
138
# Qbittorrent用户名
139
QB_USER=
140
# Qbittorrent密码
141
QB_PASSWORD=
142
# Qbittorrent分类自动管理
143
QB_CATEGORY=false
144
# Qbittorrent按顺序下载
145
QB_SEQUENTIAL=true
146
# Qbittorrent忽略队列限制,强制继续
147
QB_FORCE_RESUME=false
148
# Transmission地址,IP:PORT
149
TR_HOST=localhost:9090 #自行修改
150
# Transmission用户名
151
TR_USER=admin #自行修改
152
# Transmission密码
153
TR_PASSWORD=123456 #自行修改
154
# 种子标签
155
TORRENT_TAG=MOVIEPILOT
156
# 【*】下载保存目录,容器内映射路径需要一致,支持不同类型设置不同的下载目录(跨盘)
157
DOWNLOAD_PATH=E:\video
158
# 电影下载保存目录(路径),容器内映射路径需要一致
159
DOWNLOAD_MOVIE_PATH=E:\video\movies
160
# 电视剧下载保存目录(路径),容器内映射路径需要一致
161
DOWNLOAD_TV_PATH=E:\video\series
162
# 动漫下载保存目录(路径),容器内映射路径需要一致
163
DOWNLOAD_ANIME_PATH=E:\video\anime
164
# 下载目录二级分类,开启后会根据配置 [category.yaml](https://github.com/jxxghp/MoviePilot/raw/main/config/category.yaml) 自动在下载目录下建立二级目录分类
165
DOWNLOAD_CATEGORY=false
166
# 下载站点字幕
167
DOWNLOAD_SUBTITLE=true
168
169
####################################
170
# 媒体服务器 #
171
####################################
172
# 【*】媒体服务器 emby/jellyfin/plex,多个媒体服务器,分割
173
MEDIASERVER=jellyfin
174
# 媒体服务器同步间隔(小时)
175
MEDIASERVER_SYNC_INTERVAL=6
176
# 媒体服务器同步黑名单,多个媒体库名称,分割
177
MEDIASERVER_SYNC_BLACKLIST=
178
# EMBY服务器地址,IP:PORT
179
EMBY_HOST=
180
# EMBY Api Key
181
EMBY_API_KEY=
182
# Jellyfin服务器地址,IP:PORT
183
JELLYFIN_HOST=localhost:8096
184
# Jellyfin Api Key
185
JELLYFIN_API_KEY=36d9xxxxxxxxxxxxxxxxxxxxxxxx96a3
186
# Plex服务器地址,IP:PORT
187
PLEX_HOST=
188
# Plex Token
189
PLEX_TOKEN=
190
191
####################################
192
# 第三方服务 #
193
####################################
194
# OCR服务器地址
195
OCR_HOST=https://movie-pilot.org
196
# 插件市场仓库地址,多个地址使用`,`分隔,保留最后的/
197
PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins/

步骤二

还需要在系统的环境变量中添加认证信息,如下图:

到这里就配置完成了,重启moviepilot应用就可以正常使用了。

本文标题:docker搭建moviepilot实现自动化家庭影音
文章作者:Cirry
发布时间:2023-10-12
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode