从零开始玩转 MoviePilot :搭建

从零开始玩转 MoviePilot :搭建
Photo by Markus Spiske / Unsplash

最近开始从头搭建 MoviePilot,踩了很多的坑。本篇博客将分享我实现全自动化订阅,下载,整理,削刮的保姆级部署的方法。

部署前置条件

· 请勿将本教程在国内平台宣传。

· 我使用 Debian,如果你使用其他系统,需要对照修改。

· 我默认你已经会使用 Docker Compose 。我喜欢通过开源的自托管 PaaS 解决方案 Dokploy 来进行部署,所以本教程全部基于 Dokploy 页面来操作 Docker Compose。但不使用 Dokploy 也无伤大雅,感觉东西都大同小异。

· 你需要自己解决代理网络环境问题来快速访问 The Movie Database (TMDB)

· MoviePilot 需要你拥有任意一个在支持列表中的 PT 站点的账号来进行认证,不然你无法使用「站点」功能。

搭建 MoviePilot

创建文件夹

我们按照这样的文件结构来创建文件夹。

/opt/media-stack
├── downloads/                 # 下载器的实际下载目录
│   └── Movies/ 
│   └── TV/
│
├── qbittorrent/
│   └── config/                # qBittorrent 配置
│       └── qBittorrent/
│           └── BT_backup/     # 种子目录(MP 需要)
│
├── moviepilot/
│   └── config/                # MoviePilot 配置
│
├── postgres/
│   └── data/                  # PostgreSQL 数据
│
├── redis/
│   └── data/                  # Redis 数据
│
└── media/                      # 已整理的媒体库
    ├── Movies/
    ├── TV/
    ├── Anime/
    ...
sudo mkdir -p /opt/media-stack/{downloads,media,qbittorrent/config,moviepilot/config,postgres/data,redis/data}
sudo chown -R 1000:1000 /opt/media-stack

设置 Docker Compose

创建 Docker Compose 配置

填入以下配置,该配置包括 Redis, PostgreSQL, MoivePilot 并额外搭配了 FlareSolverr 来绕过某些 PT 站点的 Cloudflare 认证。

services:
  redis:
    image: redis
    container_name: redis
    command: redis-server --save 600 1 --requirepass ${REDIS_PASSWORD}
    volumes:
      - /opt/media-stack/redis/data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped
    networks:
      - dokploy-network

  postgresql:
    image: postgres:16
    container_name: postgresql
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - /opt/media-stack/postgres/data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped
    networks:
      - dokploy-network

  flaresolverr:
    image: flaresolverr/flaresolverr
    container_name: flaresolverr
    environment:
      - LOG_LEVEL=info
    expose:
      - "8191"
    restart: unless-stopped
    networks:
      - dokploy-network

  moviepilot:
    image: jxxghp/moviepilot-v2:latest
    container_name: moviepilot-v2
    hostname: moviepilot-v2
    stdin_open: true
    tty: true
    expose:
      - "3000"
      - "3001"
    environment:
      - NGINX_PORT=3000
      - PORT=3001
      - PUID=1000
      - PGID=1000
      - UMASK=002
      - TZ=${TZ}

      # 首次登录账号
      - SUPERUSER=${MP_SUPERUSER}
      - SUPERUSER_PASSWORD=${MP_SUPERUSER_PASSWORD}

      # 数据库:PostgreSQL
      - DB_TYPE=postgresql
      - DB_POSTGRESQL_HOST=postgresql
      - DB_POSTGRESQL_PORT=5432
      - DB_POSTGRESQL_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESQL_USERNAME=${POSTGRES_USER}
      - DB_POSTGRESQL_PASSWORD=${POSTGRES_PASSWORD}

      # 缓存:Redis
      - CACHE_BACKEND_TYPE=redis
      - CACHE_BACKEND_URL=redis://:${REDIS_PASSWORD}@redis:6379

    volumes:
      - /opt/media-stack/media:/media:rshared
      - /opt/media-stack/downloads:/downloads:rshared
      - /opt/media-stack/moviepilot/config:/config:rshared
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /opt/media-stack/qbittorrent/config/qBittorrent/BT_backup:/BT_backup

    depends_on:
      postgresql:
        condition: service_healthy
      redis:
        condition: service_healthy
    restart: unless-stopped
    networks:
      - dokploy-network

networks:
  dokploy-network:
    external: true

添加环境变量

你需要在环境变量中添加如下变量

# Redis
REDIS_PASSWORD=你想设置的 Redis 密码

# PostgreSQL
POSTGRES_DB=moviepilot
POSTGRES_USER=moviepilot
POSTGRES_PASSWORD=你想设置的 PostgreSQL 密码

# MoviePilot 首次登录超管
MP_SUPERUSER=你想设置的 Moviepilot 用户名
MP_SUPERUSER_PASSWORD=你想设置的 Moviepilot 密码

# 时区
TZ=Asia/Shanghai

配置域名

我们使用 Dokploy 统一反代,所以我们只需要把端口暴露给 Dokploy 即可。使用的端口需要和我们在 Docker Compose 配置里的暴露端口一致,如果按照我的文件来,那就是3000。

完成部署

点击 Deploy 即可部署,至此,MoviePilot Docker 基本配置就完成了,我们继续搭建下载器。

搭建 qBittorrent

下载器我选择使用 qBittorrent,依然使用 Docker Compose 部署。

设置 Docker Compose

创建 Docker Compose 配置

同理,我们将名字设置为 qBittorrent。

我随机选了个 49120 端口用于传入连接的端口,你也可以按需修改。

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - WEBUI_PORT=8080
      - TORRENTING_PORT=46120 
    volumes:
      - /opt/media-stack/qbittorrent/config:/config
      - /opt/media-stack/downloads:/downloads:rshared
    expose:
      - "8080"            # 给 Dokploy/Traefik 反代用
    ports:
      - "46120:46120"     # 做种/下载对外
      - "46120:46120/udp"
    restart: unless-stopped
    networks:
      - dokploy-network
      
networks:
  dokploy-network:
    external: true

配置域名

这里我们暴露给 Dokploy 的端口就是 8080 了,所以我们 Container Port需要修改为 8080。

完成部署

保存后同样的点击 Deploy,在日志中查找自动生成的账号密码。

总结

这系列教程的搭建部份就结束了,后面的教程我们将进行软件实际操作。

评论

Sign up for more like this.