Jellyfin Media Server
Free and open-source media server for streaming movies, TV shows, music, and photos with hardware transcoding support.
Overview
Jellyfin is a free and open-source media server that emerged from Emby's fork in 2018, designed to give users complete control over their media streaming without tracking, premium features, or vendor lock-in. Built by volunteers committed to privacy and freedom, Jellyfin serves as a comprehensive media solution that streams movies, TV shows, music, and photos to any device while supporting advanced features like hardware transcoding, live TV integration, and multi-user management.
This Jellyfin deployment creates a self-hosted streaming platform that rivals commercial services like Plex or Netflix, but with your own content library. The configuration includes hardware acceleration support through device mapping, efficient caching mechanisms, and network discovery protocols that enable automatic detection by DLNA-compatible devices throughout your home network.
This setup is ideal for privacy-conscious users, families wanting to share media collections, cord-cutters building home entertainment systems, and anyone seeking a Netflix-like experience without monthly fees or content restrictions. The combination of Jellyfin's robust transcoding capabilities with proper Docker isolation makes it perfect for both single-user deployments and multi-tenant family environments where different users need personalized libraries and parental controls.
Key Features
- Complete freedom from tracking, telemetry, and premium feature paywalls
- Hardware-accelerated transcoding support for Intel QuickSync, NVIDIA NVENC, and AMD VCE
- Live TV and DVR functionality with tuner integration for over-the-air broadcasts
- Multi-user profiles with individual libraries, watch history, and parental control settings
- DLNA server capabilities for automatic discovery by smart TVs and media players
- Extensive plugin ecosystem for metadata providers, notification services, and additional features
- Native mobile apps for iOS and Android plus TV apps for Roku, Android TV, and webOS
- Advanced subtitle support including automatic downloading and custom styling options
Common Use Cases
- 1Family media server replacing multiple streaming subscriptions with personal movie and TV collections
- 2Home theater enthusiasts creating a centralized hub for 4K movies with hardware transcoding
- 3Privacy-focused households avoiding commercial streaming services that track viewing habits
- 4Cord-cutting setups combining personal media libraries with live TV and DVR recording
- 5Remote access scenarios where users stream their home media collection while traveling
- 6Multi-generational families needing separate user profiles with age-appropriate content filtering
- 7Photographers and videographers sharing personal content libraries with clients or family members
Prerequisites
- Minimum 2GB RAM recommended for smooth operation, 4GB+ for 4K transcoding workloads
- GPU with hardware encoding support (Intel iGPU, NVIDIA GTX 1050+, or AMD RX 400+) for transcoding
- Properly organized media library with consistent file naming for automatic metadata detection
- Available ports 8096 (HTTP), 8920 (HTTPS), 7359 (auto-discovery), and 1900 (DLNA) on host system
- Understanding of media formats, codecs, and transcoding concepts for optimization
- Network storage or large local storage capacity for media files and transcoding cache
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 jellyfin: 3 image: jellyfin/jellyfin:latest4 container_name: jellyfin5 environment: 6 - JELLYFIN_PublishedServerUrl=${SERVER_URL}7 volumes: 8 - jellyfin-config:/config9 - jellyfin-cache:/cache10 - /path/to/media:/media:ro11 ports: 12 - "8096:8096"13 - "8920:8920"14 - "7359:7359/udp"15 - "1900:1900/udp"16 devices: 17 - /dev/dri:/dev/dri18 networks: 19 - jellyfin-network20 restart: unless-stopped2122volumes: 23 jellyfin-config: 24 jellyfin-cache: 2526networks: 27 jellyfin-network: 28 driver: bridge.env Template
.env
1# Jellyfin2SERVER_URL=http://localhost:809634# Change /path/to/media to your media directory5# Remove devices section if no hardware transcodingUsage Notes
- 1Web UI at http://localhost:8096
- 2Complete setup wizard
- 3Add media libraries
- 4Hardware transcoding with Intel/AMD/Nvidia
- 5Mobile and TV apps available
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 jellyfin:5 image: jellyfin/jellyfin:latest6 container_name: jellyfin7 environment:8 - JELLYFIN_PublishedServerUrl=${SERVER_URL}9 volumes:10 - jellyfin-config:/config11 - jellyfin-cache:/cache12 - /path/to/media:/media:ro13 ports:14 - "8096:8096"15 - "8920:8920"16 - "7359:7359/udp"17 - "1900:1900/udp"18 devices:19 - /dev/dri:/dev/dri20 networks:21 - jellyfin-network22 restart: unless-stopped2324volumes:25 jellyfin-config:26 jellyfin-cache:2728networks:29 jellyfin-network:30 driver: bridge31EOF3233# 2. Create the .env file34cat > .env << 'EOF'35# Jellyfin36SERVER_URL=http://localhost:80963738# Change /path/to/media to your media directory39# Remove devices section if no hardware transcoding40EOF4142# 3. Start the services43docker compose up -d4445# 4. View logs46docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/jellyfin-complete/run | bashTroubleshooting
- Hardware transcoding fails with 'No VA-API device found': Verify GPU drivers are installed and /dev/dri has proper permissions for the container user
- Media files show but won't play with 'This client isn't compatible with the media': Enable transcoding in Dashboard > Playback settings or install additional codecs
- Auto-discovery not working on network: Check that UDP ports 7359 and 1900 are open and not blocked by host firewall rules
- High CPU usage during playback: Configure hardware acceleration in Dashboard > Playback > Transcoding settings and verify GPU access
- Metadata and artwork missing for movies/shows: Install and configure metadata providers like The Movie DB plugin and trigger library refresh
- Remote access fails outside local network: Configure JELLYFIN_PublishedServerUrl environment variable with your external domain or IP address
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download