version: '3.8' # Jellyfin - Media Server with GPU Transcoding # Backlog: Application Deployment # Ports: 8096 (HTTP), 8920 (HTTPS), 7359 (Auto-discovery), 1900 (DLNA) # GPU: YES - Requires NVIDIA Container Toolkit # Storage: SSD (config/cache), HDD (media files) services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin user: 1000:1000 # Replace with your UID:GID (run: id) network_mode: host restart: unless-stopped volumes: # Config and cache on SSD (performance-critical) - /home/jpmschweitzer/docker-data/jellyfin/config:/config - /home/jpmschweitzer/docker-data/jellyfin/cache:/cache # Media files on HDD (read-only for safety) - /mnt/media/jellyfin/movies:/media/movies:ro - /mnt/media/jellyfin/series:/media/series:ro environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=all - TZ=Europe/Amsterdam deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu, video, compute, utility] # GPU Transcoding Setup: # 1. Deploy stack # 2. Verify GPU access: docker exec jellyfin nvidia-smi # 3. Access http://localhost:8096 # 4. Complete initial setup wizard # 5. Navigate to: Dashboard → Playback → Transcoding # 6. Configure hardware acceleration: # - Hardware acceleration: NVIDIA NVENC # - Enable hardware decoding: Check all applicable formats # - Enable hardware encoding: Enabled # - Encoding preset: Auto or High Quality # 7. Test with video playback # 8. Monitor GPU: watch -n 1 nvidia-smi # # Expected Results: # - Dashboard shows "(hw)" during transcoding # - nvidia-smi shows Video Engine usage # - CPU usage remains low during transcoding # - RTX 2080 Ti can handle multiple 4K transcodes simultaneously # # Media Organization: # /mnt/media/jellyfin/ # ├── movies/ # │ ├── Movie Title (Year)/ # │ │ └── Movie Title (Year).mkv # ├── tv/ # │ ├── TV Show Name/ # │ │ ├── Season 01/ # │ │ │ ├── S01E01.mkv # │ │ │ └── S01E02.mkv # └── music/ # ├── Artist/ # │ ├── Album/ # │ │ └── Track.mp3