Setting Up Jellyfin Media Server (Docker Tutorial)

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?

FeatureJellyfin
PriceFree and open-source
Privacy100% local, no phone-home
ClientsWeb, iOS, Android, smart TVs
Live TV/DVR SupportYes
Add-onsYes, 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

  1. Open http://your-server-ip:8096
  2. Choose language, create admin user
  3. Point Jellyfin to /media for your content folders
  4. Configure metadata sources and language
  5. 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. 🙌