Ubuntu 24.04 Server: Installation Jellyfin Media Server

Jellyfin ist eine leistungsstarke, quelloffene Alternative zu proprietären Medienservern wie Plex oder Emby. Mit Jellyfin kannst du deine persönliche Mediensammlung organisieren und auf verschiedenen Geräten streamen. In diesem Artikel erfährst du, wie du Jellyfin auf Ubuntu 24.04 installierst und konfigurierst. Zusätzlich behandeln wir die Einrichtung eines sicheren HTTPS-Zugriffs über einen Nginx Reverse Proxy mit Let’s Encrypt sowie wichtige Aspekte wie Backups und Updates.

Grundvoraussetzungen

Bevor du mit der Installation beginnst, stelle sicher, dass folgende Voraussetzungen erfüllt sind:

  • Ein Ubuntu 24.04 Server
  • Root- oder sudo-Zugriff auf das System
  • Eine stabile Internetverbindung
  • Mindestens 2 GB RAM (4 GB oder mehr empfohlen)
  • Ausreichend Festplattenspeicher für deine Mediensammlung
  • Eine registrierte Domain für den HTTPS-Zugriff

System aktualisieren

Aktualisiere zunächst dein Ubuntu-System:

sudo apt update
sudo apt upgrade -y
Bash

Jellyfin Installation

Jellyfin-Repository hinzufügen

Füge das offizielle Jellyfin-Repository hinzu:

sudo apt install apt-transport-https gnupg2 -y
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add -
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Bash

Das Hinzufügen des offiziellen Repositories stellt sicher, dass du immer die neueste, stabile Version von Jellyfin installierst und einfach Updates durchführen kannst.

Jellyfin installieren

Aktualisiere die Paketlisten und installiere Jellyfin:

sudo apt update
sudo apt install jellyfin -y
Bash
Jellyfin-Dienst starten und aktivieren

Starte den Jellyfin-Dienst und aktiviere ihn für den automatischen Start beim Systemboot:

sudo systemctl start jellyfin
sudo systemctl enable jellyfin
Bash

Durch das Aktivieren des Dienstes startet Jellyfin automatisch beim Systemboot, was besonders wichtig ist, wenn du den Server als dauerhaften Medienserver betreiben möchtest.

Firewall konfigurieren

Öffne den Port 8096 in der Firewall für den Zugriff auf die Jellyfin-Weboberfläche:

# HTTP und HTTPS für Nginx freigeben
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Jellyfin-Port nur lokal zugänglich machen
sudo ufw allow from 127.0.0.1 to any port 8096

# Firewall-Regeln neu laden
sudo ufw reload
Bash

Diese Firewall-Konfiguration erhöht die Sicherheit, indem sie nur die notwendigen Ports öffnet und den direkten Zugriff auf Jellyfin von außen verhindert.

Jellyfin-Weboberfläche aufrufen

Öffne einen Webbrowser und rufe die Jellyfin-Weboberfläche lokal auf:

http://localhost:8096
Markdown

Folge den Anweisungen im Einrichtungsassistenten, um dein Jellyfin-Konto zu erstellen und deine Medienbibliotheken einzurichten.

Nginx als Reverse Proxy

Um Jellyfin sicher über HTTPS zugänglich zu machen, richten wir einen Nginx Reverse Proxy mit Let’s Encrypt-Zertifikaten ein.

Nginx installieren
sudo apt install nginx -y
Bash
Certbot installieren
sudo apt install certbot python3-certbot-nginx -y
Bash
Temporäre Nginx-Konfiguration erstellen
sudo nano /etc/nginx/sites-available/jellyfin-temp
Bash

Füge folgenden Inhalt ein (ersetze „jellyfin.deine-domain.de“ durch deine tatsächliche Domain):

server {
    listen 80;
    server_name jellyfin.deine-domain.de;
    
    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt;
    }
}
Nginx

Aktiviere die temporäre Konfiguration:

sudo ln -s /etc/nginx/sites-available/jellyfin-temp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Bash
SSL-Zertifikat mit Let’s Encrypt erstellen:

Hole das SSL-Zertifikat:

sudo mkdir -p /var/www/letsencrypt
sudo certbot certonly --webroot -w /var/www/letsencrypt -d jellyfin.deine-domain.de
Bash

Ersetze „jellyfin.deine-domain.de“ durch deine tatsächliche Domain

Finale Nginx-Konfiguration erstellen

Erstelle die finale Nginx-Konfiguration für Jellyfin mit SSL:

sudo nano /etc/nginx/sites-available/jellyfin
Bash

Füge folgenden Inhalt ein:

server {
    listen 80;
    server_name jellyfin.deine-domain.de;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name jellyfin.deine-domain.de;

    ssl_certificate /etc/letsencrypt/live/jellyfin.deine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jellyfin.deine-domain.de/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000" always;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    location / {
        proxy_pass http://localhost:8096;
        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 $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /socket {
        proxy_pass http://localhost:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
Nginx
Finale Konfiguration aktivieren:

Aktiviere die finale Konfiguration und deaktiviere die temporäre:

sudo rm /etc/nginx/sites-enabled/jellyfin-temp
sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Bash

Die Verwendung eines Reverse Proxy mit HTTPS verschlüsselt den Datenverkehr zwischen Client und Server, schützt sensible Informationen und ermöglicht den sicheren Zugriff von außerhalb deines lokalen Netzwerks.

Backup & Restore

Backup erstellen

Erstelle ein Skript für automatische Backups:

sudo nano /usr/local/bin/jellyfin-backup.sh
Bash

Füge folgenden Inhalt ein:

#!/bin/bash
BACKUP_DIR="/path/to/backup/directory"
JELLYFIN_CONFIG="/var/lib/jellyfin"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

sudo systemctl stop jellyfin
sudo tar -czf "$BACKUP_DIR/jellyfin_backup_$TIMESTAMP.tar.gz" "$JELLYFIN_CONFIG"
sudo systemctl start jellyfin
Bash

Mache das Skript ausführbar:

sudo chmod +x /usr/local/bin/jellyfin-backup.sh
Bash
Backup wiederherstellen

Um ein Backup wiederherzustellen:

sudo systemctl stop jellyfin
sudo tar -xzf /path/to/backup/jellyfin_backup_TIMESTAMP.tar.gz -C /
sudo systemctl start jellyfin
Bash

Update & Upgrade

Jellyfin aktualisieren:

sudo apt update
sudo apt install jellyfin
sudo systemctl restart jellyfin
Bash

Troubleshooting

Jellyfin startet nicht:
sudo journalctl -u jellyfin
Bash

Überprüfe die Logs auf spezifische Fehlermeldungen. Häufige Probleme sind:

  • Falsche Berechtigungen: Stelle sicher, dass der Jellyfin-Benutzer Zugriff auf die Medienverzeichnisse hat.
  • Portkonflikt: Überprüfe, ob Port 8096 bereits von einem anderen Dienst verwendet wird.
Keine Verbindung zur Weboberfläche:

Überprüfe, ob Jellyfin lokal läuft:

curl http://localhost:8096
Bash

Wenn dies funktioniert, aber der externe Zugriff nicht, überprüfe deine Nginx-Konfiguration und Firewall-Einstellungen.

Probleme mit Transkodierung:
ffmpeg -version
Bash

Stelle sicher, dass FFmpeg installiert ist und von Jellyfin gefunden wird. Überprüfe die Jellyfin-Logs auf Fehler bei der Transkodierung.

Leistungsprobleme
top

# oder

htop
Bash

Beobachte CPU- und RAM-Auslastung. Bei hoher Auslastung erwäge ein Upgrade der Hardware oder passe die Transkodierungseinstellungen an.

Nginx-Konfigurationsprobleme:
sudo nginx -t
Bash

Dieser Befehl prüft die Nginx-Konfiguration auf Syntax-Fehler. Überprüfe bei Fehlern die entsprechenden Konfigurationsdateien.

SSL-Zertifikatsprobleme:
sudo certbot certificates
Bash

Überprüfe das Ablaufdatum der Zertifikate. Bei abgelaufenen Zertifikaten führe eine manuelle Erneuerung durch:

sudo certbot renew
Bash
Datenbank-Korruption:

Bei unerklärlichen Fehlern oder fehlenden Metadaten versuche, die Jellyfin-Datenbank zu reparieren:

sudo systemctl stop jellyfin
sudo sqlite3 /var/lib/jellyfin/data/jellyfin.db "VACUUM;"
sudo systemctl start jellyfin
Bash

Anpassungsoptionen

Für fortgeschrittene Benutzer bietet Jellyfin verschiedene Anpassungsmöglichkeiten:

  1. Benutzerdefinierte Metadaten-Scraper:
    Jellyfin unterstützt verschiedene Metadaten-Anbieter. In den Bibliothekseinstellungen kannst du die bevorzugten Anbieter auswählen und priorisieren.
  2. Hardware-Beschleunigung:
    Aktiviere die Hardware-Beschleunigung in den Transkodierungseinstellungen, um die CPU-Last zu reduzieren. Unterstützte Optionen hängen von deiner Hardware ab.
  3. Plugin-Installation:
    Jellyfin bietet eine Vielzahl von Plugins zur Funktionserweiterung. Diese können über die Weboberfläche unter „Dashboard > Plugins“ installiert werden.
  4. Benutzerdefinierte CSS:
    Du kannst das Aussehen der Weboberfläche anpassen, indem du benutzerdefiniertes CSS unter „Dashboard > Allgemein > Benutzerdefiniertes CSS“ hinzufügst.
  5. Netzwerk-Streaming-Einstellungen:
    Passe die Streaming-Bitrate und Qualität unter „Dashboard > Wiedergabe“ an, um die Leistung für verschiedene Netzwerkbedingungen zu optimieren.
  6. Automatische Untertitel-Downloads:
    Konfiguriere Untertitel-Anbieter in den Bibliothekseinstellungen, um automatisch passende Untertitel herunterzuladen.

Diese Anpassungen ermöglichen es dir, Jellyfin optimal auf deine Bedürfnisse und deine Serverumgebung abzustimmen.

Fazit

Die Installation und Konfiguration von Jellyfin auf Ubuntu 24.04 ist ein lohnenswertes Projekt für Medienliebhaber. Mit dieser Anleitung kannst du einen leistungsfähigen, sicheren und anpassbaren Medienserver einrichten. Von der grundlegenden Installation bis hin zur fortgeschrittenen Konfiguration mit HTTPS und Reverse Proxy bietet Jellyfin eine robuste Lösung für deine Streaming-Bedürfnisse.

Die Möglichkeiten zur Anpassung, regelmäßige Updates und eine aktive Community machen Jellyfin zu einer attraktiven Alternative zu proprietären Diensten. Beachte jedoch, dass eine gewisse technische Versiertheit erforderlich ist, um das volle Potenzial auszuschöpfen. Mit etwas Geduld und den richtigen Einstellungen wirst du einen personalisierten Medienserver genießen, der deine digitale Sammlung optimal präsentiert und zugänglich macht.

Kommentar verfassen