目录

「Movies」海报万张,与君同享

自托管影视服务的运维记录。

元数据刮削 / Metadata

tinyMediaManager

部署

docker compose 配置参考如下

services:
  tinymediamanager:
    image: tinymediamanager/tinymediamanager:latest
    container_name: tinymediamanager
    restart: unless-stopped
    environment:
      - USER_ID=1000
      - GROUP_ID=1000
      - ALLOW_DIRECT_VNC=true
      - LC_ALL=en_US.UTF-8
      - LANG=en_US.UTF-8
      - PASSWORD=${TMM_PASSWD}
    volumes:
      - /path/to/your/tmm/data:/data
      - /path/to/your/tmm/addons:/media/addons
      - /path/to/your/tmm/movies:/media/movies
      - /path/to/your/tmm/tvshows:/media/tv_shows
    ports:
      - 19087:5900 # VNC port
      - 19088:4000 # Web UI
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.tmm.rule=Host(`tmm.aio.yirami.xyz`)"
      - "traefik.http.routers.tmm.entrypoints=https"
      - "traefik.http.routers.tmm.tls=true"
      - "traefik.http.routers.tmm.tls.certresolver=le"
      - "traefik.http.services.tmm.loadbalancer.server.port=4000"    
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 1G
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost:4000"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60s

注意:刮削时需要注意容器指定的权限与主机文件目录的权限匹配,否则可能无法存入刮削信息!

MDC-N(ext)G(eneration)

主要用于刮削日本片

部署

docker compose 配置参考如下

services:
  mdc:
    image: mdcng/mdc:latest
    container_name: mdc
    restart: unless-stopped
    networks:
      - traefik_proxy
    environment:
      - TZ=Asia/Shanghai
      - PUID=1000
      - PGID=1000
      # - MDC_USERNAME=yirami
      # - MDC_PASSWORD=${MDC_PASSWD}
    volumes:
      - /path/to/your/mdc/config:/config
      - /path/to/your/mdc/media:/media
    # ports:
    #   - 9208:9208
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik_proxy"
      - "traefik.http.routers.mdc.rule=Host(`mdc.aio.yirami.xyz`)"
      - "traefik.http.routers.mdc.entrypoints=websecure"
      - "traefik.http.routers.mdc.tls=true"
      - "traefik.http.routers.mdc.tls.certresolver=le"
      - "traefik.http.routers.mdc.middlewares=authelia-auth"
      - "traefik.http.services.mdc.loadbalancer.server.port=9208"
    depends_on:
      flaresolverr:
        condition: service_healthy
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 512M
    healthcheck:
      test: ["CMD-SHELL", "wget --spider -q http://localhost:9208/ || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 30s

  flaresolverr:
    image: flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    restart: unless-stopped
    networks:
      - traefik_proxy
    environment:
      - LOG_LEVEL=info
      - TZ=Asia/Shanghai
      - PROXY_URL=http://aio.mihomo.yirami.xyz:10808
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8191/"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 15s

配置

禁用自动 Ping 所有数据源

v1.36.0 passed

docker compose stop mdc

docker cp mdc:/usr/local/bin/mdc_ng_app /tmp/mdc_ng_app

# 关闭每一小时自动 ping 所有数据源
printf '\xc3' | dd of=/tmp/mdc_ng_app bs=1 seek=$((0xe2cc10)) conv=notrunc
# 关闭了对 tt-013 的访问
printf '\xc3' | dd of=/tmp/mdc_ng_app bs=1 seek=$((0x1DF91D0)) conv=notrunc

docker cp /tmp/mdc_ng_app mdc:/usr/local/bin/mdc_ng_app
docker compose start mdc

Stash

主要用于刮削欧美片

部署

docker compose 配置参考如下

services:
  stash:
    image: stashapp/stash:v0.31.1
    container_name: stash
    restart: unless-stopped
    ports:
      - "9999:9999"
    ## If you intend to use stash's DLNA functionality uncomment the below network mode and comment out the above ports section
    # network_mode: host
    logging:
      driver: "json-file"
      options:
        max-file: "10"
        max-size: "2m"
    environment:
      - STASH_STASH=/data/
      - STASH_GENERATED=/generated/
      - STASH_METADATA=/metadata/
      - STASH_CACHE=/cache/
      - STASH_PORT=9999
#      - HTTP_PROXY=http://aio.mihomo.yirami.xyz:10808
#      - HTTPS_PROXY=http://aio.mihomo.yirami.xyz:10808
#      - NO_PROXY=10.0.0.0/24,localhost,127.0.0.1
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /path/to/your/stash/config:/root/.stash
      - /path/to/your/stash/metadata:/metadata
      - /path/to/your/stash/cache:/cache
      - /path/to/your/stash/blobs:/blobs
      - /path/to/your/stash/generated:/generated
      - /path/to/your/stash/media:/samba
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 3g

配置

自动重命名 Scene

使用 RenameFile 插件在刮削完保存时自动重命名

  1. 参考插件安装文档安装插件
导出 Jellyfin 兼容的刮削文件

使用 mcMetadata 插件导出 .nfo 和 *-poster.jpg 文件,再使用 media-process 仓库的 image.jellyfin_poster 模块从 *-poster.jpg 生成背景虚化的窄幅封面。

  1. 参考插件安装文档安装插件
    • 开启 Enable Scene Update Hook
    • 开启 Enable File Renamer (刮削完自动重命名并移动)
    • Renamer Base Path: /samba/to/
    • Renamer Path Template: $Studio{.$ReleaseDate}/$Studio.{$ReleaseDate.}$Performers.$Title
  2. 在 Stash 的 Web 页面正常刮削,保存后会在影片同目录生成 .nfo 和 *-poster.jpg 文件,并将影片和刮削文件整体移动到模板路径
  3. 使用命令生成窄幅封面
    uv run jellyfin-poster /path/to/movies/dir

推流 / Streaming

Jellyfin

部署及运维参考