如何给 emby 及 moviepilot 设置代理


前言

相比于公共 emby 服务器,自建 emby 虽然需要费时费力的去整理资源,但定性会更好,不会出现公共 emby 服务器一到高峰期就卡顿及加载慢的问题。但是,与之相对的,整理资源的确是一件费力的事情,特别是遇到一些命名不规范的资源的时候,经常无法识别,就很头疼。

当然这篇文章不是探讨如何提高识别率的,而是探讨如何在不启用透明代理的情况下更好的为每个应用设置代理(毕竟在一些安全性要求较高的情况下,为了网络安全及审计,我们需要为每个 app 都设置可以连接互联网的代理。),毕竟透明代理的话需要时不时地去更新 tracker list,防止被标记为盒子。

仅做学术探讨,请勿用于非法用途!

配置示范

emby设置

下面是我的 emby 设置,其实对于 emby 和 jellyfin 都是适用的,只要在环境变量中设置好对应的代理参数即可。

version: "3.3"
services:
  emby:
    image: amilys/embyserver
    container_name: emby-happy
    # network_mode: 'host'
    devices:
      - /dev/dri:/dev/dri  # 关键:挂载 GPU 设备
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
      - HTTP_PROXY=http://username:password@ip:port #更换为自己的http代理
      - HTTPS_PROXY=http://username:password@ip:port #更换为自己的http代理
      - ALL_PROXY=http://username:password@ip:port #更换为自己的http代理
      - NO_PROXY=172.17.0.1,127.0.0.1,localhost #保持默认
    volumes:
      - ./config:/config
      - /mnt/disk/media/emby/season:/data/season
      - /mnt/disk/media/emby/movie:/data/movie
      - /opt/vc/lib:/opt/vc/lib #optional
    ports:
      - 8096:8096
      # - 8920:8920 #optional
    devices:
      - /dev/dri:/dev/dri #optional
      # - /dev/vchiq:/dev/vchiq #optional
      # - /dev/video10:/dev/video10 #optional
      # - /dev/video11:/dev/video11 #optional
      # - /dev/video12:/dev/video12 #optional
    restart: unless-stopped
    extra_hosts:
      - 'host.docker.internal:host-gateway' # 必要设置,允许容器访问宿主网络。

最重要的配置就是

environment:
  - HTTP_PROXY=http://username:password@ip:port #更换为自己的http代理
  - HTTPS_PROXY=http://username:password@ip:port #更换为自己的http代理
  - ALL_PROXY=http://username:password@ip:port #更换为自己的http代理

moviepilot设置

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'  # 媒体库或下载库路径
      - './config:/config'  # moviepilot 的配置文件存放路径
      - './core:/moviepilot/.cache/ms-playwright'  # 浏览器内核存放路径
      - '/var/run/docker.sock:/var/run/docker.sock:ro'  # 用于获取宿主机的docker管理权,一般用于UI页面重启或自动更新

    # 环境变量:- '变量名=值‘
    environment:
      - 'PROXY_HOST=http://username:password@ip:port' #设置系统代理
      - '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)
      # - 'AUTH_SITE=iyuu'  # 设置认证站点,v2.0.7+版本以后可不设置,直接通过 UI 配置
      # - 'IYUU_SIGN=xxxx'  # 单个站点密钥,配合 AUTH_SITE 使用
      - 'SUPERUSER=admin'  # 设置超级用户为 admin
      # - 'API_TOKEN=无需手动配置,系统会自动生成。如果需要自定义配置,必须为16位以上的复杂字符串'

    # 重启模式:
    restart: always  # 始终重启
    image: jxxghp/moviepilot-v2:latest

# 当使用内置网关时,可不启用
# networks:
#   moviepilot:  # 定义一个名为 moviepilot 的自定义网络
#     name: moviepilot  # 网络的名称#  

其中,moviepilot 最重要的就是在环境变量中传入这个参数,并且相比于 emby 的直接启用,moivepilot 可以直接在 webui 中精确设置哪些链接启用代理,哪些链接不启用代理,请读者自行探索。

environment:
  - 'PROXY_HOST=http://username:password@ip:port' #设置代理

文章作者: 赵阳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 赵阳 !
  目录