207 lines
No EOL
5 KiB
Markdown
207 lines
No EOL
5 KiB
Markdown
# 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. |