Jellyfin on Raspberry Pi

Jellyfin is a free, open‑source media server that lets you collect, manage, and stream your personal movies, TV shows, music, and photos to any device, all under your control with no subscriptions or tracking.

🔍 Key Features

Plex vs Jellyfin

Plex is wonderful. You can have one media directory and dump all your content there (e.x. Movies, TV Shows) and Plex will scan that directory and sort out of it's a Movie or TV Show. Jellyfin, on the otherhand, requires that you have a seperate directory for movies and one for TV shows. Each TV show has to have subdirectories, one per season. It's not nearly as slick as Plex. Since I run Plex (for inside my network use) and Jellyfin (for remote use) and I use the same media directories for both, I had to redo my Plex config to use a Movies directory and a TV Shows directory. That setup is in this guide. Could I use Plex for local and remote viewing? Sure. I'm working on it. I've got tailscale setup on my mac, iPhone, and Pi. I can connect to Plex on my laptop using Tailscale and my iPhone as a hotspot and everything works great but when I try to use the Plex app in my iPhone (with WiFi off), I hit the paywall. I'm not sure why yet. Jellyfin has no paywall which is why I added Jellyfin to my enviroment.

🚀 Docker Installation Steps

  1. Update your system
    sudo apt update && sudo apt upgrade -y
  2. Install Docker
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh 
  3. Install Docker Compose
    sudo apt install docker-compose-plugin
  4. Add your user to the Docker group
    sudo usermod -aG docker $USER
  5. Enable Docker at boot
    sudo systemctl enable docker
  6. Reboot
    sudo reboot
  7. Test Docker
    docker run hello-world

📁 Setup Jellyfin

mkdir ~/docker
mkdir ~/docker/jellyfin 

🧾 Docker Compose File

In ~/docker/jellyfin create docker-compose.yml

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    network_mode: host
    environment:
      - TZ=America/New_York   # Eastern Time
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /mnt/Movies:/Movies      # This is where the media files for your Movies are stored
      - /mnt/TV Shows:/TV Shows  # This is where the media files for your TV Shows are stored
    restart: unless-stopped

NOTE: Follow this guide to setup your media folder: Jellyfin Media Structure

In a nutshell, if /mnt/Media is where you're storing everything, you should have something like /mnt/Media/Movies, /mnt/Media/TV_Shows, etc. Under each of those you'll have a directory for each movie, TV show, etc. For example: /mnt/Movies/John_Wick_(2014) and in there would be the movie file (.mkv, .avi, etc.). You shouldn't have any other junk in there or it could screw up Jellyfin.

▶️ Start Jellyfin

From within ~/docker/jellyfin run:

docker compose up -d

📜 View Logs

docker logs jellyfin

🌐 Access Web Interface

Open your browser and go to http://<your-pi>:8096

If you find my content useful, please consider supporting this page:

☕ Buy Me a Coffee