Wie man Jellyfin Media Server unter Debian 10 installiert

Jellyfin ist ein Open-Source Media-Streaming-System, mit dem du deine Medien verwalten und streamen kannst. Es ist plattformübergreifend und eine Alternative zu anderen Anwendungen wie Emby und Plex. Mit Jellyfin kannst du deine Mediendateien, TV-Shows, Musik und Fotos über die webbasierte Oberfläche organisieren und teilen. Du kannst auf diese gestreamten Medien auf deinem PC, Tablet, Telefon, Roku und TV über das Internet zugreifen. Jellyfin holt sich automatisch Metadaten aus TheMovieDB, OpenMovie, Rotten Tomatoes und TheTVDB Datenbank.

In diesem Beitrag zeigen wir dir, wie du den Jellyfin Media Streaming Server mit Nginx als Reverse Proxy auf Debian 10 installieren kannst.

Voraussetzungen

  • Ein Server, auf dem Debian 10 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Zuerst musst du deine Systempakete mit der neuesten Version aktualisieren. Du kannst sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald alle Pakete aktualisiert sind, installierst du weitere benötigte Pakete mit dem folgenden Befehl:

apt-get install apt-transport-https ca-certificates gnupg2 curl git -y

Sobald alle Pakete installiert sind, kannst du mit dem nächsten Schritt fortfahren.

Jellyfin installieren

Standardmäßig ist das Jellyfin Paket nicht im Debian 10 Repository enthalten. Daher musst du das Jellyfin Repository zu deinem APT hinzufügen.

Du kannst es mit dem folgenden Befehl hinzufügen:

echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian buster main" | tee /etc/apt/sources.list.d/jellyfin.list

Sobald das Repository hinzugefügt ist, füge den GPG-Schlüssel mit dem folgenden Befehl hinzu:

wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -

Als nächstes aktualisierst du das Repository und installierst Jellyfin mit dem folgenden Befehl:

apt-get update -y
apt-get install jellyfin -y

Sobald Jellyfin installiert ist, kannst du den Status von Jellyfin mit dem folgenden Befehl überprüfen:

systemctl status jellyfin

Du solltest die folgende Ausgabe erhalten:

? jellyfin.service - Jellyfin Media Server
   Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/jellyfin.service.d
           ??jellyfin.service.conf
   Active: active (running) since Mon 2021-03-22 08:27:42 UTC; 5min ago
 Main PID: 10192 (jellyfin)
    Tasks: 17 (limit: 4701)
   Memory: 113.9M
   CGroup: /system.slice/jellyfin.service
           ??10192 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-ffm

Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [WRN] 127.0.0.1/32: GetBindInterface: Loopback 127.0.0.1 returned.
Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Executed all pre-startup entry points in 0:00:00.1545678
Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Core startup complete
Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Executed all post-startup entry points in 0:00:00.1976994
Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Startup complete 0:00:03.6985068
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] StartupTrigger fired for task: Update Plugins
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Queuing task PluginUpdateTask
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Executing Update Plugins
Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] Update Plugins Completed after 0 minute(s) and 0 seconds
Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] ExecuteQueuedTasks

Zu diesem Zeitpunkt ist Jellyfin gestartet und lauscht auf Port 8096. Du kannst es mit dem folgenden Befehl überprüfen:

ss -antpl | grep 8096

Ausgabe:

LISTEN    0         128                0.0.0.0:8096             0.0.0.0:*        users:(("jellyfin",pid=10192,fd=289))                                          

Nginx als Reverse Proxy konfigurieren

Als nächstes musst du Nginx als Reverse Proxy konfigurieren, um auf Jellyfin auf Port 80 zuzugreifen.

Als erstes installierst du das Nginx Paket mit dem folgenden Befehl:

apt-get install nginx -y

Sobald es installiert ist, erstelle eine neue Nginx-Konfigurationsdatei mit dem folgenden Befehl:

nano /etc/nginx/conf.d/jellyfin.conf

Füge die folgenden Zeilen hinzu:

server {
      listen 80;
      server_name jellyfin.example.com;

      access_log /var/log/nginx/jellyfin.access;
      error_log /var/log/nginx/jellyfin.error;

      set $jellyfin 127.0.0.1;

      location / {
          proxy_pass http://127.0.0.1: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;

          # Disable buffering when the nginx proxy gets very resource heavy upon streaming
          proxy_buffering off;
      }

      # location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
      location ~ ^/web/$ {
          # Proxy main Jellyfin traffic
          proxy_pass http://$jellyfin:8096/web/index.html/;
          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;
      }

      location /socket {
          # Proxy Jellyfin Websockets traffic
          proxy_pass http://$127.0.0.1:8096;
          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 $scheme;
          proxy_set_header X-Forwarded-Protocol $scheme;
          proxy_set_header X-Forwarded-Host $http_host;
      }

        # Security / XSS Mitigation Headers
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";
}

Speichere und schließe die Datei und überprüfe dann Nginx auf Syntaxfehler mit folgendem Befehl:

nginx -t

Output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl reload nginx

Zugriff auf Jellyfin

Öffne nun deinen Webbrowser und rufe das Jellyfin Webinterface über die URL http://jellyfin.example.com auf. Du wirst auf die folgende Seite weitergeleitet:

Jellyfin Media Server

Wähle deine Sprache aus und klicke auf den Weiter-Button. Du solltest die folgende Seite sehen:

Lege einen Benutzernamen und ein Passwort fest

Gib deinen Benutzernamen und dein Passwort ein und klicke auf den Weiter-Button. Du solltest die folgende Seite sehen:

Mediatheken

Klicke auf den Weiter-Button. Du solltest die folgende Seite sehen:

Spracheinstellungen

Wähle deine Metadaten-Sprache und klicke auf den Weiter-Button. Du solltest die folgende Seite sehen:

Fernzugriff konfigurieren

Erlaube den Fernzugriff und klicke auf den Weiter-Button. Sobald die Installation abgeschlossen ist, solltest du die folgende Seite sehen:

Installation beenden

Klicke auf den Finish Button, um die Installation zu beenden. Du solltest die Jellyfin Login Seite sehen:

bei Jellyfin anmelden

Gib deinen Benutzernamen und dein Passwort ein und klicke auf den Sign In Button. Du solltest das Jellyfin Dashboard auf der folgenden Seite sehen:

Jellyfin Dashboard

Jellyfin mit Let’s Encrypt SSL sichern

Als nächstes musst du das Certbot Client-Paket installieren, um das Let’s Encrypt SSL zu verwalten. Als erstes installierst du Certbot mit dem folgenden Befehl:

apt-get install python3-certbot-nginx -y

Sobald die Installation abgeschlossen ist, führe den folgenden Befehl aus, um das Let’s Encrypt SSL auf deiner Website zu installieren:

certbot --nginx -d jellyfin.example.com

Du wirst aufgefordert, eine gültige E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren, wie unten gezeigt:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for jellyfin.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/jellyfin.conf

Als nächstes wählst du aus, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht, wie unten gezeigt:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Gib 2 ein und drücke Enter, um die Installation abzuschließen. Du solltest die folgende Ausgabe sehen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/jellyfin.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://jellyfin.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=jellyfin.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/jellyfin.example.com/privkey.pem
   Your cert will expire on 2020-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Jetzt ist deine Webseite mit Let’s Encrypt SSL gesichert. Du kannst sie sicher über die URL https://jellyfin.example.comaufrufen .

Fazit

Glückwunsch! Du hast Jellyfin erfolgreich auf einem Debian 10 Server installiert. Du kannst nun ganz einfach deine Medien mit deinen Freunden, deiner Familie und anderen Nutzern teilen.

Das könnte dich auch interessieren …