Skip to main content

Jellyfin - Installation

Dieser Eintrag beschreibt den Vorgang einer Jellyfin Installation. Dabei befindet sich parallel auf dem System eine CasaOS Installation mit der das Filemanagement abgewickelt wird. Durch die Installation des NVIDIA CUDA Toolkits wird zusätzlich Hardwareencoding aktiviert.

Vorbereitung

CasaOS Installation

Nach der Installation von Debian kann der PC dank der Installation SSH weggelegt werde. Zur einfacheren Installation kann sich per SSH auf den PC geschalten werden. Die Befehle können dann einfach hineinkopiert werden,

Hat man bei der Installation keine feste IP vergeben kann dieser noch vor den Wechsel in die Konsole per Befehl

ip add

herausgefunden werden. Alternativ kann zur Anmeldung per SSH der Hostname verwendet werden. Dieser muss ebenfalls bei der Installation vergeben worden sein.

ssh [username]@[host-ip or hostname]

image.png

Die ersten Befehle die wir eingeben werden sind:

supo apt update
sudo apt upgrade

image.png

Um CasaOS installieren zu können brauchen wir CURL. Dieses installieren wir mit:

sudo apt install curl

image.png

Schließlich kommt die CasaOS Installation:

curl -fsSL https://get.casaos.io | sudo bash

Mit dieser Ausgabe beginnt die CasaOS Installation.

image.png

Ist die Installation abgeschlossen wird man mit folgendem Screen begrüßt:

image.png

Die verlinkte Webseite ist anschließend über ein PC im gleichen Netzwerk erreichbar. Mit einem Klick auf Go kann ein User erstellt werden welcher für den Zugriff auf die Weboberfläche verwendet werden wird,

image.png

Anschließend wird die zweite Festplatte gemountet und durch CasaOS formatiert. Diese Festplatte wird später als Speicherort für die Jellyfin Videos genutzt.

image.png

image.png

image.png

image.png

image.png

image.png

image.png

NVIDIA CUDA Installation

Die Kernel-Header und Entwicklungspakete für den derzeit laufenden Kernel können mit dem folgenden Befehl installiert werden:

sudo apt-get install linux-headers-$(uname -r)

Aktivieren des Contrib-Repositorys:

sudo add-apt-repository contrib

Entfernen Sie den veralteten Signaturschlüssel:

sudo apt-key del 7fa2af80

Installation des neuen cuda-keyring-Pakets:

wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

Apt Repository update:

sudo dpkg -i cuda-keyring_1.1-1_all.deb

Installation des CUDS SDKs:

sudo apt-get -y install cuda

Während der Installation erscheint folgende Meldung:

image.png

Diese Meldung kann mir Ok bestätigt werden,

Systemneustart:

sudo reboot

Anschließend kann nvidia-smi die Installation des Toolkits getestet werden:

nvidia-smi

image.png

Jellyfin Installation

Die jellyfin Installation kann mit nur einem Befehl abgewickelt werden.

curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash

Jellyfin kann anschließend über die IP-Adresse des Servers und den Jellyfin Port erreicht werden.

http://[Server-IP-Adresse]:8096

Die IP Adresse kann über den Befehl

ip a

herausgefunden werden. Einmal angemeldet kann die Ersteinrichtung gestartet werden.

image.png

image.png

image.png

image.png

image.png

image.png

 image.png

image.png

image.png

image.png

image.png

Aktivieren der Hardware Transkodierung

Für das Hardware Transkodieren ist das jellyfin-ffmpeg6 Paket notwenig. Dieses kann mit:

sudo apt update && sudo apt install -y jellyfin-ffmpeg6

installiert werden. Zusätzlich müssen zwei weitere Pakate für NVENC und NVDEC importiert und installiert werden.

sudo apt update && sudo apt install -y libnvcuvid1 libnvidia-encode1

In Jellyfin können anschließend die Transcoding Einstellungen angepasst werden.

image.png

Wird ein Video gestartet welches Transkoding bedarf kann parallel nvidia-smi aufgrufen werden um zu überprüfen ob die Grafikkarte verwendet wird.

image.png

Troubleshooting

In manchen Fällen kann es vorkommen das die Grafikkarte bei jedem Neustart nicht von ffmeg gefunden wird. In diesem Fall schlägt die Kodierung fehl und die Videos sind nicht abspielbar. Die Zuordnung kann manuell nach jedem Start durch folgenden Befehl erfolgen:

sudo nvidia-smi -pm 0

Bei der  "0" Handel es sich dabei um die GPU ID. Diese lässte sich ebenfalls aus nvidia-smi auslesen. Es handel sich dabei um die Zahl vor dem Grafikkartenmodell.

image.png

Damit der Befehl nicht bei jedem Start manuell eingetragen werden muss kann ein Skript angelegt und automatisch bei jedem Start ausgeführt werden. Dies lässt sich durch folgende Schritte erreichen:

sudo nano /etc/systemd/system/bind-gpu.service

Der Inhalt der Datei kann dabei so in etwa aussehen:

[Unit]
Description=Bind GPU on system start

[Service]
Type=oneshot
ExecStart=sudo /usr/bin/nvidia-smi -pm 0

[Install]
WantedBy=multi-user.target

Anschließend kann der Daemon aktualisiert werden und das Skript in den Auto-Start geladen werden:

sudo systemctl daemon-reload
sudo systemctl enable bind-gpu.service

Mit folgenden Befehl kann die Codierung getestet werden:

/usr/lib/jellyfin-ffmpeg/ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i "/mnt/HDD/Jellyfin/Videos/[dein-video]" -vf "scale_cuda=1920:1080" -c:v h264_nvenc -c:a copy ~/output.mp4

image.png