Skip to main content
WebsiteGitHub last commitGitHub commit activityGitHub IssuesDocker PullsDiscordLocalized

Jellyfin: The Free Plex Alternative You've Been Looking For

· 4 min read
BankaiTech
Homelab Enthusiast & Self-Hosting Advocate

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

FeatureJellyfinPlexEmby
PriceFreeFreemiumFreemium
Account RequiredNoYesYes
Hardware TranscodingFreePlex PassPremiere
Local-only OptionYesLimitedLimited
Skip IntroPluginPlex PassPremiere
Open SourceYesNoNo
Mobile AppsFreeFree/PaidFree/Paid

Docker Installation

Here's a production-ready compose file:

docker-compose.yml
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):

  1. Ensure your user has access to render group:
sudo usermod -aG render $USER
  1. The /dev/dri device mapping in compose handles the rest

  2. In Jellyfin Dashboard → Playback → Transcoding:

    • Select "Intel QuickSync (QSV)"
    • Enable hardware decoding for supported codecs

Folder Structure

Organize your media properly:

media/

movies
Movie Name (2024)
Movie Name (2024).mkv
Movie Name (2024).srt
Another Movie (2023)
Another Movie (2023).mp4
tv
Show Name (2020)
Season 01
Show Name - S01E01 - Episode Title.mkv
Show Name - S01E02 - Episode Title.mkv
Season 02
Show Name - S02E01 - Episode Title.mkv
music
Artist
Album (Year)
01 - Track Name.flac
02 - Track Name.flac
cover.jpg

TinyMediaManager Integration

For the best metadata management, use TinyMediaManager:

  1. Point TMM at your media folders
  2. Scrape metadata from TMDB/TVDB
  3. Download artwork and NFO files
  4. 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:

  1. Export your watch history (there are community scripts)
  2. Set up Jellyfin with the same library structure
  3. Import watch history to Jellyfin
  4. Update your DNS/reverse proxy
  5. 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!