# Jellyfin Docker Setup with Hardware Acceleration This repository contains Docker configurations for running Jellyfin with hardware-accelerated transcoding support for various GPU types. ## Features - Hardware-accelerated transcoding support for: - Intel ARC GPUs - Intel integrated graphics (iGPU) - NVIDIA GPUs - AMD GPUs - HDR to SDR tonemapping - Configurable environment variables - Optimized for performance ## Prerequisites - Docker and Docker Compose - One of the supported GPUs - Linux host system (recommended) - Proper GPU drivers installed ## Quick Start 1. Create a new directory and download the required files: ```bash # Create and enter directory mkdir jellyfin-docker && cd jellyfin-docker # Download base docker-compose.yml curl -O https://raw.githubusercontent.com/yourusername/jellyfin-docker/main/docker-compose.yml # Download sample.env curl -O https://raw.githubusercontent.com/yourusername/jellyfin-docker/main/sample.env # Download transcoding file for your GPU: # For Intel ARC: curl -O https://raw.githubusercontent.com/yourusername/jellyfin-docker/main/intel-arc.transcoding.yml # OR for Intel iGPU: curl -O https://raw.githubusercontent.com/yourusername/jellyfin-docker/main/intel-igpu.transcoding.yml ``` 2. Copy the sample environment file: ```bash cp sample.env .env ``` 3. Edit the `.env` file with your settings: ```bash nano .env ``` 4. Verify your GPU setup: ```bash # Check render group ID getent group render | cut -d: -f3 # Verify GPU devices ls -l /dev/dri ``` 5. Start Jellyfin with the appropriate configuration: ```bash # For Intel ARC docker compose -f docker-compose.yml -f intel-arc.transcoding.yml up -d # For Intel iGPU docker compose -f docker-compose.yml -f intel-igpu.transcoding.yml up -d ``` 6. Access Jellyfin at: - HTTP: http://localhost:8096 - HTTPS: https://localhost:8920 ## Quick Start ### Useful Commands List only named Docker volumes: ```bash docker volume ls | grep -v "^local.*[0-9a-f]\{64\}$" ``` This will show: ``` DRIVER VOLUME NAME local cifs-volume_downloads local cifs-volume_music local cifs-volume_videos local cifs_immich local portainer_data ``` ## Hardware Acceleration Setup ### Verify GPU Access ```bash # Check render group ID getent group render | cut -d: -f3 # Verify GPU devices ls -l /dev/dri ``` ### Check Driver Installation For Intel ```bash vainfo ``` For NVIDIA ```bash nvidia-smi ``` For AMD ```bash rocm-smi ``` ## Configuration Files - `docker-compose.yml`: Base configuration - `intel-arc.transcoding.yml`: Intel ARC specific settings - `intel-igpu.transcoding.yml`: Intel iGPU specific settings - `.env`: Environment variables (copy from sample.env) - `tonemapping.md`: Detailed explanation of HDR tonemapping options ### docker-compose.yml Base configuration file that includes: - Container name and image settings - Volume mappings for media, config, and cache - Network ports (HTTP/HTTPS) - Basic environment variables ### intel-arc.transcoding.yml Intel ARC GPU specific settings: - Hardware acceleration configuration - GPU device mappings - Optimized tonemapping settings - Intel ARC specific drivers and libraries ### intel-igpu.transcoding.yml Intel integrated GPU settings: - Hardware acceleration for QuickSync - iGPU device mappings - Compatible tonemapping settings - Required driver configurations ### .env Environment variables file containing: - Port configurations (8096 for HTTP, 8920 for HTTPS) - Domain settings for remote access - Timezone configuration - Render group ID for GPU access - Cache and config directory paths ### tonemapping.md Comprehensive guide covering: - What tonemapping is and why it's needed - Available algorithms and their use cases - Performance implications - Hardware-specific recommendations - Troubleshooting tips ## Environment Variables See `sample.env` for available options: - `JELLYFIN_PORT_HTTP`: HTTP port (default: 8096) - `JELLYFIN_PORT_HTTPS`: HTTPS port (default: 8920) - `DOMAIN`: Your domain name - `TZ`: Timezone - `RENDER_GID`: Render group ID (get with `getent group render`) ## Tonemapping For detailed information about HDR tonemapping options, see [tonemapping.md](Docs/tonemapping.md) ## Troubleshooting 1. **Hardware Acceleration Not Working** - Verify GPU devices are properly mapped - Check render group ID matches your system - Ensure proper drivers are installed 2. **Performance Issues** - Try different tonemapping algorithms - Check CPU/GPU usage - Limit concurrent transcoding sessions ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License This project is licensed under the MIT License - see the LICENSE file for details. ## Acknowledgments - [Jellyfin Project](https://jellyfin.org/) - [Docker](https://www.docker.com/) - Hardware acceleration guides from various sources ## Support If you encounter any issues, please open an issue on GitHub.