# Docker Compose Examples for Media Preview Generator # # Copy this file to docker-compose.yml and modify as needed. # Choose ONE of the configurations below based on your setup. # # All settings (Plex, GPU, processing) are configured in the web UI at # http://YOUR_IP:8080. settings.json in /config is the source of truth. # # Full configuration reference: docs/reference.md # ============================================================================= # CONFIGURATION 1: GPU (Intel / AMD / NVIDIA) # ============================================================================= # Covers all three GPU vendors in one service. # Uncomment/modify the blocks for your hardware. # ============================================================================= services: plex-previews-gpu: image: stevezzau/media_preview_generator:latest container_name: media-preview-generator restart: unless-stopped ports: - "8080:8080" # --- Intel / AMD GPU (VAAPI) --- # Both use /dev/dri passthrough. Verify with: ls -la /dev/dri # GPU device groups (render/video) are auto-detected at startup. devices: - /dev/dri:/dev/dri # --- NVIDIA GPU --- # Comment out the 'devices' block above and uncomment the deploy block. # Requires NVIDIA Container Toolkit: # https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html # # deploy: # resources: # reservations: # devices: # - driver: nvidia # count: all # capabilities: [gpu] environment: # --- NVIDIA only (uncomment if using NVIDIA) --- # - NVIDIA_VISIBLE_DEVICES=all # Use 'all' (or at minimum 'compute,video,utility,graphics') so the # NVIDIA Vulkan driver is injected into the container. The 'graphics' # capability is required for Dolby Vision Profile 5 thumbnails (which # use libplacebo Vulkan tone-mapping) — without it, the NVIDIA Vulkan # ICD is not mounted and tone-mapping falls back to software rendering. # - NVIDIA_DRIVER_CAPABILITIES=all # User/group (match your host user; Unraid: 99/100) - PUID=1000 - PGID=1000 # Timezone — ensures log timestamps and scheduled jobs use your local time # - TZ=America/New_York # Disable built-in auth when behind a reverse proxy or VPN (Authelia, Tailscale, etc.) # Webhook auth (Radarr/Sonarr) is not affected. # - AUTH_METHOD=external volumes: # Your media files (read-only) - /path/to/your/media:/media:ro # Plex application data (read-write for saving BIF files) - /path/to/plex/config:/plex:rw # App settings, schedules, and job history - /path/to/app/config:/config:rw # Host timezone (works on all Linux variants) - /etc/localtime:/etc/localtime:ro # ============================================================================= # CONFIGURATION 2: CPU-Only # ============================================================================= # For systems without GPU or when GPU acceleration isn't needed. # ============================================================================= plex-previews-cpu: image: stevezzau/media_preview_generator:latest container_name: media-preview-generator restart: unless-stopped ports: - "8080:8080" environment: - PUID=1000 - PGID=1000 # Timezone — ensures log timestamps and scheduled jobs use your local time # - TZ=America/New_York volumes: - /path/to/your/media:/media:ro - /path/to/plex/config:/plex:rw - /path/to/app/config:/config:rw # Host timezone (works on all Linux variants) - /etc/localtime:/etc/localtime:ro # ============================================================================= # CONFIGURATION 3: Unraid # ============================================================================= # Intel iGPU by default. For NVIDIA, uncomment the runtime line and NVIDIA # env vars, and remove the devices block. # Uses Unraid PUID/PGID (nobody:users = 99/100). # ============================================================================= plex-previews-unraid: image: stevezzau/media_preview_generator:latest container_name: media-preview-generator restart: unless-stopped # For NVIDIA on Unraid, uncomment the next line and remove the devices block: # runtime: nvidia ports: - "8080:8080" labels: - net.unraid.docker.webui=http://[IP]:[PORT:8080]/ devices: # Intel iGPU — verify with: ls -la /dev/dri - /dev/dri:/dev/dri environment: # --- NVIDIA only (uncomment if using NVIDIA, remove devices block) --- # - NVIDIA_VISIBLE_DEVICES=all # Use 'all' (or at minimum 'compute,video,utility,graphics') so the # NVIDIA Vulkan driver is injected. The 'graphics' capability is # required for Dolby Vision Profile 5 thumbnails (libplacebo Vulkan # tone-mapping); without it the NVIDIA Vulkan ICD is not mounted. # - NVIDIA_DRIVER_CAPABILITIES=all # Unraid permissions (nobody:users) - PUID=99 - PGID=100 # Timezone — ensures log timestamps and scheduled jobs use your local time # - TZ=America/New_York volumes: # Media share (read-only) — use the same path as your Plex container - /mnt/user/data/plex:/data/plex:ro # Plex appdata (read-write for BIF files) - /mnt/user/appdata/plex/Library/Application Support/Plex Media Server:/plex:rw # App config storage - /mnt/user/appdata/media-preview-generator:/config:rw # Host timezone (works on all Linux variants) - /etc/localtime:/etc/localtime:ro