Applies to: Jellyfin 12.1 with Docker, or from Jellyfin’s repository on Debian 11 to 13 and Ubuntu 20.04, 22.04, 24.04 and 26.04
Jellyfin is a free, open-source media server: it organises your films, series and music and streams them to browsers, TVs, phones and tablets, without a subscription. We installed Jellyfin 12.1 (released 15 September 2026) both ways described below.
Before you start
- Only stream media you have the rights to.
- Disk space is usually the limit; put your media on a disk or volume large enough for the library.
- Transcoding (converting video on the fly for devices that can’t play the original) uses a lot of CPU. Clients that play the file directly use almost none; a GPU helps for heavy transcoding.
Option 1: Docker
With Docker installed (install Docker on Debian and Ubuntu):
sudo mkdir -p /srv/jellyfin/config /srv/jellyfin/cache /srv/media sudo docker run -d --name jellyfin --restart unless-stopped \ -p 8096:8096 \ -v /srv/jellyfin/config:/config \ -v /srv/jellyfin/cache:/cache \ -v /srv/media:/media:ro \ jellyfin/jellyfin:latest
Check it: curl http://localhost:8096/health answered Healthy in our test after about a minute (before that it says Jellyfin Server is loading). The image includes Jellyfin’s own FFmpeg build for transcoding. /config holds your settings and users; back it up.
Option 2: Jellyfin’s repository (Debian and Ubuntu)
curl -fsSL https://repo.jellyfin.org/install-debuntu.sh -o install-jellyfin.sh less install-jellyfin.sh # read what it does sudo bash install-jellyfin.sh
The script adds Jellyfin’s repository and installs the packages; on Debian 13 it installed jellyfin 12.1+deb13 and jellyfin-ffmpeg8. Jellyfin then runs as the jellyfin service (sudo systemctl status jellyfin) and updates with apt upgrade.
First setup
- Allow the port only while you set up, or better, use an SSH tunnel:
ssh -L 8096:localhost:8096 user@SERVER-IP, then openhttp://localhost:8096. - The setup wizard asks for the language, an administrator account and your media libraries (for Docker, the folder is
/media). - Choose the metadata language and finish; Jellyfin scans the library.
Upload your media
Copy files with SFTP, scp -r or rsync into /srv/media, sorted into folders such as Movies and Shows.
Use it securely from anywhere
- Put a reverse proxy with a free SSL certificate in front of port 8096 and a name such as
media.example.com(see Apache as a reverse proxy), and don’t expose 8096 directly. - Use strong passwords for every Jellyfin user, and keep Jellyfin updated.
A KVM VPS works well for a personal library; for large libraries or heavy transcoding, a dedicated server gives you more disk and CPU.
Official documentation: Jellyfin on Linux and Jellyfin in a container.