Jellyfin
Free software media system for streaming your library
Jellyfin is a free software media server that organizes and streams movies, TV, music, and photos to many devices. It is aimed at users who want a fully free, no-account media solution. It is typically deployed via Docker or native packages.
Jellyfin setup guides & articles
Hands-on coverage of Jellyfin from the blog.
Self-Hosting 101: Your First Server, Start to Finish
The complete beginner path — what hardware to buy, which OS to install, your first three apps in Docker, and the backup habit that saves you later.
Self-Hosting GuidesJellyfin: The Complete Setup Guide
Jellyfin setup from zero — Quick Sync transcoding hardware, library naming the scanner parses, clients that direct play, and safe remote access.
Homelab & InfrastructureThe State of Self-Hosting in 2026
Where self-hosting stands in 2026: growth numbers, category winners, licence drama as a genre, and predictions grounded in the visible trends.
Key features
- Completely free with no paywalled features
- Hardware-accelerated transcoding
- Apps for TVs, phones and consoles
- Live TV and DVR support
Quick deploy
A starting point for self-hosting Jellyfin - check the official docs for the full set of options.
- Image
jellyfin/jellyfin:latest - Web port
8096 - Persist
/config/cache/media
Docker Compose
services:
jellyfin:
image: jellyfin/jellyfin:latest
ports:
- "8096:8096"
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media
restart: unless-stoppeddocker run
docker run -d --name jellyfin \
-p 8096:8096 \
-v ./config:/config \
-v ./cache:/cache \
-v ./media:/media \
--restart unless-stopped \
jellyfin/jellyfin:latestWatch out for
- Pass /dev/dri through to the container to enable Intel Quick Sync hardware transcoding
- Mount your media read-only - Jellyfin only needs to write to /config and /cache
Reverse proxy: Enable websocket pass-through or the dashboard and Syncplay break.
Pros & cons
Strengths
- No subscription or account needed
- Active community development
- Wide client support
Trade-offs
- Apps less polished than Plex
- Remote access setup is manual
Jellyfin replaces
Last reviewed Aug 22, 2026 · 739 words
Jellyfin will stream your media to every TV, phone, and console you own, for zero dollars, forever — no account, no subscription, no feature paywall. The price you pay instead is about one evening of setup that Plex would have done for you, and 90% of that evening is two topics: hardware transcoding and remote access. Get those right and Jellyfin is boringly reliable.
Hardware transcoding is the whole ballgame
Direct play — where the client supports the file's codec natively — costs almost nothing; a Raspberry Pi can serve a dozen direct-play streams. The moment a client needs a different codec or a lower bitrate, the server transcodes, and software transcoding of a single 4K HEVC stream will flatten most CPUs. The fix is a GPU, and the cheap fix is Intel Quick Sync: any Intel CPU from roughly 8th generation onward transcodes multiple 4K streams at under 20 W. It is why a $150 used mini PC is the default Jellyfin box.
In Docker, that means passing the GPU through:
services:
jellyfin:
image: jellyfin/jellyfin:latest
ports:
- "8096:8096"
devices:
- /dev/dri:/dev/dri
volumes:
- ./config:/config
- ./cache:/cache
- /srv/media:/media:ro
restart: unless-stopped
Then enable QSV under Dashboard → Playback → Transcoding. The :ro on the media mount is deliberate: Jellyfin only ever needs to write to /config and /cache, and a read-only mount means no scanner bug or fat-fingered setting can touch your files.
Name your files like the scanner expects
Almost every "Jellyfin identified my library wrong" complaint traces to file naming. The scanner wants Movies/Film Name (2019)/Film Name (2019).mkv and Shows/Series Name/Season 01/Series Name S01E01.mkv. Adopt that layout once and metadata, artwork, and episode ordering all resolve themselves. If an *arr stack feeds your library, it already names things this way — see the arr stack explained for how those pieces fit together.
Remote access is manual, and that's a decision point
Plex relays remote streams through its own servers; Jellyfin gives you a port and wishes you luck. You have two sane options. A reverse proxy with TLS (Caddy makes this a five-line config) publishes Jellyfin at https://jf.yourdomain.com and works on any client, but puts a login page on the open internet — enforce strong passwords and consider fail2ban. A VPN like Tailscale keeps the server invisible and takes ten minutes, but every viewer must install the VPN app, which rules out your parents' smart TV. Households that share libraries beyond their own devices usually end up with the proxy; the full trade-off table is in remote access three ways.
One proxy footnote that costs people an hour: enable websocket pass-through, or the admin dashboard and Syncplay silently break while playback works fine.
The settings worth changing on day one
- Create a non-admin user per person. Watch history, continue-watching, and parental controls are per-user, and the admin account should not be your daily login.
- Set cache and transcode paths onto fast local storage, not a NAS mount. Transcode segments are latency-sensitive.
- Schedule library scans nightly instead of on a timer every 30 minutes; use "real-time monitoring" for the folders your downloader writes to.
- Skip chapter-image extraction on large libraries until you know you want it — it is the single biggest source of surprise disk-and-CPU churn.
Client quality varies — check your TV first
The server is excellent everywhere; the clients are where Jellyfin shows its volunteer roots. Android TV, iOS, and web are solid. Some smart-TV platforms (older Samsung Tizen, LG webOS) are rougher than their Plex equivalents. Before committing your household, install the client on your actual TV and play one 4K file. If the experience disappoints, a $30 Chromecast or Fire Stick running the Android TV client fixes it more reliably than any server-side tuning.
What I'd do
Used Intel mini PC (8th-gen or newer), media on a big disk mounted read-only, the compose file above, QSV enabled, arr-standard file naming from day one. Publish it through Caddy if other households will watch, Tailscale if not. Then leave it alone: my Jellyfin box's uptime is measured in months, and the complete setup walkthrough covers every step above in detail if you want the long version.
Compare Jellyfin
21 head-to-head comparisons.
- Jellyfin vs Navidrome
- Jellyfin vs Kodi
- Jellyfin vs Stremio Web
- Jellyfin vs Stash
- Jellyfin vs Streama
- Jellyfin vs Tautulli
- Jellyfin vs Emby
- Jellyfin vs Dim
- Jellyfin vs Ombi
- Jellyfin vs Plex
- Jellyfin vs Universal Media Server
- Jellyfin vs Fladder
- Jellyfin vs Gonic
- Jellyfin vs Kyoo
- Jellyfin vs Reiverr
- Jellyfin vs Gerbera
- Jellyfin vs Stremio Server
- Jellyfin vs Olaris
- Jellyfin vs MiniDLNA
- Jellyfin vs Rygel
- Jellyfin vs tinyMediaManager
Similar media servers apps
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify
Sonarr
Media ServersSeries collection manager for Usenet and BitTorrent users