Skip to main content

Jellyfin

Installation

1. Install Packages

sudo apt install apt-transport-https gnupg lsb-release
curl -fsSL https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
sudo apt update
sudo apt install jellyfin
sudo systemctl enable --now jellyfin.service 
sudo systemctl restart jellyfin.service

2. Setup reverse proxy

In your new Jellyfin installation, head over to the Admin Dashboard -> Advanced -> Networking and disable HTTPS (if enabled), then add your local host (127.0.0.1) to the known proxies, to allow NGINX to act as a reverse proxy. After that, restart your Jellyfin server.

sudo systemctl restart jellyfin

Create a new VHOST in NGINX, /etc/nginx/sites-enabled/streaming.example.org and insert the following configuration (adapting the servername etc. of course):

upstream jellyfin {
    server 127.0.0.1:8096;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name streaming.example.org;
    ssl_certificate /etc/ssl/...;
    ssl_certificate_key /etc/ssl/...;
    ssl_trusted_certificate /etc/ssl/...;

    location / {
        proxy_pass http://jellyfin;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
    }

}

server {
    listen 80;
    listen [::]:80;
    server_name streaming.example.org;
    return 301 https://$server_name$request_uri;
}

You can now reach your Jellyfin instance over streaming.example.org.