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
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:
- Operating System: Linux Mint
- Container Runtime: Docker & Docker Compose
- Hardware: Minimum 2GB RAM, 10GB Disk Space (4K/HDR transcoding requires more resources)
- Media can take up a lot of disk space. I recommend storing your media files on a NAS.
- Dependencies: FFmpeg (for media transcoding)
- Viewing Client: You will need a client to access your server
- 👉 Official Clients
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/photosYou can make your own library categories as well. For example:
home/USER/docker/jellyfin/media/kidshows
home/USER/docker/jellyfin/media/animeStep 2: Docker Setup #
Make sure you are in your Jellyfin directory. Replace USER with your user name.
cd /home/USER/docker/jellyfinTo 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.yamlUse the nano program to edit the file.
sudo nano docker-compose.yamlStep 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: bridgeSave 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 -dOnce the pull is complete, you can verify that the container is there and running my typing
docker psThat’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:8096This is the IP address of your server where Jellyfin is installed.
- Create Admin Account
- Set a strong username and password for your admin account.
- Click Next to proceed.
- 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.
- 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.
- 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.
- Adjust Playback Settings
- Go to Dashboard > Playback.
- Set your preferred quality and transcoding options.
- Enable Hardware Acceleration for smoother streaming.
- 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.