Jellyfin¶
What it is¶
Jellyfin is a free and open-source media server software that allows you to organize, manage, and stream your digital media (movies, TV shows, music, and photos) to various devices. It is a volunteer-built project that originated as a fork of Emby.
What problem it solves¶
Commercial media services often come with subscription fees, tracking, and limited control over your own metadata. Jellyfin provides a completely free, private alternative that lets you host your own media collection on your own hardware, ensuring you have full ownership and control over how your media is consumed and shared.
Where it fits in the stack¶
Category: Service / Media Management. It sits in the media distribution and consumption layer, serving as the front-end interface for users to access large libraries of video and audio stored on local disks or NAS devices.
Typical use cases¶
- Personal Netflix: Hosting a private collection of movies and TV shows for streaming to smart TVs and mobile devices.
- Home Music Server: Streaming high-fidelity music collections (FLAC, MP3) throughout the home.
- Live TV & DVR: Integrating with tuners to watch and record live television.
- Photo Archival: Organizing and viewing family photo and video archives.
Strengths¶
- Truly Open Source: No "premium" features hidden behind a paywall (unlike Plex or Emby).
- Privacy Focused: No central tracking or phone-home requirements; all data stays on your server.
- Hardware Acceleration: Supports a wide range of hardware transcoding options (Intel QuickSync, NVENC, AMF).
- Customizable: Extensive support for themes, plugins, and custom CSS for the web interface.
- Modern Client Ecosystem: The Jellyfin Desktop app (rewritten in 2026) uses CEF and mpv for high-performance, native HDR playback across platforms.
Limitations¶
- Client App Availability: While improving, native apps for some older smart TV platforms may be less polished or unavailable compared to Plex.
- Setup Complexity: Requires more manual configuration for remote access (e.g., setting up a reverse proxy) compared to commercial alternatives.
- No Cloud-Link: Does not offer a simplified cloud-based relay for remote streaming without manual port forwarding or VPN.
When to use it¶
- When you want a completely open-source, self-hosted media server with no tracking or subscription fees.
- For users who value privacy and want full control over their media collection and metadata.
- To stream your own collection of movies, TV shows, and music to various devices.
When not to use it¶
- If you require out-of-the-box support for a very wide range of proprietary smart TV platforms (Plex often has better native app availability).
- If you prefer a managed, cloud-hosted solution with minimal server maintenance.
Getting started¶
Docker installation¶
The most common way to run Jellyfin is via Docker. Replace placeholders with your actual paths.
docker run -d \
--name jellyfin \
--user 1000:1000 \
--net=host \
--volume /path/to/config:/config \
--volume /path/to/cache:/cache \
--mount type=bind,source=/path/to/media,target=/media \
--restart=unless-stopped \
jellyfin/jellyfin
Jellyfin will be available at http://localhost:8096.
Hardware Acceleration (Transcoding)¶
To enable hardware acceleration, you must pass the host's GPU devices into the container and select the correct driver in the Jellyfin Dashboard (Playback > Transcoding).
NVIDIA (NVENC)¶
Requires the nvidia-container-toolkit on the host.
services:
jellyfin:
image: jellyfin/jellyfin
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
Intel QuickSync (QSV) / VA-API¶
Requires mounting the render group devices.
services:
jellyfin:
image: jellyfin/jellyfin
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
Hello World¶
- Start the Jellyfin container using the Docker command above.
- Open your web browser and navigate to
http://localhost:8096. - Follow the Setup Wizard to create your first user and set your preferred language.
- Add your first library by selecting the folder you mounted to
/media. - Your media will begin to appear in the dashboard!
Latest Project Status (May 2026)¶
- Versioning Change: The project is transitioning from the 10.x branch to v12.0, dropping the legacy "10" prefix to simplify the versioning scheme.
- Jellyfin Desktop Rewrite: The desktop client has been completely rewritten, moving from Qt to the Chromium Embedded Framework (CEF) and a modern mpv pipeline. This change enables native HDR playback on Windows, macOS, and Wayland, and significantly improves UI responsiveness.
- LLM/AI Policy: Jellyfin has implemented a formal policy for AI-assisted contributions (May 2026), requiring contributors to fully understand and explain any AI-generated code to maintain project quality and security.
CLI examples¶
While Jellyfin is primarily managed through its web interface, you can perform some administrative tasks via docker exec.
# Check the version of Jellyfin running in the container
docker exec -it jellyfin /jellyfin/jellyfin --version
# View the last 50 lines of the Jellyfin log
docker logs --tail 50 jellyfin
# Restart the Jellyfin container
docker restart jellyfin
API examples¶
Jellyfin provides a comprehensive REST API. You'll need an X-Emby-Token for most requests, which you can generate by authenticating.
# Get information about the server
curl -X GET "http://localhost:8096/System/Info/Public"
# List all users on the server (requires an admin token)
curl -H "X-Emby-Token: YOUR_ACCESS_TOKEN" \
-X GET "http://localhost:8096/Users"
# Get a user's library views (replace {userId} with the actual ID)
curl -H "X-Emby-Token: YOUR_ACCESS_TOKEN" \
-X GET "http://localhost:8096/Users/{userId}/Views"
Related tools / concepts¶
- Plex — Proprietary media server alternative.
- Navidrome — Lightweight music-focused streaming server.
- Audiobookshelf — Audiobook and podcast management.
- Tube Archivist — YouTube archival and serving.
- Tailscale — Secure remote access without port forwarding.
- Authentik — For centralized identity and access management.
- n8n — For advanced media automation workflows.
- Home Assistant — For integrating media playback into home automation.
Gelli (Android Music)¶
Gelli is a native Android music player for Jellyfin. It provides a more music-centric interface compared to the main Jellyfin app, supporting offline downloads and Android Auto.
- Install Gelli: Download the APK from the GitHub releases or F-Droid.
- Connect: Enter your Jellyfin server URL and login credentials.
- Usage: Browse your music library, create playlists, and download tracks for offline listening.
Sources / References¶
Backlog¶
- [x] Perform quarterly technical freshness audit (May 2026).
Contribution Metadata¶
- Last reviewed: 2026-05-26
- Confidence: high