SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-26

Jellyfin auf einem VPS installieren und sicher streamen

Betreiben Sie Jellyfin im Docker-Container auf einem VPS: mit Block-Storage, korrekten Dateirechten, Direct Play statt CPU-Transcoding und sicherem Fernzugriff.

Was Sie erstellen

Einen Jellyfin-Medienserver auf einem VPS: einen Container, drei Volumes und eine Block-Storage-Disk mit Ihren Filmen und Serien, erreichbar über jeden Browser und jede Jellyfin-App. Die Installation besteht aus einer Compose-Datei mit 15 Zeilen. Alles, was danach schiefgeht, hat meist eine von zwei Ursachen: Dateiberechtigungen, wegen derer der Container nicht lesen kann, oder der Versuch, einen VPS ohne GPU zum Transkodieren von Videos zu verwenden, für den er nicht ausgelegt ist. Dieser Leitfaden widmet sich deshalb größtenteils diesen beiden Themen. Dort entstehen die meisten Supportanfragen.

Jellyfin ist kostenlos und vollständig Open Source. Es gibt kein Konto, keine kostenpflichtigen Funktionen und keine Telemetrie. Deshalb erscheint Jellyfin auf fast jeder Liste der Dinge, die sich 2026 zum Self-Hosting lohnen. Jellyfin gibt Medien wieder, die Sie besitzen. Jellyfin liefert keine Inhalte mit. In diesem Leitfaden geht es nicht um die Beschaffung solcher Inhalte.

Die Realität beim Transcoding, bevor Sie etwas mieten

Lesen Sie das zuerst, denn es beeinflusst Ihre Auswahl. Ein Medienserver verhält sich beim Start der Wiedergabe auf eine von zwei Arten. Direct Play streamt die Datei unverändert: Der VPS liest die Bytes von der Festplatte und überträgt sie über das Netzwerk. Dafür wird fast keine CPU-Leistung benötigt. Transcoding codiert das Video während der Wiedergabe neu, etwa mit einer anderen Auflösung, einem anderen Codec oder mit fest eingebrannten Untertiteln. Das ist reine CPU-Arbeit.

Ein typischer VPS hat keine GPU. Deshalb läuft jedes Transcoding auf der CPU mit libx264/libx265, und Software-Encoding ist rechenintensiv. Ein einzelner 1080p-H.264-Transcode kann mehrere gemeinsam genutzte vCPUs vollständig auslasten. Ein 4K- oder HEVC-Transcode erreicht die Echtzeitgeschwindigkeit normalerweise überhaupt nicht. Die Wiedergabe stockt dann und puffert dauerhaft. Hardware-Transcoding, das auf einem Heimserver mit einer Intel-iGPU oder einer Nvidia-Karte günstig möglich ist, steht Ihnen nicht zur Verfügung, sofern Ihr Anbieter keine GPU-Instanzen vermietet.

Die gesamte Strategie auf einem VPS lautet daher: Vermeiden Sie Transcoding. Halten Sie Ihre Bibliothek in Codecs, die Ihre Clients nativ wiedergeben können: H.264-Video, AAC- oder AC3-Audio in einem MP4- oder MKV-Container. Verwenden Sie Client-Apps mit Direct Play: die nativen Jellyfin-Apps für Android TV, iOS und Roku sowie Infuse, Kodi und den Jellyfin Media Player für Desktop-Systeme. Dann verwendet der VPS ffmpeg überhaupt nicht, und ein System mit 2 vCPU kann gleichzeitig für mehrere Personen streamen. Wenn Sie Transcoding einplanen, benötigen Sie ein deutlich größeres und teureres System. Selbst dann ist 4K keine gute Wahl.

Führen Sie auch die Bandbreitenberechnung durch, denn auch sie ist überraschend. Bei Direct Play wird die Datei mit ihrer ursprünglichen Bitrate übertragen. Eine komprimierte 1080p-Datei benötigt 8-12 Mbps, ein 1080p-Blu-ray-Remux 20-30 Mbps und 4K HDR 40-80 Mbps. Wenn drei Personen Dateien mit jeweils 10 Mbps per Direct Play abspielen, erzeugt das auf Ihrem VPS dauerhaft 30 Mbps ausgehenden Upload-Traffic. Prüfen Sie in Ihrem Tarif zwei Werte: die Portgeschwindigkeit (kann der Port 30 Mbps im Upstream übertragen?) und das monatliche Transferlimit. Ein zweistündiger Film mit 10 Mbps verursacht etwa 9 GB ausgehenden Traffic. Ein volumenbasierter Tarif mit 1 TB pro Monat reicht damit für etwas mehr als hundert solcher Filme pro Monat, also für drei oder vier pro Tag. Ein Haushalt, der 4K-Inhalte mit der vier- bis achtfachen Bitrate abspielt, verbraucht das Kontingent deutlich schneller. Berücksichtigen Sie auch alle anderen Dienste, die Traffic von demselben Server nach außen übertragen, in diesem Budget. Dazu gehört auch ein selbst gehostetes RustDesk-Relay, das eine vollständige Remote-Desktop-Sitzung überträgt, sobald zwei Peers keine direkte Verbindung herstellen können.

Voraussetzungen

  • Ein frischer Ubuntu-24.04-KVM-VPS mit root- oder sudo-Zugriff sowie installiertem Docker und Compose-Plugin.
  • Ein Block-Storage-Volume für die Medien, dessen Größe an Ihre Bibliothek angepasst ist (siehe Größenplanung unten). Auf dem kleinen Root-Datenträger eines VPS sollten Ihre Filme nicht gespeichert werden.
  • Ein Domainname, wenn Sie öffentlichen HTTPS-Zugriff benötigen, oder ein WireGuard-VPN auf demselben VPS, wenn Sie das gesamte System lieber privat halten möchten.
  • Medien, die Sie rechtmäßig streamen dürfen, eigene Rips, eigene Aufnahmen und Dateien, deren Eigentümer Sie sind.

Zuerst den Blockspeicher einbinden

Hängen Sie das Volume im Panel Ihres Providers an. Ermitteln Sie es anschließend und binden Sie es ein. Lesen Sie den Gerätenamen aus lsblk ab. Er lautet beispielsweise /dev/sdb oder /dev/vdb, niemals jedoch die Root-Festplatte.

lsblk
sudo mkfs.ext4 /dev/sdb          # ONLY on a new, empty volume — this ERASES it
sudo mkdir -p /mnt/media
sudo blkid /dev/sdb              # copy the UUID shown for this device

Binden Sie das Volume anhand der UUID ein, nicht anhand von /dev/sdb. Die Laufwerksbuchstaben können sich nach einem Neustart ändern. Andernfalls können Sie versehentlich die falsche Festplatte formatieren oder einbinden. Fügen Sie eine Zeile zu /etc/fstab hinzu:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /mnt/media  ext4  defaults,nofail  0  2
sudo mount -a
df -h /mnt/media

nofail ist wichtig: Ohne diese Option startet der Server nicht mehr und wechselt in eine Emergency-Shell, wenn das Block-Volume einmal getrennt wird. Der häufigste Fehler besteht darin, mkfs.ext4 auf einem Volume auszuführen, das bereits Daten enthält. Dabei werden die Daten gelöscht. Formatieren Sie nur neue Volumes. Wenn die Festplatte bereits Ihre Bibliothek enthält, fahren Sie direkt mit der fstab-Zeile fort.

Jellyfin erwartet diese Medienstruktur

Jellyfin ordnet Metadaten anhand von Ordner- und Dateinamen zu. Bei einer falschen Struktur werden Filme als Dateien ohne Titel und Poster angezeigt, oder eine Folge wird der falschen Serie zugeordnet. Es gibt genau drei Regeln: Jeder Film liegt in einem eigenen Ordner Name (Year) und hat einen passenden Dateinamen; Staffeln werden als Season 01 und nicht als S01 benannt; Episodendateien verwenden S01E01, und Specials gehören in Season 00.

/mnt/media
├── Movies
│   ├── Blade Runner (1982)
│   │   └── Blade Runner (1982).mkv
│   └── Arrival (2016)
│       └── Arrival (2016).mkv
└── Shows
    └── Severance (2022)
        ├── Season 01
        │   ├── Severance - S01E01.mkv
        │   └── Severance - S01E02.mkv
        └── Season 00
            └── Severance - The Lexington Letter.mkv

Das (Year) bei Filmen ist keine Verzierung. Es unterscheidet Neuverfilmungen, damit der Matcher den richtigen Titel auswählt. Halten Sie Movies und Shows als separate Ordner der obersten Ebene vor, weil jeder Ordner zu einer Jellyfin-Bibliothek eines bestimmten Inhaltstyps wird. Eine Mischung verwirrt den Metadatenanbieter. Jellyfin kann problemlos einen dritten Ordner mit Fotos indizieren. Im Vergleich zu einem spezialisierten Fotoserver ist die Funktionalität jedoch eingeschränkt. Wenn Ihre Alben wichtig sind, geben Sie ihnen einen eigenen Server mit PhotoPrism oder Immich und verwenden Sie diesen Server nur für Filme und Serien.

Berechtigungen: Der häufigste Grund für leere Bibliotheken

Hier liegt ein verbreitetes Missverständnis vor, das schnell einen ganzen Abend kostet. Das offizielle jellyfin/jellyfin-Image berücksichtigt die Umgebungsvariablen PUID und PGID nicht. Diese gehören zum LinuxServer.io-Image (lscr.io/linuxserver/jellyfin). Beim offiziellen Image legen Sie den Benutzer mit dem Schlüssel user: in Compose fest. Wenn Sie ihn weglassen, läuft der Container als root. Unabhängig vom verwendeten Image gilt dieselbe Regel: Die uid/gid, unter der der Container läuft, muss jedes Medienverzeichnis lesen und durchlaufen können.

Wir verwenden die uid/gid 1000, also den ersten Benutzer ohne root-Berechtigungen auf einem unveränderten Ubuntu-System. Ermitteln Sie Ihre Werte und setzen Sie den Besitz:

id                                  # confirm your user is uid=1000 gid=1000
sudo chown -R 1000:1000 /mnt/media
sudo find /mnt/media -type d -exec chmod 755 {} \;
sudo find /mnt/media -type f -exec chmod 644 {} \;
mkdir -p ~/jellyfin/config ~/jellyfin/cache
sudo chown -R 1000:1000 ~/jellyfin

Verzeichnisse benötigen das Bit execute (das x in 755), nicht nur Leserechte. Ohne dieses Bit kann der Container das Verzeichnis nicht betreten, obwohl er dessen Namen auflisten kann. Die Ursache für eine vollständig leere Bibliothek ist häufig das übergeordnete Verzeichnis: Wenn die uid des Containers den Mount selbst nicht durchlaufen kann, erreicht sie /media/Movies oder /media/Shows nicht. Dann bleibt jede Bibliothek auf einmal leer, und im Log erscheint Access to the path ... is denied. Jedes einzelne Medienverzeichnis, das der Container nicht lesen kann, wird protokolliert und übersprungen. Eine Gruppe von Dateien, die als root kopiert wurde, verschwindet daher scheinbar still aus der Bibliothek. Deshalb ändern wir den Besitz rekursiv und setzen das execute-Bit für jedes Verzeichnis, statt nur ein einzelnes Verzeichnis zu korrigieren.

Die docker-compose-Datei

services:
  jellyfin:
    image: jellyfin/jellyfin:10
    container_name: jellyfin
    user: "1000:1000"
    restart: unless-stopped
    ports:
      - "127.0.0.1:8096:8096"
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /mnt/media:/media:ro
    environment:
      - JELLYFIN_PublishedServerUrl=https://jellyfin.example.com

Zeile für Zeile: user: "1000:1000" setzt tatsächlich die Dateiberechtigungen und entspricht damit dem weiter oben festgelegten Besitzer. /config enthält den gesamten Server, Konten, Bibliotheken, Metadaten und den Überwachungsstatus. Daher muss es beschreibbar sein und wird gesichert. /cache ist temporärer Arbeitsbereich. Der Medien-Mount ist absichtlich als :ro (nur lesbar) eingebunden: Jellyfin speichert Grafiken und Metadaten standardmäßig unter /config. Daher muss Jellyfin nie in Ihre Bibliothek schreiben. Der Nur-Lese-Zugriff schützt Ihre Dateien außerdem vor versehentlichem Löschen oder einem fehlerhaften Plugin. Der Port wird absichtlich an 127.0.0.1 gebunden. Die Webanmeldung von Jellyfin verwendet unverschlüsseltes HTTP. Deshalb veröffentlichen wir Port 8096 nie im öffentlichen Internet. JELLYFIN_PublishedServerUrl ist die Adresse, die der Server für die lokale automatische Erkennung bekannt gibt, also ein UDP-Broadcast im LAN. Clients über das Internet sehen diese Adresse daher nie und verwenden einfach die URL, die Sie in der Anwendung eingeben. Legen Sie die Adresse fest, die den Clients mitgeteilt werden soll. Auf entfernten Geräten müssen Sie diese URL voraussichtlich manuell eingeben.

Starten Sie den Stack aus dem Compose-Verzeichnis:

docker compose up -d
docker logs -f jellyfin

Erster Start: der Einrichtungsassistent und Ihre Mediatheken

Da der Port nur an localhost gebunden ist, greifen Sie über einen SSH-Tunnel von Ihrem Laptop auf den Assistenten zu, anstatt eine Lücke in der Firewall zu öffnen:

ssh -L 8096:127.0.0.1:8096 you@your-vps-ip

Rufen Sie nun http://localhost:8096 auf. Der Assistent führt Sie zunächst durch die Sprachauswahl und anschließend durch das Anlegen eines Administratorkontos mit einem starken Passwort. Dieses Konto verwaltet Ihren Server. Verwenden Sie daher kein Wegwerfpasswort erneut. Fügen Sie Ihre erste Mediathek hinzu: Wählen Sie als Inhaltstyp Movies, verweisen Sie auf /media/Movies (den Pfad innerhalb des Containers, nicht den Hostpfad), und wiederholen Sie den Vorgang mit Shows und /media/Shows. Schließen Sie den Assistenten ab. Jellyfin beginnt anschließend mit dem Scan. Bei einer kleinen Mediathek sollten innerhalb von ein bis zwei Minuten Poster und Titel angezeigt werden. Später können Sie Mediatheken unter Dashboard → Libraries hinzufügen oder bearbeiten. Mit Scan All Libraries erzwingen Sie einen erneuten Scan. Diese Poster machen auch ein alternatives Frontend interessant, sobald die Grundlagen funktionieren, denn Halcyon baut aus den bereits von Jellyfin abgerufenen Bildern dieselbe Mediathek als begehbare Videothek der 90er-Jahre neu auf.

Wenn Sie überhaupt eine Transcodierung verwenden, öffnen Sie Dashboard → Playback → Transcoding und setzen den temporären Transcodierungspfad auf /cache/transcodes. Dadurch werden die temporären Daten auf dem Cache-Volume abgelegt, statt /config aufzublähen. Lassen Sie die Hardwarebeschleunigung auf None eingestellt, da keine GPU für die Beschleunigung vorhanden ist.

Remotezugriff: TLS-Reverse-Proxy oder Zugriff über das VPN

Es gibt zwei sichere Möglichkeiten, Jellyfin von außerhalb zu erreichen. Eine unsichere Möglichkeit sollten Sie vermeiden. Die unsichere Variante besteht darin, Port 8096 direkt im Internet zu veröffentlichen. Die Anmeldung wird dann im Klartext übertragen, und innerhalb weniger Stunden beginnen Angriffe durch Ausprobieren vieler Passwörter auf den Port.

Option A: TLS-Reverse-Proxy. Betreiben Sie Jellyfin hinter Traefik mit automatischem TLS für Ihre Docker-Anwendungen auf einer Subdomain oder hinter nginx mit einem von Certbot ausgestellten Let's-Encrypt-Zertifikat. Jellyfin verwendet WebSockets für Echtzeitaktualisierungen. Der Proxy muss deshalb die Upgrade-Header weiterleiten. Traefik erledigt das automatisch. Bei nginx müssen Sie die Header explizit konfigurieren. Außerdem muss die Verbindung zum Upstream HTTP/1.1 verwenden, sonst findet das Upgrade nicht statt:

location / {
    proxy_pass http://127.0.0.1:8096;
    proxy_http_version 1.1;
    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 Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Setzen Sie JELLYFIN_PublishedServerUrl auf die Adresse https://. Dadurch kündigt die lokale automatische Erkennung die richtige URL an, und entfernte Apps verwenden die von Ihnen angegebene Adresse. Fügen Sie außerdem fail2ban zum Verlangsamen von Brute-Force-Versuchen gegen die Anmeldung hinzu. Sobald der Server öffentlich erreichbar ist, überwachen Sie die URL mit Uptime Kuma. So erfahren Sie von einem Ausfall, bevor Ihre Zuschauer ihn bemerken. Richten Sie die Benachrichtigungen auf einen selbst gehosteten ntfy-Server aus. Bei einer fehlgeschlagenen Prüfung erhalten Sie dann eine Push-Benachrichtigung auf dem Telefon, statt am nächsten Morgen eine E-Mail zu lesen. Wenn Sie eine Anmeldung im öffentlichen Internet bereitstellen, sollten Sie außerdem den restlichen Server prüfen. Verlassen Sie sich nicht darauf, dass nur Port 443 antwortet. open-kritt führt diesen Scan aus seinem eigenen Container auf demselben VPS aus.

Option B: Zugriff über ein VPN. Veröffentlichen Sie Port 8096 überhaupt nicht. Greifen Sie nur über einen WireGuard-Tunnel auf Jellyfin zu, der auf demselben Server terminiert wird. Für einen Haushalt ist dies die einfachste sichere Lösung: kein Zertifikat, keine öffentliche Erreichbarkeit und keine Angriffsfläche für Brute-Force-Versuche. Binden Sie den Container an die Tunneladresse oder an localhost und stellen Sie die Verbindung über das VPN her. Weitere Informationen zum Tunnel selbst finden Sie unter WireGuard-VPN-Einrichtung für einen privaten VPS.

Speicherplanung und Backups

Planen Sie nach Qualität, nicht nach Dateianzahl. Komprimierte Filme in 1080p benötigen jeweils 4-15 GB, ein Remux in 1080p 20-40 GB und eine Staffel einer 1080p-Serie 15-40 GB. Filme in 4K benötigen jeweils 40-100 GB. Eine Bibliothek mit einigen hundert Filmen und mehreren Serien benötigt ein Volume mit 2-4 TB. Es ist günstiger, das Block-Volume einmal großzügig zu dimensionieren, als die Daten später zu migrieren.

/config enthält den vollständigen Serverzustand. Daher müssen Sie genau dieses Verzeichnis sichern. Erstellen Sie einen Snapshot oder stoppen Sie den Dienst und packen Sie das Verzeichnis mit tar. Bewahren Sie die Kopie außerhalb des Servers auf:

docker compose down
sudo tar czf jellyfin-config-$(date +%F).tgz -C ~/jellyfin config
docker compose up -d

/cache und der Transcode-Ordner können jederzeit neu erstellt werden. Die Medien auf /mnt/media sichern Sie separat oder Sie akzeptieren, dass Sie sie bei Bedarf erneut rippen müssen. Wegen der Größe entscheiden sich die meisten für die zweite Option. Upgrades erfolgen über docker compose pull && docker compose up -d. Das oben verwendete Tag :10 bleibt innerhalb der Hauptversion 10.x. Der Wechsel zur nächsten Hauptversion erfordert daher eine bewusste Änderung des Tags. Lesen Sie vorher die Jellyfin-Release-Notes, da bei Hauptversionen Migrationen des Bibliotheksschemas stattfinden. Ein festgelegtes Tag plus ein gesichertes Zustandsverzeichnis ist das vollständige Vorgehen für jeden dauerhaft laufenden Container. Dasselbe Muster sorgt dafür, dass der Zustand und die Zeitpläne eines selbst gehosteten Agents über Reboots hinweg erhalten bleiben.

Fehlerbilder mit den angezeigten Meldungen

Die Bibliothek ist nach einem Scan leer. Das Protokoll unter Dashboard → Logs (oder ~/jellyfin/config/log/log_*.log) zeigt:

System.UnauthorizedAccessException: Access to the path '/media/Movies' is denied.

Die UID des Containers kann diesen Pfad nicht lesen. Ursache sind Medien, die root oder einer anderen UID als dem Wert user: gehören, ein Verzeichnis ohne Execute-Bit oder ein übergeordneter Mount, der für diese UID selbst nicht durchsuchbar ist. Behebung: chown -R 1000:1000 /mnt/media, Verzeichnisse 755, Dateien 644 setzen und anschließend erneut scannen.

Bei der Wiedergabe ist die CPU voll ausgelastet und der Stream puffert. docker stats jellyfin zeigt eine CPU-Auslastung nahe 100 % multipliziert mit der Anzahl der Kerne. Dashboard → Playback führt die Sitzung als Transcode mit einer Geschwindigkeit unter 1.0x auf. Der Client verwendet keine direkte Wiedergabe. Daher transkodiert die VPS langsamer als in Echtzeit und fällt zurück. Ursache sind ein nicht unterstützter Codec oder Container, das Einbrennen von Untertiteln oder HDR-Tonemapping. Behebung: Einen Client mit direkter Wiedergabe verwenden, Quellen in H.264/AAC vorhalten, Text-Untertitel (SRT) statt Bild-Untertitel (PGS/VOBSUB) verwenden, die ein Einbrennen erzwingen, und 4K-HDR auf einem Gerät ohne GPU-Transcoding grundsätzlich vermeiden.

„Keine kompatiblen Streams verfügbar.“ Die vollständige Meldung lautet normalerweise „Dieser Client ist mit den Medien nicht kompatibel, und der Server sendet kein kompatibles Medienformat.“ Der Client hat die Quelle abgelehnt, und auch die ersatzweise gestartete Transkodierung konnte nicht beginnen. Ursache sind ein fehlerhafter ffmpeg-Befehl, eine nicht lesbare Datei oder ein Benutzerprofil, das die Videokonvertierung blockiert. Behebung: Die ffmpeg-Zeile unter Dashboard → Logs lesen, prüfen, ob die Datei überhaupt abgespielt werden kann, bei Verwendung von Transcodierung die Wiedergabeberechtigungen des Benutzers prüfen und einen zweiten Client testen, um browserspezifische Codec-Probleme auszuschließen.

Filme haben kein Poster oder das falsche Poster. Die Metadaten wurden nicht korrekt zugeordnet. Ursache sind ein Film, der nicht in seinem eigenen Name (Year)-Verzeichnis liegt, ein nach S01 statt nach Season 01 benanntes Staffelverzeichnis, Episoden, die nicht im Format S01E01 vorliegen, oder ein fehlendes Jahr. Behebung: Das Verzeichnislayout wie oben beschrieben umbenennen und anschließend Refresh metadata → Replace all verwenden. Alternativ mit Identify bei einem einzelnen Eintrag den korrekten TMDB-/TVDB-Eintrag festlegen.

FAQ

Kann ein VPS Videos ohne GPU transkodieren?

Ja, aber dann ausschließlich über die CPU, und das ist ressourcenintensiv. Ein einzelner 1080p-Software-Transkodierungsvorgang kann mehrere vCPUs vollständig auslasten. 4K oder HEVC kann meist nicht in Echtzeit verarbeitet werden, sodass die Wiedergabe puffert. Am besten vermeiden Sie die Transkodierung: Halten Sie Ihre Bibliothek in H.264/AAC vor und verwenden Sie Client-Apps mit Direct Play. Dann streamt der VPS lediglich Daten. Mieten Sie nur dann eine GPU-Instanz, wenn Sie tatsächlich Transkodierung während der Wiedergabe benötigen.

Warum ist meine Jellyfin-Bibliothek nach einem Scan leer?

Fast immer sind fehlende Berechtigungen die Ursache. Das offizielle jellyfin/jellyfin-Image läuft mit dem von Ihnen gesetzten user: oder als root. Wenn dieser Benutzer die Dateien nicht lesen kann, protokolliert der Scan Access to the path ... is denied und überspringt die Dateien. Korrigieren Sie den Eigentümer mit chown -R 1000:1000 /mnt/media, setzen Sie für Verzeichnisse das Execute-Bit mit 755 und starten Sie den Scan erneut. Prüfen Sie auch das übergeordnete Verzeichnis. Wenn die Benutzer-ID des Containers /mnt/media selbst nicht durchlaufen kann, erreicht sie die Bibliotheksverzeichnisse nicht und die Bibliothek bleibt vollständig leer. Die zweithäufigste Ursache ist eine Verzeichnisstruktur, die nicht den Erwartungen von Jellyfin entspricht.

Wie greife ich remote und sicher auf Jellyfin zu?

Es gibt zwei gute Optionen. Betreiben Sie Jellyfin hinter einem TLS-Reverse-Proxy auf einer Subdomain. Dadurch werden Anmeldung und Stream verschlüsselt. Ergänzen Sie fail2ban. Veröffentlichen Sie niemals den unverschlüsselten Port 8096, da er Ihr Passwort im Klartext überträgt. Alternativ können Sie Jellyfin vollständig privat halten und ausschließlich über ein VPN darauf zugreifen. Für einen Haushalt ist das die einfachste sichere Lösung. Konfigurieren Sie die Apps direkt mit der öffentlichen Adresse. Autodiscovery verwendet einen Broadcast im lokalen Netzwerk und erreicht daher keine Clients, die über das Internet zugreifen.

Wie viel Speicherplatz und Bandbreite benötigt ein Jellyfin-VPS?

Der Speicherbedarf hängt von der Qualität ab: Planen Sie 4-15 GB pro komprimiertem 1080p-Film, 20-40 GB pro Remux und 40-100 GB für 4K ein. Die meisten Bibliotheken benötigen daher ein Block-Volume mit 2-4 TB. Der Bandbreitenbedarf wird durch die Bitrate von Direct Play bestimmt: 8-12 Mbps pro 1080p-Stream und deutlich mehr für 4K. Prüfen Sie daher, ob die Portgeschwindigkeit für die Anzahl gleichzeitiger Zuschauer ausreicht, und behalten Sie das monatliche Transfervolumen im Blick. Planen Sie Transkodierung ein, benötigen Sie zusätzliche CPU-Reserven. Bei Direct Play sollten Sie der Bandbreite gegenüber zusätzlichen Kernen den Vorrang geben.

Jellyfin selbst ist freie Open-Source-Software. Sein Betrieb ist vollständig legal. Entscheidend ist der Inhalt: Streamen Sie nur Medien, die Ihnen gehören oder für deren Nutzung Sie eine Lizenz besitzen. Dazu gehören eigene Disc-Rips, Aufnahmen oder Dateien, zu deren Nutzung Sie berechtigt sind. Jellyfin enthält keine Medien und bietet keine Möglichkeit, Medien zu beziehen. Es ist ein Player für eine Bibliothek, die Sie bereits besitzen.