Reviewed-on: #5 Reviewed-by: ammaratef45 <ammaratef45@proton.me>
Jellyfin
The Free Software Media System
- Category: Apps
- Status: 3, Beta
- Image:
jellyfin/jellyfin, 4, upstream - Healthcheck: Yes
- Backups: Yes
Jellyfin is a free and open-source media server that lets you collect, manage, and stream your media. This recipe deploys Jellyfin with Traefik integration, health monitoring, and optional automated backups.
Quick Start
# Create a new Jellyfin instance
abra app new jellyfin --secrets
# Configure your instance
abra app config <app-name>
# Deploy
abra app deploy <app-name>
Configuration
Media Volumes
Configure media access by editing EXTRA_VOLUME in your app configuration:
# Single media folder
EXTRA_VOLUME=/mnt/media:/media
# Multiple folders (use docker-compose syntax)
EXTRA_VOLUME=/mnt/movies:/movies
During Jellyfin's initial setup wizard, add your mounted paths as media libraries.
Backup Configuration
This recipe supports automated backups using backup-bot-two or abra backup commands.
Enabling Backups
Backups are enabled by default. To disable them, set:
ENABLE_BACKUPS=false
What Gets Backed Up
- Config volume (
/config): Jellyfin configuration, databases, metadata, and plugins - Cache volume: Excluded (transcoding cache, not needed in backups)
What's Not Backed Up
Media files are not included in backups. Back up your media library separately or ensure you can re-download content if needed.
Integration with Media Stack
Jellyfin works well with the *arr stack for automated media management:
| Service | Purpose |
|---|---|
| qBittorrent | Torrent client for downloads |
| Prowlarr | Indexer manager for all *arr apps |
| Sonarr | TV show monitoring and download |
| Radarr | Movie monitoring and download |
| Jellyseerr | Request management and discovery UI |
Shared Media Volumes
When integrating with Sonarr/Radarr, use compose.media_volumes.yml to share their media volumes:
COMPOSE_FILE="compose.yml:compose.media_volumes.yml"
movies_volume=radarr_media
shows_volume=sonarr_media
This mounts Radarr's movies and Sonarr's shows directly into Jellyfin at /movies and /shows.
Hardware Transcoding
For hardware-accelerated transcoding, you may need to pass through GPU devices. Create a custom compose overlay:
# compose.gpu.yml
services:
app:
devices:
- /dev/dri:/dev/dri # Intel QSV / VAAPI
Then add it to your configuration:
COMPOSE_FILE="compose.yml:compose.gpu.yml"
Troubleshooting
Health Check Failures
The health check uses Jellyfin's /health endpoint. If it fails:
- Check logs:
abra app logs <app-name> - Verify the container is running:
abra app ps <app-name> - Ensure port 8096 isn't blocked internally
Permission Issues
If Jellyfin can't access media files:
- Check volume mount permissions
- Ensure the container user has read access to media directories
- Verify SELinux/AppArmor policies if applicable
License
Jellyfin is licensed under GPL-2.0.