Skip to Content
Jellyfin

Jellyfin

Free and open-source media server with complete privacy control

Jellyfin is a free software media system that puts you in complete control of managing and streaming your media. With no premium features, no account requirements, and no tracking, Jellyfin offers a truly private media server experience. QuickBox Pro installs Jellyfin from the latest stable releases with the optimized official jellyfin-ffmpeg package for transcoding, per-user systemd services, auto-incremented ports, and optional beta branch access for early adopters.

Completely Free

No premium tiers, subscriptions, or feature paywalls—100% free forever

Privacy-First

No tracking, no accounts, no cloud services—your data stays yours

Optimized FFmpeg

The official jellyfin-ffmpeg build for superior hardware transcoding

Cross-Platform Apps

Apps for Android, iOS, web browsers, smart TVs, and streaming devices

Rich Metadata

Automatic artwork and info from TMDb, TVDb, and other providers

Beta Releases

Optional beta branch access for early features and testing

No Premium Features

Jellyfin is 100% free and open source with no premium tiers. All features including hardware transcoding, live TV, and plugins are available to everyone without subscriptions or Plex Pass equivalents.


Installation

Install from the Dashboard

Open App Dashboard → Package Management (/dashboard?mode=packages), find Jellyfin in the catalog (browse Media Servers or search), and click Install. The dashboard streams the install log live and Jellyfin appears in your Application Control panel when it finishes. Reinstall, Update, and Remove are available from the same panel.

In the install dialog you can pick the release channel — Stable (default) or Beta for early features — and optionally set a custom domain with SSL. See Channels & Versions for how channels work.

What you see and can manage is gated by your account: admins manage any user’s apps; regular users manage their own. For the full package flow see App Management.

Install and manage from the CLI

The CLI runs the same install and is suited to automation and scripting. The --beta channel flag and -d domain map to the Dashboard choices above:

qb install jellyfin -u username qb install jellyfin -u username --beta qb install jellyfin -u username -d 'jellyfin.yourdomain.com' qb install jellyfin -u username --beta -d 'jellyfin.yourdomain.com' qb reinstall jellyfin -u username qb update jellyfin -u username qb remove jellyfin -u username qb help jellyfin

The complete command set:

CommandDescription
qb install jellyfin -u usernameInstall Jellyfin stable version
qb install jellyfin -u username --betaInstall Jellyfin beta/unstable version
qb install jellyfin -u username -d 'jellyfin.yourdomain.com'Install with a custom subdomain and automatic SSL
qb install jellyfin -u username --beta -d 'jellyfin.yourdomain.com'Install the beta build on a custom subdomain
qb reinstall jellyfin -u usernameReinstall Jellyfin (preserves data directory)
qb update jellyfin -u usernameUpdate to latest stable version
qb remove jellyfin -u usernameRemove Jellyfin and clean up files
qb help jellyfinDisplay comprehensive help information

Updates auto-detect the current channel from the install marker, so you only pass --beta to switch channels. Full flag reference: CLI Reference.

Automatic Port Assignment

QuickBox automatically assigns ports per user:

  • HTTP port: Starting at 8096 (auto-incremented per user)
  • HTTPS port: Starting at 8920 (auto-incremented per user)

Find your assigned ports in the QuickBox dashboard or in ~/.config/Jellyfin/network.xml.

Optimized FFmpeg Package

QuickBox installs the official prebuilt jellyfin-ffmpeg package for your server’s distribution codename, system-wide to /usr/lib/jellyfin-ffmpeg/. This gives you optimal transcoding with all codecs and hardware acceleration enabled, with no lengthy per-install compile.


Accessing Jellyfin

After installation, access Jellyfin at:

https://your-server-ip/username/jellyfin

Or via direct port access:

http://your-server-ip:8096
QuickBox Dashboard Integration

Jellyfin is automatically integrated into your QuickBox dashboard. Find it on the App Dashboard (the default control view), expand its row for port and status, and click Open to launch the web interface.

First-Time Setup:

  1. Create your admin account (local only—no Jellyfin.org account required)
  2. Set up your media libraries (Movies, TV Shows, Music, Books)
  3. Configure metadata providers and language preferences
  4. (Optional) Enable remote access and HTTPS

Initial Configuration

1. Create Admin Account

On first access, create your local admin account:

  1. Enter username (no email required)
  2. Set password for admin account
  3. Click Next to continue setup
  4. Your account is stored locally—no cloud registration

2. Add Media Libraries

Set up libraries for your media:

  1. Click Add Media Library button
  2. Select library type:
    • Movies - Feature films and home videos
    • Shows - Television series and episodes
    • Music - Audio files and albums
    • Books - eBooks and audiobooks
  3. Add folder paths:
    • /home/username/media/movies
    • /home/username/media/tv
    • /home/username/media/music
    • Or custom paths you’ve configured
  4. Configure metadata providers:
    • The Movie Database (TMDb) - Movies and TV shows
    • The TVDB - Television series
    • MusicBrainz - Music metadata
  5. Set language preferences for metadata
  6. Click OK to save library

3. Configure Playback Settings

Optimize transcoding and playback:

  1. Go to Dashboard → Playback
  2. Configure transcoding:
    • Hardware acceleration: Select your GPU (Intel QuickSync, NVIDIA NVENC, AMD AMF) if available
    • Transcoding thread count: Set to number of CPU cores
    • FFmpeg path: Should be /usr/lib/jellyfin-ffmpeg/ffmpeg (auto-configured)
  3. Set streaming quality preferences:
    • Internet streaming: Quality for remote access
    • Max streaming bitrate: Bandwidth limits
  4. Save settings

Service Management

Jellyfin runs as a per-user systemd service.

systemctl status jellyfin@username # Check status systemctl restart jellyfin@username # Restart service journalctl -u jellyfin@username -f # View live logs systemctl enable jellyfin@username # Start on boot (already enabled) systemctl disable jellyfin@username # Prevent auto-start

Troubleshooting

The Whole Server Becomes Unreachable While Jellyfin Scans

A common report: “my whole server crashes or goes unreachable whenever Jellyfin runs, and only a hard reboot brings it back.” This is not out of memory, and Jellyfin itself is not faulting. In almost every case the cause is a library scan overwhelming Jellyfin’s own database.

Here is what happens in plain terms. Jellyfin 10.10 and newer write one small database entry for every item they scan. Music and audiobook libraries are made of thousands of tiny files, so scanning one fires thousands of small writes at the same time. Those writes collide with each other and with anything else happening (like your browser session), and Jellyfin reports “database is locked.” The scan keeps retrying and piling on until Jellyfin — and the QuickBox dashboard sitting next to it — stop responding. That looks like the server crashing. Removing the Music or Books libraries makes it stop, which is why people do that. You do not have to.

You can keep your Music and Audiobook libraries

Removing the heavy libraries is a workaround, not a fix. The steps below let you keep them while stopping the lockups.

Work through these in order:

  1. Update Jellyfin. Newer 10.11.x point releases fixed several of these database-locking bugs. On the App Dashboard (the default control view at /dashboard), find your Jellyfin row and click the amber Update badge, then Update Now. Prefer the CLI? Run qb update jellyfin -u username.
  2. Re-add heavy libraries one at a time. Add a library, let its scan finish completely, then add the next. Never run Scan All Libraries while you or anyone else is streaming or browsing.
  3. Turn down per-library extras. Open each Music or Books library’s settings and switch off Enable real time monitoring and chapter image extraction. Both create extra writes you rarely need on large collections.
  4. Throttle the scan if it still happens. On the App Dashboard, expand the Jellyfin row and open Operations → Edit Config → System tab. Leave Create backup turned on, set LibraryScanFanoutConcurrency to 2 (it defaults to 0), then save and restart. This tells the scanner to write more gently so fewer writes collide.
How to tell this is the cause

In Jellyfin’s own log (journalctl -u jellyfin@username -f) you will see SQLite Error 5: 'database is locked' repeated during scanning. The crashed-boot kernel log shows no out-of-memory kill, and your dashboard shows plenty of free RAM — that rules memory exhaustion out.

Jellyfin Won’t Start

journalctl -u jellyfin@username -f

Check data directory permissions:

ls -la /home/username/.config/Jellyfin # Should be owned by username:username sudo chown -R username:username /home/username/.config/Jellyfin

FFmpeg Not Found or Transcoding Fails

Symptoms

  • Transcoding fails with 'ffmpeg not found' error
  • Playback issues with transcoding required
  • FFmpeg path shows incorrect location
  • Hardware acceleration not available

Resolution

  • Verify ffmpeg exists: ls -la /usr/lib/jellyfin-ffmpeg/ffmpeg
  • Check ffmpeg path in Dashboard → Playback → FFmpeg path
  • Reinstall if ffmpeg missing: qb reinstall jellyfin -u username
  • Check logs: journalctl -u jellyfin@username -f | grep ffmpeg
  • Verify hardware acceleration device exists: ls -la /dev/dri

Can’t Access Web Interface

# Check if service is running systemctl status jellyfin@username # Verify ports are assigned correctly grep -E "(PublicPort|InternalHttp)" ~/.config/Jellyfin/network.xml # Check nginx reverse proxy (if using custom domain) sudo nginx -t sudo systemctl reload nginx # Test direct port access curl http://localhost:8096

Hardware Transcoding Not Working

Hardware transcoding requires compatible GPU and correct drivers:

# Check GPU availability (Intel, NVIDIA, AMD) lspci | grep -i vga # Verify render group membership groups username # Should include: render video # Add to groups if missing sudo usermod -a -G render username sudo usermod -a -G video username sudo systemctl restart jellyfin@username # Check /dev/dri device access ls -la /dev/dri sudo chown -R root:render /dev/dri

Library Not Scanning

# Manual library scan via web interface # Dashboard → Libraries → Scan All Libraries # Check file permissions sudo chown -R username:username /home/username/media # Verify Jellyfin can access media directory ls -la /home/username/media # Check scanning logs journalctl -u jellyfin@username -f | grep -i "scan"

Configuration Reset

# Backup current configuration cp -r ~/.config/Jellyfin ~/.config/Jellyfin.backup # Stop service systemctl stop jellyfin@username # Reset configuration (keeps libraries and database) rm ~/.config/Jellyfin/network.xml rm ~/.config/Jellyfin/system.xml # Restart service (will regenerate config files) systemctl start jellyfin@username

Best Practices

Do

  • Organize media in separate folders (Movies, TV, Music) with proper naming
  • Use hardware transcoding if you have compatible GPU for better performance
  • Enable automatic library updates for new content detection
  • Configure proper metadata providers for your region and language
  • Set up multiple user accounts with different access levels
  • Regularly update Jellyfin via qb update jellyfin for fixes and features
  • Use beta branch if you want early features and can handle occasional bugs
  • Create backups of ~/.config/Jellyfin directory before major updates

Don't

  • Don't delete the ~/.config/Jellyfin directory—contains all metadata and settings
  • Don't manually edit XML config files while Jellyfin is running
  • Don't use special characters in filenames that confuse metadata scrapers
  • Don't share admin account credentials—create separate user accounts
  • Don't install multiple Jellyfin instances per user—use one with multiple libraries
  • Don't ignore library scan errors—check logs and fix file permissions
  • Don't mix stable and beta installations—choose one approach per server
  • Don't store media on the same partition as OS without sufficient space

Monitoring & Statistics

Media Management

Live TV & IPTV

Media Requests


Live TV, tuners, and HDHomeRun

Live TV setup is application-level, not a QuickBox issue

Tuner discovery, HDHomeRun device pairing, EPG configuration, and IPTV / M3U setup are all configured inside Jellyfin itself, not by QuickBox Pro. If a tuner does not appear, an EPG fails to populate, or an HDHomeRun device is unreachable, the issue is with Jellyfin’s Live TV configuration or your network — not the QuickBox install.

Use the resources below for tuner, EPG, and Live TV troubleshooting. The QuickBox team can help with installation, ports, SSL, and service management — but Live TV configuration is owned by the Jellyfin community.


Additional Resources


Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

Dedicated Support
Feature Previews
Community Configs
Active Discussions
Join Discord Server
Last updated on