Emby 与 MetaTube 媒体 Stack Docker Compose 部署 SOP

本卡片记录包含 Emby Amilys 特制版、MetaTube 元数据刮削服务端、Postgres 数据库及 QMediaSync 文件的媒体栈 Docker Compose 配置规程。


一、 部署架构与端口设计

  • 网络隔离:全栈挂载至内部 media-stack-net 桥接网络。
  • 安全绑定:对外暴露端口严格绑定在 Tailscale 专属内网 IP(100.90.33.29),杜绝公网直接暴露。
  • 数据目录
    • Emby 配置与媒体流:/root/media-stack/config/emby, /root/media-stack/strm
    • Postgres 数据库:/root/media-stack/config/metatube-db
    • QMediaSync 配置:/root/media-stack/config/qmediasync

二、 docker-compose.yml 配置清单

volumes:
  metatube-run:
 
networks:
  media-stack-net:
    name: media-stack-net
    driver: bridge
 
services:
  # === 1. Emby Server (Amilys 特制 x86 版) ===
  emby:
    image: amilys/embyserver:latest
    container_name: emby
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - UID=0
      - GID=0
      - GIDLIST=0
    # 显卡硬件加速(选填)
    # devices:
    #   - /dev/dri:/dev/dri
    volumes:
      - /root/media-stack/config/emby:/config:rw
      - /root/media-stack/strm:/media:rw
    ports:
      - "100.90.33.29:8096:8096"
    networks:
      - media-stack-net
    healthcheck:
      test: ["CMD-SHELL", "nc -z localhost 8096 || exit 1"]
      interval: 30s
      start_period: 60s
 
  # === 2. MetaTube Server ===
  metatube:
    image: ghcr.io/metatube-community/metatube-server:latest
    container_name: metatube
    restart: unless-stopped
    depends_on:
      - postgres
    volumes:
      - metatube-run:/var/run
    command: -dsn "postgres://metatube:[REDACTED]@/metatube?host=/var/run/postgresql" -port 8080 -db-auto-migrate -db-prepared-stmt
    expose:
      - "8080"
    networks:
      - media-stack-net
 
  # === 3. Postgres 数据库 ===
  postgres:
    image: postgres:15-alpine
    container_name: metatube-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=metatube
      - POSTGRES_PASSWORD=[REDACTED]
      - POSTGRES_DB=metatube
    volumes:
      - /root/media-stack/config/metatube-db:/var/lib/postgresql/data
      - metatube-run:/var/run
    command: "-c TimeZone=Asia/Shanghai -c log_timezone=Asia/Shanghai -c listen_addresses='' -c unix_socket_permissions=0777"
    networks:
      - media-stack-net
 
  # === 4. QMediaSync ===
  qmediasync:
    image: qicfan/qmediasync:latest
    container_name: qmediasync
    restart: always
    depends_on:
      - emby
    ports:
      - "100.90.33.29:12333:12333"
      - "100.90.33.29:8095:8095"
    volumes:
      - /root/media-stack/config/qmediasync:/app/config:rw
      - /root/media-stack/strm:/media:rw
    networks:
      - media-stack-net

三、 运维与管控指令

# 启动媒体全栈
cd /root/media-stack && docker compose up -d
 
# 检查 Emby 及同步服务日志
docker logs -f emby
docker logs -f qmediasync

相关链接