Desert Forge IT — Arizona IT · Field-tested tools & guidesFree consult →

How to Self-Host Jellyfin Media Server

Beginner 25 min — Run your own media server with Jellyfin.

What is Jellyfin

Jellyfin is a free, open-source media server — think self-hosted Netflix. It organizes and streams your movies, TV shows, music, and photos. Unlike Plex, there's no premium tier and no account required. Your media, your server, your rules.

Install on Debian/Ubuntu

# Add Jellyfin repo
apt install -y curl gnupg
curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | bash

This installs Jellyfin and starts it automatically on port 8096.

First Run Setup

  • Open http://your-server:8096 in a browser
  • Create your admin account
  • Choose your preferred language
  • Add media libraries (next step)

Add Media Libraries

Organize your files first:

/media/movies/
  Movie Name (2024)/
    Movie Name (2024).mkv
/media/tv/
  Show Name/
    Season 01/
      Show Name - S01E01.mkv
/media/music/
  Artist/
    Album/
      01 - Track.flac

In Jellyfin Dashboard → Libraries → Add, point to these folders. Jellyfin auto-fetches metadata (posters, descriptions, ratings).

Hardware Transcoding

For smooth playback on all devices, enable hardware transcoding:

  • Intel QSV: Works on most Intel CPUs. Install intel-media-va-driver
  • Nvidia NVENC: Requires nvidia-docker or passing through the GPU
  • Enable in Dashboard → Playback → Transcoding
# For Intel QSV on Debian:
apt install -y intel-media-va-driver-non-free vainfo
# Verify: vainfo should show supported profiles

Remote Access

To access from outside your network:

  • Set up a reverse proxy (Caddy or Nginx) for HTTPS
  • Forward port 443 on your router
  • Use a domain name for clean URLs

See our Caddy reverse proxy guide for setup instructions.

Client Apps

  • Jellyfin Android/iOS apps (free)
  • Jellyfin Media Player (desktop)
  • Web browser at your server URL
  • Roku, Fire TV, Apple TV apps available
  • Chromecast supported

Troubleshooting

  • Buffering: Enable hardware transcoding, or ensure client supports direct play
  • Metadata wrong: Use the correct folder naming convention, or manually identify items
  • Can't connect remotely: Check reverse proxy config and port forwarding

← Back to Knowledge Base