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
- PC mit mindestens 4 Kernen, 8GB Arbeitsspeicher und 32GB Boot-Speicher + 128GBSpeicher als Ablage
- Debian ISO. Diese kann auf der Offiziellen Seiten bezogen werden. Debian -- Debian bekommen
- Dieses Tutorial beginnt direkt nach der Grundinstallation von Debian ohne Benutzeroberfläche. Ein Tutorial hierzu kann unter Debian 12 - Installati... | Wikimedia (calma-media.com) gefunden werden.
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]
Die ersten Befehle die wir eingeben werden sind:
supo apt update
sudo apt upgrade
Um CasaOS installieren zu können brauchen wir CURL. Dieses installieren wir mit:
sudo apt install curl
Schließlich kommt die CasaOS Installation:
curl -fsSL https://get.casaos.io | sudo bash
Mit dieser Ausgabe beginnt die CasaOS Installation.
Ist die Installation abgeschlossen wird man mit folgendem Screen begrüßt:
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,
Anschließend wird die zweite Festplatte gemountet und durch CasaOS formatiert. Diese Festplatte wird später als Speicherort für die Jellyfin Videos genutzt.
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:
Diese Meldung kann mir Ok bestätigt werden,
Systemneustart:
sudo reboot
Anschließend kann nvidia-smi die Installation des Toolkits getestet werden:
nvidia-smi
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.
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.
Wird ein Video gestartet welches Transkoding bedarf kann parallel nvidia-smi aufgrufen werden um zu überprüfen ob die Grafikkarte verwendet wird.
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.
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
No Comments