
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
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 jellyfinThe complete command set:
| Command | Description |
|---|---|
qb install jellyfin -u username | Install Jellyfin stable version |
qb install jellyfin -u username --beta | Install 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 username | Reinstall Jellyfin (preserves data directory) |
qb update jellyfin -u username | Update to latest stable version |
qb remove jellyfin -u username | Remove Jellyfin and clean up files |
qb help jellyfin | Display 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.
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.
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/jellyfinOr via direct port access:
http://your-server-ip:8096Jellyfin 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:
- Create your admin account (local only—no Jellyfin.org account required)
- Set up your media libraries (Movies, TV Shows, Music, Books)
- Configure metadata providers and language preferences
- (Optional) Enable remote access and HTTPS
Initial Configuration
1. Create Admin Account
On first access, create your local admin account:
- Enter username (no email required)
- Set password for admin account
- Click Next to continue setup
- Your account is stored locally—no cloud registration
2. Add Media Libraries
Set up libraries for your media:
- Click Add Media Library button
- Select library type:
- Movies - Feature films and home videos
- Shows - Television series and episodes
- Music - Audio files and albums
- Books - eBooks and audiobooks
- Add folder paths:
/home/username/media/movies/home/username/media/tv/home/username/media/music- Or custom paths you’ve configured
- Configure metadata providers:
- The Movie Database (TMDb) - Movies and TV shows
- The TVDB - Television series
- MusicBrainz - Music metadata
- Set language preferences for metadata
- Click OK to save library
3. Configure Playback Settings
Optimize transcoding and playback:
- Go to Dashboard → Playback
- 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)
- Set streaming quality preferences:
- Internet streaming: Quality for remote access
- Max streaming bitrate: Bandwidth limits
- 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-startTroubleshooting
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.
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:
- 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? Runqb update jellyfin -u username. - 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.
- 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.
- 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 to0), then save and restart. This tells the scanner to write more gently so fewer writes collide.
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 -fCheck data directory permissions:
ls -la /home/username/.config/Jellyfin
# Should be owned by username:username
sudo chown -R username:username /home/username/.config/JellyfinFFmpeg 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:8096Hardware 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/driLibrary 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@usernameBest 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
Related Applications
Monitoring & Statistics
Live TV & IPTV
Media Requests
Live TV, tuners, and HDHomeRun
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.
Live TV and tuner resources
Official Jellyfin docs on Live TV, tuners, and DVR setup
Community Q&A for tuner, EPG, and Live TV issues
Official SiliconDust support for HDHomeRun devices and discovery
M3U proxy that simulates a tuner for IPTV channels in Jellyfin
Additional Resources
Join the Community
Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.