services: # --------------------------------------------------------------------------- # Dispatcharr — ingests the Xtream API (URL + user + pass) and re-serves it as # an HDHomeRun tuner + M3U + EPG for Jellyfin. NOT exposed publicly. # --------------------------------------------------------------------------- dispatcharr: image: ghcr.io/dispatcharr/dispatcharr:latest container_name: dispatcharr restart: unless-stopped volumes: - dispatcharr_data:/data environment: DISPATCHARR_ENV: aio REDIS_HOST: localhost CELERY_BROKER_URL: redis://localhost:6379/0 DISPATCHARR_LOG_LEVEL: info # No published ports. NPM (on the `proxy` network) reaches it by name for # both the admin UI and Jellyfin's tuner/EPG: http://dispatcharr:9191 # - Admin UI -> NPM host dispatcharr.altricade.com (add an Access List) # - Jellyfin -> internal http://dispatcharr:9191 (no exposure) networks: - proxy # --------------------------------------------------------------------------- # Jellyfin — the app you and others actually watch in. This is the ONLY # public-facing service: expose it via Nginx Proxy Manager (see notes below). # In NPM: forward hostname = jellyfin , port = 8096 , scheme http , WS on. # --------------------------------------------------------------------------- jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin restart: unless-stopped volumes: - jellyfin_config:/config - jellyfin_cache:/cache # Optional media library (VOD / DVR recordings). Point at a real path: # - /srv/media:/media environment: # Helps clients build correct absolute URLs behind the HTTPS proxy. JELLYFIN_PublishedServerUrl: https://jellyfin.altricade.com networks: - proxy # Optional Intel/AMD hardware transcoding (uncomment if your VPS has a GPU): # devices: # - /dev/dri:/dev/dri volumes: dispatcharr_data: jellyfin_config: jellyfin_cache: networks: proxy: external: true