Introduction
Want full control over your home media experience? Jellyfin is a free and open-source media server that lets you stream movies, shows, and music across your network—without tracking, ads, or subscriptions. In this guide, we’ll walk you through setting up Jellyfin using Docker.
Who is this for?
- Media enthusiasts with local video libraries
- Users looking for a privacy-first Plex alternative
- Beginners comfortable with Docker basics
What you’ll get:
- A fully functional Jellyfin media server
- Accessible on your LAN (or remotely, if configured)
- A system you own, with no usage tracking
Why Choose Jellyfin?
Feature | Jellyfin |
---|---|
Price | Free and open-source |
Privacy | 100% local, no phone-home |
Clients | Web, iOS, Android, smart TVs |
Live TV/DVR Support | Yes |
Add-ons | Yes, via community plugins |
Jellyfin is built for users who value freedom, flexibility, and privacy. It’s perfect for self-hosters and cord-cutters alike.
Requirements
- A Linux server or Raspberry Pi (x86_64 or ARM)
- Docker and Docker Compose installed
- Media files stored locally or on accessible storage
- Basic knowledge of the command line
Step-by-Step Setup Using Docker
1. Create Project Directory
mkdir -p ~/jellyfin/config ~/jellyfin/cache ~/jellyfin/media
cd ~/jellyfin
Place your media in the media
folder (e.g., Movies, TV Shows).
2. Create docker-compose.yml
version: "3.7"
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
network_mode: "host"
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media:ro
restart: unless-stopped
environment:
- TZ=Europe/Amsterdam
Tip: Replace the timezone (
TZ
) with yours.
3. Start the Container
docker-compose up -d
After a few seconds, Jellyfin should be running on http://your-server-ip:8096
First-Time Configuration via Web UI
- Open
http://your-server-ip:8096
- Choose language, create admin user
- Point Jellyfin to
/media
for your content folders - Configure metadata sources and language
- Finish setup and let Jellyfin scan your media
Tip: The first scan may take several minutes depending on your library size.
Accessing Jellyfin Remotely (Optional)
- Use a reverse proxy (e.g., Nginx, Caddy) with HTTPS
- Open port 8096 (or reverse proxy port) on your firewall/router
- Consider using Tailscale or a VPN for secure access without exposing ports
Advanced Options (Optional)
Enable Hardware Transcoding
Install required drivers and add Docker flags (NVIDIA or Intel GPU)
devices:
- /dev/dri:/dev/dri
environment:
- JELLYFIN_PublishedServerUrl=http://your-server-ip:8096
Add Users for Family Members
- Go to Admin Dashboard → Users
- Create individual profiles with access controls
Customize UI and Add Plugins
- Admin Dashboard → Plugins → Catalog
- Install themes, intro skip, trakt sync, and more
FAQs
Q: Can I watch Jellyfin content outside my home?
A: Yes, with proper port forwarding, HTTPS proxy, or Tailscale.
Q: Can Jellyfin handle 4K content?
A: Yes, but transcoding requires a powerful CPU or GPU. Direct play is recommended.
Q: Is there a mobile app?
A: Yes, for iOS and Android. You can also use any browser.
Final Thoughts
Jellyfin gives you complete control over your home media without the strings of commercial services. With Docker, it’s quick to deploy and easy to manage.
Be your own Netflix—without the data mining.
Support SelfhostHero: If this guide helped you, consider linking to us or sharing the post. You can also use our affiliate links to support independent content. 🙌