Skip to main content
  1. Building Your Own Server/

Jellyfin

·831 words·4 mins

Jellyfin is a volunteer-built media open source solution that puts you in control of your media. Stream to any device from your own server, with no strings attached. You and your family can access your personal media collection, from movies and TV shows to music and photos on any device, all while keeping your data local and private

Jellyfin

Why Jellyfin:

  • Add Free Your media, your rules: No ads or commercials.
  • Media Ownership: If you have the DVD and the digital copy on your server, they can’t remove it from your library. You own it.
  • Privacy Focused: Jellyfin has no tracking, phone-home, or central servers collecting your data.

Note: Jellyfin is server software and does not come with any media. You will have to get the media yourself.


Resources
#

Installation Prep
#

Before installing Jellyfin, ensure you have the following ready:

Time to Complete
#

  • Total Time: ~45 minutes
    • 5 min: File system prep
    • 15 min: Docker setup
    • 5 min: Download Jellyfin image
    • 20 min: Initial setup and configuration
  • Difficulty: Intermediate.

Installation
#

Here is the guide to install the Jellyfin docker image. Once complete you will be able to access Jellyfin and all your media from any device on your network.

Step 1: File System Prep
#

We need to create the directories to keep the docker-compose file and your media.

Create the Jellyfin directory

mkdir -p ~/docker/jellyfin/

Create the folders where your data will live. You can create them in the /home/USER/docker/jellyfin directory, or point the docker-compose file to a NAS shared directory where your media lives. For this guide, we will make new directories.

mkdir -p ~/docker/jellyfin/{config,media/{movies,shows,music,photos}}

This creates the following directories. Once Jellyfin is installed, we will map these directories to libraries inside the program. That way, Jellyfin knows what media to put where.

home/USER/docker/jellyfin/config
home/USER/docker/jellyfin/media
home/USER/docker/jellyfin/media/movies
home/USER/docker/jellyfin/media/shows
home/USER/docker/jellyfin/media/music
home/USER/docker/jellyfin/media/photos

You can make your own library categories as well. For example:

home/USER/docker/jellyfin/media/kidshows
home/USER/docker/jellyfin/media/anime

Step 2: Docker Setup
#

Make sure you are in your Jellyfin directory. Replace USER with your user name.

cd /home/USER/docker/jellyfin

To double check you are in the right place, you can type pwd to see your current directory

Create the docker-compose.yaml file.

sudo touch docker-compose.yaml

Use the nano program to edit the file.

sudo nano docker-compose.yaml

Step 3: docker-compose file
#

Copy the following text into the docker-compose file. Make sure to update the volume maps to match your folder structure.

services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Edmonton # your timezone
    volumes:
      - /home/USER/docker/jellyfin/config:/config
      - /home/USER/docker/jellyfin/media/movies:/media/movies
      - /home/USER/docker/jellyfin/media/shows:/media/shows
      - /home/USER/docker/jellyfin/media/music:/media/music
    ports:
      - "8096:8096"
    devices:
      - /dev/dri:/dev/dri # For hardware acceleration
    restart: unless-stopped
    networks:
      - media-net
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8096"]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  media-net:
    driver: bridge

Save and exit the file by pressing control-x and saying Y to save.

Now you can download the docker image to your system. Tell the docker program to read the docker-compose file in the jellyfin directory and pull the image to your machine and start the container

sudo docker-compose pull
sudo docker-compose up -d

Once the pull is complete, you can verify that the container is there and running my typing

docker ps

That’s it! Jellyfin is now on your computer and it’s time to set it up!

Initial setup and configuration
#

Once the container is running, open your browser and type in:

http://192.168.99.1:8096

This is the IP address of your server where Jellyfin is installed.

  1. Create Admin Account
    • Set a strong username and password for your admin account.
    • Click Next to proceed.
  2. Add Media Libraries
    • Click Add Library and select the type (e.g., Movies, TV Shows, Music).
    • Point the library to your media folders inside the container (e.g., /media/movies).
    • Choose the appropriate metadata provider (e.g., TheMovieDB for movies, TVmaze for TV shows).
    • Click OK to save.
  3. Configure Metadata Providers
    • Go to Dashboard > Metadata > Metadata Downloaders.
    • Enable and configure providers like TheMovieDB, TVmaze, or Fanart.tv for high-quality metadata and artwork.
    • Save your settings.
  4. Enable Hardware Acceleration (If Available)
    • Go to Dashboard > Playback.
    • Under Hardware Acceleration, select your GPU (e.g., Intel Quick Sync, NVIDIA NVENC, or AMD AMF).
    • Save the settings.
  5. Adjust Playback Settings
    • Go to Dashboard > Playback.
    • Set your preferred quality and transcoding options.
    • Enable Hardware Acceleration for smoother streaming.
  6. Set Up User Profiles (Optional)
    • Go to Dashboard > Users.
    • Add users and assign permissions.
    • Set up parental controls if needed.

Streaming
#

Use the web interface or Jellyfin apps for Android, iOS, smart TVs, and more.