MoviePilot在docker境像中同时还内置了虚拟显示、浏览器仿真、内建重启、代理缓存等特性,推荐使用docker方式安装。
使用 docker run -itd 命令安装时,请去除其中的 # 开头的注释行,以防报错。
docker run -itd \
--name moviepilot-v2 \
--hostname moviepilot-v2 \
--network bridge \
-p 3000:3000 \
-p 3001:3001 \
-v /media:/media \
-v /moviepilot-v2/config:/config \
-v /moviepilot-v2/core:/moviepilot/.cache/ms-playwright \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e 'NGINX_PORT=3000' \
-e 'PORT=3001' \
-e 'PUID=0' \
-e 'PGID=0' \
-e 'UMASK=000' \
-e 'TZ=Asia/Shanghai' \
-e 'SUPERUSER=admin' \ #超级管理员用户名
-e 'SUPERUSER_PASSWORD=你的初始登录密码' \ #超级管理员初始密码
--restart always \
jxxghp/moviepilot-v2:latest
docker run -itd \
--name moviepilot \
--hostname moviepilot \
-p 3000:3000 \
-v /media:/media \
-v /moviepilot/config:/config \
-v /moviepilot/core:/moviepilot/.cache/ms-playwright \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e 'NGINX_PORT=3000' \
-e 'PORT=3001' \
-e 'PUID=0' \
-e 'PGID=0' \
-e 'UMASK=000' \
-e 'TZ=Asia/Shanghai' \
-e 'AUTH_SITE=iyuu' \
-e 'IYUU_SIGN=xxxx' \
-e 'SUPERUSER=admin' \
-e 'API_TOKEN=建议大于16位的复杂字符串' \
--restart always \
jxxghp/moviepilot:latest
services:
moviepilot:
stdin_open: true
tty: true
container_name: moviepilot-v2
hostname: moviepilot-v2
ports:
- '3000:3000'
- '3001:3001'
volumes:
- '/media:/media' #媒体
- '/moviepilot-v2/config:/config' #持久化配置
- '/moviepilot-v2/core:/moviepilot/.cache/ms-playwright' #内核浏览器
- '/var/run/docker.sock:/var/run/docker.sock:ro' #重启MP权限
- '/tr/config/torrents:/torrents' #TR种子位置
- '/qbittorrent/data/data/BT_backup:/BT_backup' #QB种子位置
environment:
- 'NGINX_PORT=3000'
- 'PORT=3001'
- 'PUID=0'
- 'PGID=0'
- 'UMASK=000'
- 'TZ=Asia/Shanghai'
- 'SUPERUSER=admin'
- 'SUPERUSER_PASSWORD=你的初始登录密码'
- 'DB_TYPE=postgresql'
- 'DB_POSTGRESQL_HOST=postgresql'
- 'DB_POSTGRESQL_PORT=5432'
- 'DB_POSTGRESQL_DATABASE=moviepilot'
- 'DB_POSTGRESQL_USERNAME=moviepilot'
- 'DB_POSTGRESQL_PASSWORD=pg_password'
- 'CACHE_BACKEND_TYPE=redis'
- 'CACHE_BACKEND_URL=redis://:redis_password@redis:6379'
restart: always
depends_on:
postgresql:
condition: service_healthy
redis:
condition: service_healthy
image: jxxghp/moviepilot-v2:latest
redis:
volumes:
- /volume1/docker/redis/data:/data
image: redis
command: redis-server --save 600 1 --requirepass redis_password
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 10s
timeout: 5s
retries: 5
postgresql:
image: postgres
restart: always
environment:
POSTGRES_DB: moviepilot
POSTGRES_USER: moviepilot
POSTGRES_PASSWORD: pg_password
volumes:
# 仅 postgresql 18.0+ 及以上版本可用,根据版本二选一即可
- /volume1/docker/postgresql:/var/lib/postgresql
# 仅 postgresql 17.6 及以下版本可用,根据版本二选一即可
#- /volume1/docker/postgresql/data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U moviepilot -d moviepilot"]
interval: 10s
timeout: 5s
retries: 5
# 最后这个迁移数据库的
pgloader:
image: dimitri/pgloader:latest
volumes:
- <MP配置文件路径>:/mp_config
command: >
pgloader
sqlite:///mp_config/user.db
postgresql://moviepilot:pg_password@postgresql:5432/moviepilot
depends_on:
postgresql:
condition: service_healthy
version: '3.3'
services:
moviepilot:
stdin_open: true
tty: true
container_name: moviepilot-v2
hostname: moviepilot-v2
network_mode: host
volumes:
- '/media:/media'
- '/moviepilot-v2/config:/config'
- '/moviepilot-v2/core:/moviepilot/.cache/ms-playwright'
- '/var/run/docker.sock:/var/run/docker.sock:ro'
environment:
- 'NGINX_PORT=3000'
- 'PORT=3001'
- 'PUID=0'
- 'PGID=0'
- 'UMASK=000'
- 'TZ=Asia/Shanghai'
- 'SUPERUSER=admin' #超级管理员用户名
- 'SUPERUSER_PASSWORD=你的初始登录密码' #超级管理员初始密码
restart: always
image: jxxghp/moviepilot-v2:latest
version: '3.3'
services:
moviepilot:
stdin_open: true #是否打开标准输入流(交互模式),为 true 时容器可以保持运行并与用户交互
tty: true #是否分配伪终端,使容器的终端行为更像一个真实的终端
container_name: moviepilot-v2 #容器的名称
hostname: moviepilot-v2 #容器主机名
# 网关设置
network_mode: host #内置的网关
# networks: #自定义网关
# - moviepilot
# 端口映射,当network_mode的值为 host 时,将失效
# ports:
# 前端 UI 显示
# - target: 3000 #容器内部端口设置为 3000
# published: 3000 #映射到宿主机的 3000 端口,允许外部访问
# protocol: tcp #TCP 协议,可选udp
# API 接口
# - target: 3001 #容器内部端口设置为 3001
# published: 3001 #映射到宿主机的 3001 端口,允许外部访问
# protocol: tcp #TCP 协议,可选udp
# 目录映射:宿主机目录:容器内目录
volumes:
- '/media:/media' #媒体库或下载库路径
- '/moviepilot-v2/config:/config' #moviepilot 的配置文件存放路径
- '/moviepilot-v2/core:/moviepilot/.cache/ms-playwright' #浏览器内核存放路径
- '/var/run/docker.sock:/var/run/docker.sock:ro' #用于获取宿主机的docker管理权,一般用于UI页面重启或自动更新
# 环境变量:- '变量名=值‘
environment:
- 'NGINX_PORT=3000' #UI页面的内部监听端口
- 'PORT=3001' #API接口的内部监听端口
- 'PUID=0' #设置应用运行时的用户 ID 为 0(root 用户)
- 'PGID=0' #设置应用运行时的组 ID 为 0(root 组)
- 'UMASK=000' #文件创建时的默认权限掩码,000 表示不限制权限
- 'TZ=Asia/Shanghai' #设置时区为上海(Asia/Shanghai)
- 'SUPERUSER=admin' #设置超级用户为 admin
- 'SUPERUSER_PASSWORD=你的初始登录密码' #超级管理员初始密码
- 'ADVANCED_MODE=false' #关闭高级模式,只显示简化设置项
# 重启模式:
restart: always #始终重启
image: jxxghp/moviepilot-v2:latest
# 当使用内置网关时,可不启用
# networks:
# moviepilot: #定义一个名为 moviepilot 的自定义网络
# name: moviepilot #网络的名称
version: '3.3'
services:
moviepilot:
stdin_open: true
tty: true
container_name: moviepilot
hostname: moviepilot
networks:
- moviepilot
ports:
- target: 3000
published: 3000
protocol: tcp
volumes:
- '/media:/media'
- '/moviepilot/config:/config'
- '/moviepilot/core:/moviepilot/.cache/ms-playwright'
- '/var/run/docker.sock:/var/run/docker.sock:ro'
environment:
- 'NGINX_PORT=3000'
- 'PORT=3001'
- 'PUID=0'
- 'PGID=0'
- 'UMASK=000'
- 'TZ=Asia/Shanghai'
- 'AUTH_SITE=iyuu'
- 'IYUU_SIGN=xxxx'
- 'SUPERUSER=admin'
- 'API_TOKEN=建议大于16位的复杂字符串'
restart: always
image: jxxghp/moviepilot:latest
networks:
moviepilot:
name: moviepilot
相关说明:
/media为媒体文件目录,根据实际情况调整,需要注意的是,如果你计划使用硬链接来整理文件,那么文件下载目录和整理后的媒体库目录只能映射一个根目录不能分开映射,否则将会导致跨盘无法硬链接。 这是由docker的目录映射机制决定的,下面这些情况都会导致跨盘无法硬链接:
/moviepilot/config为配置文件、数据库文件、日志文件、缓存文件使用的文件目录,该目录将会存储所有设置和数据,需根据实际情况调整。/moviepilot/core为浏览器内核下载保存目录(避免容器重置后重新下载浏览器内核),需根据实际情况调整。/var/run/docker.sock用于内建重启时使用,建议映射。3000为WEB服务端口,3001为Api服务端口,可根据实际情况调整。AUTH_SITE、SUPERUSER、API_TOKEN等其它变量请根据 配置参考 说明调整和补充,上述为最基础配置,实际可以根据需要补充其它变量。Windows环境下提供两种安装方式,推荐使用安装版本。
项目在编译时,将Python以及相关的代码打包到一个exe文件中使用,点击 此处 下载exe文件,双击运行后会自动生成config配置文件目录,以及nginx前端资源目录,正常运行后会操作系统任务栏会生成MoviePilot图标,输入localhost:3000可访问后端管理WEB。
Windows 系统属性 -> 高级设置 -> 环境变量中添加认证等环境变量。内建重启、除内置插件库外不支持安装其它第三方插件库插件等。由 Windows-MoviePilot 项目提供,参考项目说明使用。
V2版本:https://github.com/developer-wlj/Windows-MoviePilot/tree/v2
DSM7 添加套件源:https://spk7.imnks.com/ ,安装后通过MoviePilot配置入口,根据 配置参考 进行配置使用。
该套件由套件源作者维护,如有问题需要向套件源维护方寻求帮助。
MoviePilot V2 现已提供本地 CLI 安装模式,适合不使用 Docker、希望直接在本机管理前后端服务的场景。
一键安装命令:
curl -fsSL https://raw.githubusercontent.com/jxxghp/MoviePilot/v2/scripts/bootstrap-local.sh | bash
脚本会自动:
git、curl、Python 3.12+app/helperNode 运行时moviepilot 命令首次安装完成后,向导会继续引导完成初始化配置。当前初始化向导已覆盖:
API_TOKENOCR_HOSTPROXY_HOSTGITHUB_TOKENUID、Passkey、用户名等字段AI_AGENT_ENABLELLM_PROVIDERLLM_MODELLLM_API_KEYLLM_SUPPORT_IMAGE_INPUTAI_RECOMMEND_ENABLED安装向导默认使用 themoviedb 作为识别来源,不再在首次安装流程中暴露识别源选择,避免误导新用户。
安装完成后可直接使用:
moviepilot status
moviepilot logs --frontend
moviepilot logs --stdio
moviepilot config path
常用管理命令:
moviepilot start
moviepilot stop
moviepilot restart
moviepilot update all
moviepilot setup --wizard
moviepilot uninstall
moviepilot agent 帮我检查当前配置
本地 CLI 默认会将配置目录放在程序目录外:
~/Library/Application Support/MoviePilot${XDG_CONFIG_HOME:-~/.config}/moviepilot完整命令和说明参考:本地 CLI
如果你的目的是二次开发、插件开发或前端联调,请参考:
不再推荐手工复制前端、资源和依赖后再分别启动多个项目;普通本地运行场景请优先使用 moviepilot CLI。
如需开启域名访问MoviePilot,则需要搭建反向代理服务。以nginx为例,需要添加以下配置项,否则可能会导致部分功能无法访问(ip:port修改为实际值):
location / {
proxy_pass http://ip:port;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
反向代理使用SSL时,还需要开启http2,否则会导致日志加载时间过长或不可用:
server {
listen 443 ssl;
http2 on;
# ...
}
代理服务连接超时时间应尽量长⼀些,比如10分钟,避免代理服务器强制中断请求。