Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Metube docker-compose full

# File: docker-compose.yaml
# Project: metube
# Startdate: 2023-01-23
version: "3"
services:
  metube:
    image: alexta69/metube:latest
    container_name: metube
    restart: unless-stopped
    ports:
      - "8081:8081"
    volumes:
      - /mnt/public/Video/Downloads:/downloads
      - /home/metube/.cache:/.cache
    environment:
      # Most of this was suggested by readme. I added restrictfilenames to use only ascii and no spaces
      YTDL_OPTIONS: '{"writesubtitles": true, "subtitleslangs": ["en", "-live_chat"], "postprocessors": [{"key": "Exec", "exec_cmd": "chmod 0664", "when": "after_move"}, {"key": "FFmpegEmbedSubtitle", "already_have_subtitle": false}, {"key": "FFmpegMetadata", "add_chapters": true}], "restrictfilenames": true}'
      # personal preference; I like to include id, which also helps jellyfin
      OUTPUT_TEMPLATE: "%(title)s.%(id)s.%(ext)s"
      # prefix for reverse proxy in httpd metube.cnf
      URL_PREFIX: "/metube"
      # user and group public
      UID: 805300006
      GID: 805300006
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:latest
    restart: always
    ports:
      - 8082:8080
    command: --interval 86400 metube
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/timezone:/etc/timezone:ro
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_INCLUDE_RESTARTING=true

Of course, the ytdl_options are what I wanted. The .cache mount was to help with some problem with some ffmpeg transcoding operations. I set that /home/metube/.cache to mode 0777, like a noob.

Comments