Jellyfin

The Free Software Media System

Property Value
Category Apps
Status 3, Beta
Image jellyfin/jellyfin
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

To enable automated backups, add compose.backup.yml to your COMPOSE_FILE:

COMPOSE_FILE="compose.yml:compose.backup.yml"

Configure backup storage in your environment:

Variable Description Default
BACKUP_CRON Backup schedule (cron) 0 2 * * * (2 AM daily)
BACKUP_RETENTION_DAYS Days to keep backups 7
BACKUP_LOCAL_PATH Local backup directory /tmp/jellyfin-backups

S3-Compatible Storage

AWS_S3_BUCKET_NAME=your-bucket
AWS_ACCESS_KEY_ID=your-key-id
AWS_SECRET_ACCESS_KEY=your-secret
AWS_S3_PATH=jellyfin
AWS_ENDPOINT=https://s3.example.com  # For non-AWS S3

SSH/SFTP Storage

SSH_HOST_NAME=backup.example.com
SSH_USER=backup
SSH_REMOTE_PATH=/backups/jellyfin

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:

  1. Check logs: abra app logs <app-name>
  2. Verify the container is running: abra app ps <app-name>
  3. Ensure port 8096 isn't blocked internally

Permission Issues

If Jellyfin can't access media files:

  1. Check volume mount permissions
  2. Ensure the container user has read access to media directories
  3. Verify SELinux/AppArmor policies if applicable

License

Jellyfin is licensed under GPL-2.0.

Description
The Free Software Media System
Readme 83 KiB