So installierst du Jellyfin Media Server unter Debian 12
Jellyfin ist eine kostenlose Software zum Aufbau eines Medienservers. Mit ihr kannst du deine Mediendateien von mehreren Geräten oder Clients sammeln, verwalten und streamen. Jellyfin ist eine kostenlose und selbst gehostete Anwendung, die auf deinem Server installiert werden kann. So kannst du deinen eigenen Medienserver in deiner lokalen Umgebung, z. B. zu Hause, einrichten und dann mehreren Clients und Geräten den Zugriff auf alle deine Mediendateien ermöglichen.
Jellyfin ist eine Alternative zu proprietären Medienservern wie Emby und Plex. Er ermöglicht es dir, Mediendateien von jedem Gerät und von überall aus zu verwalten.
Diese Anleitung zeigt dir, wie du den Jellyfin-Medienserver auf Debian 12 installierst. Du installierst Jellyfin über ein vorgefertigtes Binärpaket und sicherst es mit UFW (Uncomplicated Firewall), SSL/TLS-Zertifikaten von Letsencrypt und dem Apache2 Reverse Proxy.
Voraussetzungen
Um mit dem Prozess zu beginnen, musst du sicherstellen, dass du die folgenden Voraussetzungen erfüllst:
- Einen Debian 12-Server mit 2 oder 4 GB Arbeitsspeicher.
- Einen Nicht-Root-Benutzer mit Administrator-Rechten.
- Einen Domainnamen, der auf die IP-Adresse des Servers zeigt.
Hinzufügen des Jellyfin-Repositorys
Der Jellyfin-Medienserver kann auf verschiedene Arten installiert werden: manuell oder über ein vorgefertigtes Paket, das für die meisten Linux-Distributionen verfügbar ist. In diesem ersten Schritt wirst du das Jellyfin-Repository zu deinem Debian-Server hinzufügen.
Führe zunächst den folgenden apt-Befehl aus, um die Abhängigkeiten auf deinem Debian-Rechner zu installieren.
sudo apt install apt-transport-https ca-certificates gnupg curl -y
Sobald die Abhängigkeiten installiert sind, führe den folgenden Befehl aus, um den GPG-Schlüssel des Jellyfin-Repositorys hinzuzufügen, der unter /etc/apt/keyrings/jellyfin.gpg gespeichert wird.
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
Führe nun den folgenden Befehl aus, um das jellyfin-Repository zu deinem Debian-Server hinzuzufügen. Nach der Ausführung des Befehls wird die Repository-Datei /etc/apt/sources.list.d/jellyfin.sources erstellt.
cat <<EOF | sudo tee /etc/apt/sources.list.d/jellyfin.sources Types: deb URIs: https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) Suites: $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) Components: main Architectures: $( dpkg --print-architecture ) Signed-By: /etc/apt/keyrings/jellyfin.gpg EOF
Aktualisiere zum Schluss deinen Debian-Paketindex mit dem Befehl apt update.
sudo apt update
Du solltest sehen, dass das Jellyfin-Repository zur Liste der System-Repositories hinzugefügt wurde.
Installation und Verwaltung von Jellyfin
Wenn du das Jellyfin-Repository hinzugefügt hast, kannst du den Jellyfin-Medienserver installieren. Führe diese Schritte aus, um Jellyfin zu installieren und zu lernen, wie du den Jellyfin-Dienst über systemctl verwaltest.
Führe den Befehl apt install aus, um den jellyfin-Medienserver zu installieren. Gib zur Bestätigung y ein und drücke ENTER, um fortzufahren.
sudo apt install jellyfin
Vergewissere dich nach der Installation, dass der Jellyfin-Dienst läuft und mit dem unten stehenden Befehl aktiviert ist.
sudo systemctl is-enabled jellyfin sudo systemctl status jellyfin
Wenn er läuft, solltest du die Ausgabe active (läuft) sehen. Wenn er aktiviert ist, solltest du die Ausgabe enabled (aktiviert) erhalten. Das bedeutet, dass Jellyfin beim Systemstart automatisch gestartet wird.
Standardmäßig wird Jellyfin auf localhost mit Port 8096 ausgeführt. Führe den folgenden ss-Befehl aus, um die Ports auf deinem Debian-System zu überprüfen.
ss -tulpn
Du kannst davon ausgehen, dass der Port 8096 vom Jellyfin-Medienserver verwendet wird.
Zum Schluss führst du den folgenden systemctl-Befehl aus, um den Jellyfin-Dienst zu starten, zu stoppen oder neu zu starten.
sudo systemctl start jellyfin sudo systemctl stop jellyfin sudo systemctl restart jellyfin
Sicherheitseinstellungen mit UFW
Im folgenden Abschnitt wirst du deinen Jellyfin-Medienserver mit UFW absichern. Du installierst UFW und öffnest dann HTTP- und HTTPS-Protokolle für den Client-Zugriff. Du musst HTTP- und HTTPS-Protokolle öffnen, weil du Apache2 als Reverse Proxy verwenden wirst.
Zuerst installierst du UFW mit dem Befehl apt install (siehe unten).
sudo apt install ufw -y
Sobald UFW installiert ist, führe den Befehl ufw aus, um den OpenSSH-Dienst hinzuzufügen, und starte und aktiviere UFW.
sudo ufw allow OpenSSH sudo ufw enable
Gib y ein, wenn du dazu aufgefordert wirst und UFW sollte laufen und aktiviert sein.
Führe nun den folgenden Befehl aus, um das Profil WWW Full hinzuzufügen und den UFW-Status zu überprüfen. Das Profil WWW Full öffnet sowohl HTTP- als auch HTTPS-Protokolle auf deinem Debian-System.
sudo ufw allow "WWW Full" sudo ufw status
Die Ausgabe sollte zeigen, dass UFW aktiv ist und die Profile OpenSSH und WWW Full aktiviert sind.
Installieren und Konfigurieren von Apache2 als Reverse Proxy
In dieser Anleitung wirst du den Jellyfin-Medienserver innerhalb von Apache2 als Reverse-Proxy betreiben. Außerdem sicherst du deine Installation mit SSL/TLS-Zertifikaten, die du mit Certbot und Letsencrypt generierst.
Erledige nun die folgenden Aufgaben: Installiere Apache2 und Certbot, generiere SSL/TLS-Zertifikate und erstelle die Konfiguration des virtuellen Apache2-Hosts für den Jellyfin-Medienserver.
Installation von Apache2 und Certbot
Führe zunächst den folgenden Befehl aus, um den Apache2 Webserver und Certbot zu installieren. Gib zur Bestätigung y ein und drücke ENTER.
sudo apt install apache2 certbot
Nach Abschluss der Installation sollte der Apache2-Dienst standardmäßig laufen und aktiviert sein. Überprüfe dies mit dem folgenden systemctl-Befehl.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
Die Ausgabe enabled zeigt an, dass der apache2-Dienst beim Booten automatisch gestartet wird. Und die Ausgabe active (running) zeigt an, dass der Dienst läuft.
Erzeugen von SSL/TLS-Zertifikaten mit Certbot
Bevor du SSL/TLS-Zertifikate erstellst, aktiviere einige Apache2-Module mit dem Befehl a2enmod und starte den Apache2-Dienst neu.
sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers sudo systemctl restart apache2
Führe nun den folgenden Befehl aus, um ein neues Verzeichnis /var/www/html/jellyfin/public_html zu erstellen und ändere den Eigentümer auf den Benutzer www-data und die Gruppe. Dieses Verzeichnis wird als temporäres Web-Root-Verzeichnis für die Erstellung von SSL/TLS-Zertifikaten verwendet.
sudo mkdir -p /var/www/html/jellyfin/public_html sudo chown -R www-data:www-data /var/www/html/jellyfin/public_html
Als Nächstes führst du den unten stehenden Befehl certbot aus, um neue SSL/TLS-Zertifikate zu erstellen. Achte darauf, dass du die E-Mail-Adresse und den Domänennamen änderst, bevor du den Befehl ausführst.
sudo certbot certonly --agree-tos --email user@email.com --no-eff-email --webroot -w /var/www/html/jellyfin/public_html -d media.hwdomain.io
Nach dem Vorgang sind deine SSL/TLS-Zertifikate im Verzeichnis /etc/letsencrypt/live/domain.com verfügbar. Die Datei fullchain.pem ist der öffentliche Schlüssel und die Datei privkey.pem ist der private Schlüssel.
Apache2 als Reverse Proxy konfigurieren
Erstelle eine neue virtuelle Hostkonfiguration /etc/apache2/sites-available/jellyfin.conf mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/apache2/sites-available/jellyfin.conf
Füge die unten stehende Konfiguration ein und achte darauf, dass du den Domainnamen, den Pfad der SSL/TLS-Zertifikate und die IP-Adresse des Servers mit deinen Angaben änderst. Damit richtest du Apache2 als Reverse Proxy für den jellyfin-Medienserver ein, der auf Port 8096 läuft.
<VirtualHost *:80> ServerName media.hwdomain.io # Comment to prevent HTTP to HTTPS redirect Redirect permanent / https://media.hwdomain.io/ ErrorLog /var/log/apache2/media.hwdomain.io-error.log CustomLog /var/log/apache2/media.hwdomain.io-access.log combined </VirtualHost> # If you are not using an SSL certificate, replace the 'redirect' # line above with all lines below starting with 'Proxy' <IfModule mod_ssl.c> <VirtualHost *:443> ServerName media.hwdomain.io # This folder exists just for certbot(You may have to create it, chown and chmod it to give apache permission to read it) DocumentRoot /var/www/html/jellyfin/public_html ProxyPreserveHost On # Letsencrypt's certbot will place a file in this folder when updating/verifying certs # This line will tell Apache to not to use the proxy for this folder. ProxyPass "/.well-known/" "!" # Tell Jellyfin to forward that requests came from TLS connections RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-Port "443" ProxyPass "/socket" "ws://192.168.10.15:8096/socket" ProxyPassReverse "/socket" "ws://192.168.10.15:8096/socket" ProxyPass "/" "http://192.168.10.15:8096/" ProxyPassReverse "/" "http://192.168.10.15:8096/" SSLEngine on SSLCertificateFile /etc/letsencrypt/live/media.hwdomain.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/media.hwdomain.io/privkey.pem Protocols h2 http/1.1 # Enable only strong encryption ciphers and prefer versions with Forward Secrecy SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5 SSLHonorCipherOrder on # Disable insecure SSL and TLS versions SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 ErrorLog /var/log/apache2/media.hwdomain.io-error.log CustomLog /var/log/apache2/media.hwdomain.io-access.log combined </VirtualHost> </IfModule>
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als Nächstes führst du den Befehl a2ensite aus, um den virtuellen Host jellyfin.conf zu aktivieren, und überprüfst dann deine Apache2-Syntax.
sudo a2ensite jellyfin.conf sudo apachectl configtest
Wenn du eine korrekte Apache2-Syntax hast, solltest du eine Ausgabe Syntax OK erhalten.
Starte nun den Apache2-Dienst mit dem unten stehenden Befehl neu, um die Änderungen zu übernehmen. Deine Jellyfin-Installation sollte nun unter dem Apache2 Reverse Proxy laufen und gesichert sein.
sudo systemctl restart apache2
Rufe mit deinem Webbrowser den Domainnamen deiner Jellyfin-Installation auf, z. B. https://media.hwdomain.io/. Wenn die Konfiguration erfolgreich ist, solltest du den Jellyfin-Installationsassistenten wie folgt erhalten:
Jellyfin Media Server Installation
Im folgenden Schritt wirst du die Konfiguration des Jellyfin-Medienservers mit Hilfe des Installationsassistenten abschließen.
Wähle zunächst die Standardsprache für deine Jellyfin-Installation aus und klicke auf Weiter.
Erstelle nun einen neuen Admin-Benutzer für deine Jellyfin-Installation. Gib deinen Benutzernamen und dein Passwort ein und klicke dann auf Weiter.
Die Medienbibliotheken kannst du später konfigurieren. Klicke auf Weiter, um fortzufahren.
Wähle deine bevorzugte Metadaten-Sprache für deine Bibliotheken und klicke auf Weiter.
Aktiviere die Option Fernverbindungen zulassen, um den Fernzugriff auf deinen Jellyfin-Medienserver zu ermöglichen. Außerdem kannst du die Portzuordnung aktivieren, indem du die Option ankreuzt. Klicke dann auf Weiter.
Wenn deine Konfiguration erfolgreich ist, solltest du die Meldung You’re Done! erhalten. Klicke auf Fertig stellen, um die Installation von jellyfin abzuschließen.
Jetzt solltest du zur Anmeldeseite von Jellyfin weitergeleitet werden. Gib deinen Admin-Benutzer und dein Passwort für Jellyfin ein und klicke dann auf Anmelden.
Wenn alles gut geht, solltest du das Jellyfin-Administrations-Dashboard wie folgt sehen:
Klicke schließlich auf das Dashboard-Menü im Bereich Administration. Du solltest detaillierte Informationen über deine Jellyfin-Medienserver-Installation sehen:
Fazit
Zum Abschluss dieser Anleitung hast du die Installation des Jellyfin-Medienservers auf Debian 12 mit Apache2 Reverse Proxy und SSL/TLS von Letsencrypt abgeschlossen. Außerdem hast du deinen Jellyfin-Server mit UFW abgesichert und die Grundkonfiguration des Jellyfin-Medienservers abgeschlossen. Du kannst eine neue Medienbibliothek erstellen und deine Mediendateien auf Jellyfin hochladen.