Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 01.06.2026 · 10 min Lesezeit

Jellyfin auf Synology NAS mit Intel-QuickSync-Hardware-Transcoding im Container Manager einrichten

Jellyfin als freier Media-Server auf der Synology: Diese Anleitung zeigt das Setup im Container Manager mit Compose-Projekt und Intel-Quick-Sync-Hardware-Transcoding über /dev/dri, inklusive Gruppenrechten, QSV/VAAPI-Aktivierung und Hinweisen zu geeigneten NAS-Modellen.

Geprüft am 09.10.2026 · für Jellyfin 12.2

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Schwarzes NAS mit zwei Laufwerksschächten auf einem Holz-Sideboard im Wohnzimmer, im Hintergrund ein ausgeschalteter Fernseher

Ein eigener Media-Server auf der Synology macht die NAS zur Streaming-Zentrale für Filme, Serien und Musik, ohne Cloud und ohne Abo. Jellyfin ist die freie Alternative zu Plex und Emby und läuft im Container Manager. Der entscheidende Punkt für flüssiges Streaming ist das Hardware-Transcoding: Kann ein Client ein Format nicht direkt abspielen, muss der Server den Stream in Echtzeit umrechnen. Ohne Hardware-Unterstützung erledigt das die CPU, und schwache NAS-CPUs kommen dabei schnell an die Grenze. Mit der integrierten Intel-Grafik (Intel Quick Sync Video) über das Gerät /dev/dri übernimmt die iGPU diese Arbeit und transcodiert mehrere 1080p-Streams parallel, während die CPU kaum belastet wird. Diese Anleitung richtet sich an Admins und ambitionierte Heimanwender, die Jellyfin per Compose-Projekt aufsetzen und das Quick-Sync-Transcoding korrekt durchreichen wollen.

Was ist Jellyfin und warum Hardware-Transcoding?

Jellyfin ist ein quelloffener Media-Server, der Ihre Medienbibliothek per Web-Oberfläche und über Apps für Smart-TVs, Smartphones, Kodi und andere Geräte bereitstellt. Es gibt keine Lizenzkosten, keine Account-Pflicht bei einem Hersteller und keine künstlichen Funktionssperren. Alles läuft auf Ihrer eigenen Hardware.

Transcoding bedeutet, dass Jellyfin einen Videostream in ein Format umwandelt, das der jeweilige Client abspielen kann, etwa weil das Endgerät den Codec nicht unterstützt, die Bandbreite zu gering ist oder Untertitel eingebrannt werden müssen. Diese Umrechnung ist rechenintensiv. Eine Celeron- oder Pentium-CPU einer NAS schafft per Software oft nur einen einzigen 1080p-Stream, und das bei hoher Auslastung. Intel Quick Sync Video (QSV) ist ein eigener Video-Encoder und -Decoder in der integrierten Intel-Grafik. Reicht man das Gerät /dev/dri in den Container durch, nutzt Jellyfin diese Hardware-Einheit und transcodiert mehrere Streams gleichzeitig bei geringer CPU-Last.

Wichtig vorab: Das funktioniert nur auf Synology-Modellen mit einer Intel-CPU mit integrierter Grafik. ARM-basierte Modelle (etwa viele j- und Value-Modelle) und Modelle mit AMD-Ryzen-CPU ohne Grafikeinheit (etwa DS923+ oder DS1522+) besitzen kein Quick Sync und können ausschließlich per Software transcodieren.

Voraussetzungen

  1. Synology NAS mit Intel-CPU mit iGPU (Celeron J4025/J4125 oder vergleichbar mit Quick Sync), z. B. DS220+, DS224+, DS423+, DS720+ oder DS920+, mit mindestens 2 CPU-Kernen und 4 GB RAM. Die Jellyfin-Dokumentation empfiehlt, dem Container alle CPU-Ressourcen und mindestens 4 GB RAM zuzugestehen. ARM- und AMD-Modelle sind für Hardware-Transcoding nicht geeignet.
  2. DSM 7.2 oder neuer mit installiertem Paket Container Manager (Nachfolger des alten Docker-Pakets).
  3. Ein Konto mit Administrator-Rechten und Zugriff auf File Station.
  4. Freier Host-Port 8096 (HTTP-Web-UI). Optional 8920 (HTTPS) und 7359/udp (automatische Erkennung im LAN).
  5. Ein vorhandener Medienordner auf der NAS, z. B. ein freigegebener Ordner /volume1/media mit Unterordnern für Filme und Serien. Für Konfiguration, Metadaten und Cache sollten einige GB freier Speicher bereitstehen.
  6. Einmalig SSH-Zugang, um die Gruppen-ID des Grafikgeräts auszulesen (Schritt 2). DSM zeigt diese Information in der Oberfläche nicht an.

Schritt 1: Ordnerstruktur in der File Station anlegen

Legen Sie die Datenordner für Konfiguration und Cache an. Bewährt hat sich ein zentraler docker-Ordner auf Volume 1.

  1. Öffnen Sie die File Station.
  2. Erstellen Sie, falls noch nicht vorhanden, den freigegebenen Ordner docker auf /volume1.
  3. Legen Sie darin den Ordner jellyfin an und darin zwei Unterordner: config und cache.

Sie erhalten diese Struktur:

/volume1/docker/jellyfin/config
/volume1/docker/jellyfin/cache

Der Medienordner liegt bewusst getrennt davon (z. B. /volume1/media) und wird gleich nur lesend (read-only) eingebunden, damit Jellyfin Ihre Dateien nicht verändern kann.

Verifizieren: In der File Station existieren docker/jellyfin/config und docker/jellyfin/cache.

Schritt 2: Gruppen-ID des render-Geräts ermitteln

Damit der Container über die iGPU transcodieren darf, braucht er Zugriff auf das Gerät /dev/dri/renderD128. Dieses Gerät gehört einer bestimmten Gruppe, deren numerische ID je nach System abweichen kann. Der Gruppenname kann je nach System abweichen, entscheidend ist die Zahl. Sie geben die Gruppen-ID später in der Compose-Datei per group_add mit.

Aktivieren Sie kurzzeitig SSH (Systemsteuerung → Terminal & SNMP), verbinden Sie sich und lassen Sie sich die Geräte mit numerischen IDs anzeigen:

ls -ln /dev/dri

Die vierte Spalte in der Zeile renderD128 ist die gesuchte Gruppen-ID (GID). Auf vielen DSM-7-Systemen ist das 937, sie kann aber abweichen. Notieren Sie den Wert. SSH können Sie danach wieder abschalten. Nach dem Start lässt sich die Sicht aus dem Container prüfen:

sudo docker exec -it jellyfin ls -ln /dev/dri

Verifizieren: Die Ausgabe von ls -ln /dev/dri enthält eine Zeile renderD128. Fehlt sie, hat Ihr Modell keine nutzbare iGPU.

Schritt 3: docker-compose.yml vorbereiten

Der Container-Assistent des Container Managers bietet das Durchreichen von Geräten nicht an. Deshalb ist hier ein Compose-Projekt nötig. Erstellen Sie die folgende docker-compose.yml. Passen Sie den Medienpfad und gegebenenfalls die GID an.

services:
  jellyfin:
    image: jellyfin/jellyfin:12.2
    container_name: jellyfin
    restart: unless-stopped
    network_mode: bridge
    ports:
      - "8096:8096"
      - "8920:8920"
      - "7359:7359/udp"
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "937"
    volumes:
      - /volume1/docker/jellyfin/config:/config
      - /volume1/docker/jellyfin/cache:/cache
      - /volume1/media:/media:ro
    environment:
      - TZ=Europe/Berlin

Hinweise zur Konfiguration:

  1. image: fest auf Version 12.2 geschrieben (Stand der Prüfung). Der Wechsel von 12.1 auf 12.2 ist ein reines Fehlerbehebungs-Update ohne Änderung an Compose oder Einstellungen; im Test lief er mit dieser Konfiguration ohne Anpassung durch. Die aktuellen Tags finden Sie auf Docker Hub unter jellyfin/jellyfin. Mit :latest würde ein Neuaufbau ungeplant eine neue Hauptversion ziehen.
  2. devices: /dev/dri:/dev/dri reicht die Intel-Grafik in den Container. Das ist der Kern des Hardware-Transcodings.
  3. group_add setzt die in Schritt 2 ermittelte GID. Stimmt sie nicht, fehlen dem Container die Rechte am Gerät, und das Transcoding scheitert oder fällt auf Software zurück.
  4. Der Medienordner ist mit :ro nur lesend eingebunden. Jellyfin liest Ihre Dateien, kann sie aber nicht ändern oder löschen.
  5. TZ setzt die Zeitzone, damit „zuletzt hinzugefügt“ und Zeitstempel stimmen.

Verifizieren: Die Datei enthält Ihre GID unter group_add und den tatsächlichen Pfad Ihres Medienordners.

Schritt 4: Projekt im Container Manager anlegen

  1. Speichern Sie die docker-compose.yml über die File Station im Ordner /volume1/docker/jellyfin oder halten Sie den Inhalt zum Einfügen bereit.
  2. Öffnen Sie den Container Manager und wechseln Sie in den Bereich Projekt.
  3. Klicken Sie auf Erstellen.
  4. Vergeben Sie als Projektnamen jellyfin und wählen Sie als Pfad den Ordner /volume1/docker/jellyfin.
  5. Verwenden Sie die vorhandene docker-compose.yml oder fügen Sie den YAML-Inhalt aus Schritt 3 direkt in den Editor ein.
  6. Bestätigen Sie die folgenden Dialoge und starten Sie das Projekt mit Fertig.

Der Container Manager lädt nun das Image jellyfin/jellyfin:12.2 herunter und startet den Container.

Verifizieren: Im Bereich Container erscheint jellyfin nach kurzer Zeit als „Wird ausgeführt“, und im Protokoll des Containers stehen keine Fehler zu /dev/dri.

Schritt 5: Jellyfin im Browser einrichten

Öffnen Sie die Web-Oberfläche unter http://NAS-IP:8096 (ersetzen Sie NAS-IP durch die IP-Adresse Ihrer Synology). Der Einrichtungsassistent führt durch diese Punkte:

  1. Sprache wählen (Deutsch).
  2. Erstes Benutzerkonto anlegen: Wählen Sie einen Namen und ein starkes Passwort. Dies ist Ihr Administrator-Konto.
  3. Medienbibliotheken hinzufügen: Klicken Sie auf „Medienbibliothek hinzufügen“, wählen Sie den Inhaltstyp (z. B. Filme) und als Ordner den Pfad /media bzw. den passenden Unterordner. Wichtig ist hier der Pfad innerhalb des Containers, also unterhalb von /media, nicht der Synology-Pfad.
  4. Bevorzugte Metadaten-Sprache und Land einstellen.
  5. Den Assistenten abschließen und anmelden.

Jellyfin scannt nun die Bibliothek und lädt Cover sowie Metadaten. Je nach Größe dauert das eine Weile.

Verifizieren: Nach der Anmeldung erscheinen auf der Startseite die ersten Filme oder Serien mit Covern.

Schritt 6: Hardware-Transcoding aktivieren

Jetzt aktivieren Sie Quick Sync. Melden Sie sich als Administrator an und öffnen Sie im Dashboard den Bereich Wiedergabe → Transkodierung (englische Oberfläche: Playback → Transcoding).

  1. Setzen Sie „Hardwarebeschleunigung“ auf Intel QuickSync (QSV). Auf Intel-Grafik vor Broadwell (5. Core-Generation) wählen Sie stattdessen VAAPI, weil QSV unter Linux erst ab Broadwell unterstützt wird.
  2. Prüfen Sie als QSV-Gerät bzw. VA-API-Gerät den Pfad /dev/dri/renderD128.
  3. Aktivieren Sie die Hardware-Dekodierung für die Codecs, die Ihre iGPU unterstützt. Die Celeron-CPUs der Gemini-Lake-Generation (J4025, J4125) beherrschen laut Jellyfin-Dokumentation H.264 und HEVC einschließlich 10 Bit, aber kein AV1. Codecs, die Ihre GPU nicht beherrscht, lassen Sie deaktiviert.
  4. Optional: „Hardwarekodierung aktivieren“ einschalten.
  5. Speichern.

Ist die GID korrekt gesetzt, arbeitet das Transcoding jetzt in Hardware. Stimmen die Rechte nicht, bricht die Wiedergabe beim ersten Transcode mit einem Fehler ab. Dann gehen Sie zurück zu Schritt 2 und tragen die richtige GID per group_add nach.

Hinweis zur Zukunftsfähigkeit: Die Jellyfin-Dokumentation weist darauf hin, dass ältere Intel-Generationen bis einschließlich Ice Lake, Jasper Lake und Elkhart Lake die QSV-Unterstützung unter Linux verlieren, weil Intel die zugehörige MediaSDK-Laufzeit nicht mehr pflegt. Betrifft das Ihre NAS, stellen Sie auf VAAPI um, sobald QSV Fehler meldet.

Verifizieren: Nach dem Speichern zeigt die Seite keine Fehlermeldung, und beim erneuten Öffnen steht die Hardwarebeschleunigung weiterhin auf Intel QuickSync (QSV).

Schritt 7: Hardware-Transcoding verifizieren

Ob Quick Sync wirklich greift, prüfen Sie am einfachsten unter Last:

  1. Starten Sie ein Video, das ein Transcoding erzwingt, etwa indem Sie in der Wiedergabe eine niedrigere Qualitätsstufe (geringere Bitrate) als das Original wählen.
  2. Öffnen Sie im Dashboard die Ansicht der aktiven Geräte und Streams. Beim laufenden Stream zeigt das Info-Symbol die Wiedergabemethode „Transcoding“ und den verwendeten Codec, bei Hardware-Nutzung mit dem Hinweis auf QSV bzw. VAAPI.
  3. Gegenprobe an der NAS: Bleibt die CPU-Auslastung im Ressourcen-Monitor von DSM trotz laufendem Transcode niedrig, arbeitet die iGPU. Steigt die CPU auf nahezu 100 Prozent, läuft das Transcoding in Software. Dann prüfen Sie die Rechte und die Codec-Einstellung.

Verifizieren: Während eines Transcodes eines 1080p-Films bleibt die CPU-Auslastung im Ressourcen-Monitor deutlich unter 50 Prozent, und das Video läuft ohne Ruckeln.

Updates und Wartung

Updates spielen Sie über den Container Manager ein:

  1. Lesen Sie die Release Notes auf GitHub. Beim Sprung auf eine neue Hauptversion (etwa von 10.11 auf 12.0) ändert Jellyfin die Datenbank. Ein Zurück ist dann nur über ein Backup möglich, und nach dem Update ist ein vollständiger Bibliotheksscan nötig.
  2. Sichern Sie den Ordner config (siehe unten).
  3. Tragen Sie in der docker-compose.yml die neue Version ein, stoppen Sie das Projekt im Bereich Projekt und wählen Sie Aktion → Erstellen. Der Container Manager lädt das neue Image und baut den Container neu.

Da die gesamte Konfiguration im eingebundenen Ordner /config liegt, bleiben Benutzer, Bibliotheken und Einstellungen über Updates hinweg erhalten.

Backup

Sichern Sie den Ordner /volume1/docker/jellyfin/config, er enthält die komplette Jellyfin-Konfiguration samt Datenbank. Nehmen Sie diesen Pfad in Hyper Backup auf, dann lassen sich Benutzer und Bibliotheken im Ernstfall wiederherstellen. Für eine konsistente Sicherung stoppen Sie den Container vorher kurz oder planen das Backup in eine Zeit ohne Wiedergabe und Scans. Der cache-Ordner muss nicht gesichert werden, er wird automatisch neu erzeugt. Die eigentlichen Mediendateien sichern Sie ohnehin separat über Ihre bestehende Backup-Strategie.

Troubleshooting

  1. Transcoding nutzt weiter die CPU: Falsche oder fehlende GID. Mit ls -ln /dev/dri die GID von renderD128 ermitteln, in der Compose-Datei unter group_add eintragen und das Projekt neu erstellen.
  2. Wiedergabe bricht mit Fehler ab: Ein aktivierter Codec wird von der iGPU nicht unterstützt. Deaktivieren Sie in den Transkodierungs-Einstellungen die fraglichen Codecs (häufig AV1 auf älteren Celeron-Modellen).
  3. Gerät /dev/dri fehlt im Container: Prüfen Sie, ob die devices-Zeile in der Compose-Datei vorhanden ist und ob Ihr NAS-Modell überhaupt eine Intel-iGPU besitzt.
  4. Port 8096 belegt: Einen anderen Host-Port zuordnen, z. B. "8097:8096", und die Web-UI dann unter diesem Port aufrufen.
  5. Medienordner leer in Jellyfin: Beim Hinzufügen der Bibliothek den Container-Pfad unterhalb von /media wählen, nicht den Synology-Pfad. Prüfen Sie auch den Quellpfad im Volume-Eintrag auf Tippfehler.
  6. Apps im LAN finden den Server nicht automatisch: Port 7359/udp für die automatische Erkennung freigeben oder in der App die NAS-IP samt Port 8096 manuell eintragen.

Fazit

Mit dem Compose-Projekt im Container Manager läuft Jellyfin auf der Synology, und das Intel-Quick-Sync-Transcoding über /dev/dri ist aktiv. Das Ergebnis ist ein kostenfreier Media-Server, der dank iGPU mehrere parallele Streams transcodiert, ohne die NAS-CPU zu überlasten. Entscheidend bleibt die korrekte Gruppen-ID: Stimmt sie, läuft das Transcoding zuverlässig in Hardware. Beachten Sie, dass die Jellyfin-Dokumentation vorgefertigte NAS-Geräte grundsätzlich als eher leistungsschwach einstuft. Wer ein ARM- oder AMD-Modell besitzt, kann Jellyfin trotzdem betreiben, transcodiert dann aber rein in Software und sollte möglichst Formate nutzen, die die Clients direkt abspielen.

Jellyfin ohne NAS auf einem Linux-Server beschreibt die Anleitung Jellyfin mit Docker. Wünsche Ihrer Nutzer nach neuen Filmen und Serien verwalten Sie mit Jellyseerr auf dem Synology NAS.

Weitere Anleitungen in den Kategorien Synology / NAS und Docker.

Quellen: Jellyfin Docs: Container Installation, Jellyfin Docs: Intel Hardware Acceleration, Jellyfin Docs: Synology, Jellyfin Releases (GitHub)