Jellyfin: The Free Plex Alternative You've Been Looking For
If you're tired of Plex's subscription model, account requirements, and feature removals, Jellyfin might be your perfect media server. Here's why I made the switch and how you can too.
Why Jellyfin?
After years of Plex, several changes pushed me to explore alternatives:
- No account required - Works entirely locally
- Free hardware transcoding - No Plex Pass needed
- Truly open source - GPL licensed, community driven
- No phone-home - Your server, your rules
- Active development - Regular updates and improvements
Jellyfin vs Plex vs Emby
| Feature | Jellyfin | Plex | Emby |
|---|---|---|---|
| Price | Free | Freemium | Freemium |
| Account Required | No | Yes | Yes |
| Hardware Transcoding | Free | Plex Pass | Premiere |
| Local-only Option | Yes | Limited | Limited |
| Skip Intro | Plugin | Plex Pass | Premiere |
| Open Source | Yes | No | No |
| Mobile Apps | Free | Free/Paid | Free/Paid |
Docker Installation
Here's a production-ready compose file:
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- jellyfin_config:/config
- jellyfin_cache:/cache
- /path/to/media/movies:/data/movies:ro
- /path/to/media/tv:/data/tv:ro
- /path/to/media/music:/data/music:ro
ports:
- "8096:8096"
devices:
- /dev/dri:/dev/dri # For Intel QuickSync
volumes:
jellyfin_config:
jellyfin_cache:
Hardware Transcoding
For Intel QuickSync (most common):
- Ensure your user has access to render group:
sudo usermod -aG render $USER
-
The
/dev/dridevice mapping in compose handles the rest -
In Jellyfin Dashboard → Playback → Transcoding:
- Select "Intel QuickSync (QSV)"
- Enable hardware decoding for supported codecs
Folder Structure
Organize your media properly:
media/
TinyMediaManager Integration
For the best metadata management, use TinyMediaManager:
- Point TMM at your media folders
- Scrape metadata from TMDB/TVDB
- Download artwork and NFO files
- Then add to Jellyfin
The workflow is: TMM First, Then Jellyfin
This gives you:
- Better metadata accuracy
- More artwork options
- Bulk editing capabilities
- NFO files for backup/portability
Plugins Worth Installing
From the official repository:
- Intro Skipper - Auto-skip intros (like Plex Pass)
- Open Subtitles - Auto-download subtitles
- Playback Reporting - Track your watch history
- TMDb Box Sets - Better collection handling
- ConfusedPolarBear.Plugin.Intro - Chapter generation
Client Apps
Jellyfin has clients for everything:
- Web - Built-in, works great
- Android/iOS - Official apps
- Android TV - Native app
- Roku - Native app
- Kodi - Jellyfin for Kodi plugin
- Desktop - Jellyfin Media Player
Migration from Plex
If you're coming from Plex:
- Export your watch history (there are community scripts)
- Set up Jellyfin with the same library structure
- Import watch history to Jellyfin
- Update your DNS/reverse proxy
- Install clients on your devices
The hardest part is updating all your devices, but it's worth it.
My Setup
Currently running:
- Jellyfin in Docker behind Nginx reverse proxy
- NVIDIA NVENC for transcoding
- 100TB+ library with movies, TV, and music
- Arr stack for automated acquisition
- TinyMediaManager for metadata
Learn More
For complete setup guides:
Made the switch to Jellyfin? Share your experience on Discord!
