Paste
Of Code


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
services:
  ganymede:
    image: ghcr.io/zibbp/ganymede:latest
    container_name: ganymede
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy          # wartet bis Postgres "healthy" ist
    ports:
      - "4000:4000"        # Web-UI & API → http://<NAS-IP>:4000
    environment:
      # Basis
      TZ: Europe/Berlin
      # Rootless (siehe README: PUID/PGID; Ganymede chown’t config/temp/logs beim Start)
      PUID: "1026"         # Synology-User-ID (bei dir meist 1026)
      PGID: "100"          # Synology-Gruppe "users"
      # DB (muss zu 'db' unten passen)
      DB_HOST: db
      DB_PORT: "5432"
      DB_USER: ganymede
      DB_PASS: supersecret_db_password
      DB_NAME: ganymede_prd
      DB_SSL: disable
      # Twitch App (in dev.twitch.tv anlegen; später in der UI Kanäle hinzufügen)
      TWITCH_CLIENT_ID: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      TWITCH_CLIENT_SECRET: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      # (Optional) Frontend/SSO/Locale – bei Bedarf in der UI unter Admin > Settings konfigurierbar
      REQUIRE_LOGIN: "true"
      DEFAULT_LOCALE: "de"
      SHOW_LOCALE_BUTTON: "true"
      # Speicherdirekte (kannst du so lassen; die Mounts unten müssen dazu passen)
      VIDEOS_DIR: /data/videos
      TEMP_DIR: /data/temp
      LOGS_DIR: /data/logs
      CONFIG_DIR: /data/config
      # explizit setzen – viele Images benutzen XDG_CACHE_HOME -> /data/.cache
      XDG_CACHE_HOME: /data/.cache
      
      # VErsuch die Leistung zu reduzieren
      # geht aber nicht. hab es wieder rausg genommen.
      #MAX_VIDEO_DOWNLOAD_EXECUTIONS: "1"
      #MAX_VIDEO_CONVERT_EXECUTIONS: "1"
      #MAX_CHAT_DOWNLOAD_EXECUTIONS: "1"
      #MAX_CHAT_RENDER_EXECUTIONS: "1"

    volumes:
      # Passen die Pfade an deine NAS-Struktur an (Ordner vorher anlegen!)
      - /volume2/docker/ganymede/temp:/data/temp
      - /volume2/docker/ganymede/logs:/data/logs
      - /volume2/docker/ganymede/config:/data/config
      - /volume1/920main/twitch/ganymede/:/data/videos
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4000/api/v1/health"]  # einfacher Healthcheck
      interval: 30s
      timeout: 5s
      retries: 5
    logging:
      driver: json-file
      options:
        max-size: "1m"
        max-file: "1"
        
  db:
    image: postgres:16-alpine
    container_name: ganymede-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: ganymede
      POSTGRES_PASSWORD: supersecret_db_password
      POSTGRES_DB: ganymede_prd
      TZ: Europe/Berlin
      POSTGRES_HOST_AUTH_METHOD: scram-sha-256
      POSTGRES_INITDB_ARGS: "--auth-host=scram-sha-256 --auth-local=scram-sha-256"
    volumes:
      - /volume2/docker/ganymede/postgres:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ganymede -d ganymede_prd"]
      interval: 10s
      timeout: 5s
      retries: 5
    logging:
      driver: json-file
      options:
        max-size: "1m"
        max-file: "1"

Toggle: theme, font