Jellyfin

Free software media system for streaming your library

Media Servers ★ 57.4k stars Easy setup GPL-2.0

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.

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-stopped
docker run
docker run -d --name jellyfin \
  -p 8096:8096 \
  -v ./config:/config \
  -v ./cache:/cache \
  -v ./media:/media \
  --restart unless-stopped \
  jellyfin/jellyfin:latest

Watch 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.

Similar media servers apps