Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 01.06.2026 · 8 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 komplette Setup im Container Manager mit Compose-Projekt und Intel-QuickSync-Hardware-Transcoding über /dev/dri - inklusive render-Rechte, VAAPI/QSV-Aktivierung und Hinweisen zu kompatiblen NAS-Modellen.

Illustration einer Synology-NAS mit Jellyfin-Medienserver, moderner Streaming-Oberfläche und vernetzten Geräten wie TV, Tablet und Smartphone in einer stilvollen Homelab-Umgebung.

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

Was ist Jellyfin und warum Hardware-Transcoding?

Jellyfin ist ein quelloffener Media-Server, der deine Medienbibliothek per Web-Oberfläche und über Apps für Smart-TVs, Smartphones, Kodi und Co. bereitstellt. Es gibt keine Lizenzkosten, keine Account-Pflicht bei einem Hersteller und keine künstlichen Funktionssperren - alles läuft auf deiner 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 sehr rechenintensiv. Eine Celeron- oder Pentium-CPU einer NAS schafft per Software (also rein über die CPU) oft nur einen einzigen 1080p-Stream - und das mit hoher Auslastung. Intel QuickSync (QSV) ist ein dedizierter Video-Encoder/-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 minimaler CPU-Last.

Wichtig vorab und ehrlich gesagt: Das funktioniert nur auf Synology-Modellen mit einer Intel-CPU mit integrierter Grafik. ARM-basierte Modelle (etwa viele DS-j- und Wert-Modelle) besitzen kein QuickSync und können ausschließlich per Software transcodieren.

Voraussetzungen

  1. Synology NAS mit Intel-CPU mit iGPU (Celeron/Pentium mit QuickSync), z. B. DS220+, DS224+, DS920+, DS923+ und vergleichbare Plus-Modelle. ARM-Modelle sind nicht geeignet.
  2. DSM 7.2 oder neuer mit installiertem Paket Container Manager (löst das alte Docker-Paket ab).
  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 (Auto-Discovery im LAN).
  5. Ein vorhandener Medienordner auf der NAS, z. B. eine freigegebene Ablage /volume1/media mit Unterordnern für Filme und Serien.
  6. Optional SSH-Zugang, um die Gruppen-ID des render-Geräts auszulesen.

Schritt 1: Ordnerstruktur in der File Station anlegen

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

  1. Öffne die File Station.
  2. Erstelle - falls noch nicht vorhanden - den Ordner docker auf /volume1.
  3. Lege darin den Ordner jellyfin an und darin zwei Unterordner: config und cache.

Du erhältst 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 deine Dateien nicht verändern kann.

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. Unter DSM gehört dieses Gerät einer bestimmten Gruppe, deren ID je nach System abweichen kann. Du gibst diese Gruppen-ID später im Compose per group_add mit.

Wenn SSH aktiviert ist, verbinde dich und ermittle die ID:

ls -l /dev/dri
getent group | grep -i render

Notiere dir die numerische Gruppen-ID (GID) des render-Geräts - oft ist das 937, kann aber abweichen. Hast du kein SSH, kannst du den ersten Start zunächst ohne group_add ausprobieren; bei Rechteproblemen reichst du die GID nach. Alternativ prüfst du die Rechte nach dem Start direkt im Container:

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

Schritt 3: docker-compose.yml vorbereiten

Der Container Manager bietet das Durchreichen von Geräten in der grafischen Oberfläche nicht direkt an - deshalb ist hier ein Compose-Projekt nötig. Erstelle die folgende docker-compose.yml. Passe den Medienpfad und gegebenenfalls die render-GID an.

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    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. devices: /dev/dri:/dev/dri reicht die komplette Intel-Grafik in den Container - das ist der Kern des Hardware-Transcodings.
  2. group_add setzt die in Schritt 2 ermittelte render-GID. Stimmt sie nicht, bleibt das Gerät ohne Schreib-/Leserechte und das Transcoding fällt auf Software zurück.
  3. Der Medienordner ist mit :ro read-only gemountet - Jellyfin liest deine Dateien, kann sie aber nicht ändern oder löschen.
  4. TZ setzt die Zeitzone, damit "zuletzt hinzugefügt" und Zeitstempel korrekt sind.
  5. Für den Produktivbetrieb solltest du statt :latest einen festen Versions-Tag pinnen, damit ein automatisches Update den Stack nicht unbemerkt verändert.

Schritt 4: Projekt im Container Manager anlegen

  1. Speichere die docker-compose.yml über die File Station im Ordner /volume1/docker/jellyfin ab - oder halte ihren Inhalt zum Einfügen bereit.
  2. Öffne den Container Manager und wechsle in den Bereich Projekt.
  3. Klicke auf Erstellen.
  4. Vergib als Projektnamen jellyfin und wähle als Pfad den Ordner /volume1/docker/jellyfin.
  5. Wähle die Quelle "Bestehende docker-compose.yml verwenden" - oder füge den YAML-Inhalt aus Schritt 3 direkt in den Editor ein.
  6. Bestätige die folgenden Dialoge und starte das Projekt mit Fertig.

Der Container Manager lädt nun das Image jellyfin/jellyfin:latest herunter und startet den Container. Im Bereich Container sollte jellyfin kurz darauf als laufend ("running") erscheinen.

Schritt 5: Jellyfin im Browser einrichten

Öffne die Web-Oberfläche unter http://NAS-IP:8096 (ersetze NAS-IP durch die IP-Adresse deiner Synology). Der Einrichtungsassistent führt dich durch:

  1. Sprache wählen (Deutsch).
  2. Erstes Benutzerkonto anlegen - wähle einen Namen und ein starkes Passwort. Dies ist dein Administrator-Konto.
  3. Medienbibliotheken hinzufügen: Klicke auf "Medienbibliothek hinzufügen", wähle 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 einen Moment.

Schritt 6: Hardware-Transcoding aktivieren

Jetzt aktivierst du QuickSync. Melde dich als Administrator an und öffne Dashboard > Wiedergabe (im englischen UI: Playback / Transcoding).

  1. Setze "Hardwarebeschleunigung" auf Intel QuickSync (QSV). Auf älteren Intel-Generationen (vor Broadwell) wählst du stattdessen VAAPI.
  2. Prüfe als VAAPI-Gerät bzw. QSV-Gerät den Pfad /dev/dri/renderD128.
  3. Aktiviere die Hardware-Decodierung für die Codecs, die deine iGPU unterstützt (typisch H.264/AVC und HEVC/H.265; je nach Generation auch VP9 und AV1). Codecs, die deine GPU nicht beherrscht, lass deaktiviert.
  4. Optional: "Hardware-Encoding aktivieren" einschalten und "Untertitel hardwarebeschleunigt einbetten" prüfen.
  5. Speichern.

Wenn die render-GID korrekt gesetzt ist, ist das Transcoding nun aktiv. Stimmen die Rechte nicht, meldet Jellyfin beim Speichern oder beim ersten Transcode einen Fehler - dann zurück zu Schritt 2 und die richtige GID per group_add nachtragen.

Schritt 7: Hardware-Transcoding verifizieren

Ob QuickSync wirklich greift, prüfst du am einfachsten unter Last:

  1. Starte ein Video, das ein Transcoding erzwingt - etwa indem du in der Wiedergabe eine niedrigere Qualitätsstufe (geringere Bitrate) als das Original wählst.
  2. Öffne im Dashboard die Ansicht der aktiven Streams. Bei aktivem Transcode steht dort "Transcoding" mit dem Zusatz, dass Hardware genutzt wird (z. B. "(hw)" am Codec).
  3. Gegenprobe an der NAS: Bleibt die CPU-Auslastung im Ressourcen-Monitor von DSM trotz laufendem Transcode niedrig, arbeitet die iGPU. Schiesst die CPU auf nahezu 100 Prozent hoch, läuft das Transcoding noch in Software - dann sind die render-Rechte oder die Codec-Einstellung zu prüfen.

Updates und Wartung

Updates erledigst du komfortabel über den Container Manager:

  1. Im Bereich Projekt das Projekt jellyfin öffnen.
  2. Auf Erstellen/Aufbauen klicken bzw. das Image neu herunterladen lassen und den Stack neu starten - der Container Manager zieht dann die aktuelle Version von jellyfin/jellyfin:latest.

Da die gesamte Konfiguration im gemounteten Ordner /config liegt, bleiben Benutzer, Bibliotheken und Einstellungen über Updates hinweg erhalten. Für planbaren Betrieb empfiehlt es sich, einen festen Versions-Tag zu pinnen und Updates bewusst durchzuführen, statt blind auf :latest zu setzen.

Backup

Sichere den Ordner /volume1/docker/jellyfin/config - er enthält deine komplette Jellyfin-Konfiguration. Nimm diesen Pfad in Hyper Backup auf, dann lassen sich Benutzer und Bibliotheken im Ernstfall wiederherstellen. Der cache-Ordner ist nicht sicherungswürdig (wird automatisch neu erzeugt), und die eigentlichen Mediendateien sicherst du ohnehin separat über deine bestehende Backup-Strategie.

Troubleshooting

  1. Transcoding nutzt weiter die CPU: Falsche oder fehlende render-GID. Mit ls -l /dev/dri die GID des render-Geräts ermitteln und im Compose unter group_add eintragen, dann Projekt neu starten.
  2. Kein QSV-/VAAPI-Eintrag im Dashboard: Das Gerät /dev/dri wurde nicht durchgereicht. Prüfe, ob die devices-Zeile im Compose vorhanden ist - und ob dein NAS-Modell überhaupt eine Intel-iGPU besitzt (ARM-Modelle können kein QuickSync).
  3. Port 8096 belegt: Einen anderen Host-Port mappen, z. B. "8097:8096", und die Web-UI dann unter diesem Port aufrufen.
  4. Medienordner leer in Jellyfin: Beim Hinzufügen der Bibliothek den Container-Pfad unterhalb von /media wählen, nicht den Synology-Pfad. Beim read-only-Mount darf der Quellpfad keinen Tippfehler enthalten.
  5. Apps im LAN finden den Server nicht automatisch: Port 7359/udp für Auto-Discovery freigeben; alternativ in der App die NAS-IP samt Port 8096 manuell eintragen.

Fazit

Mit dem Compose-Projekt im Container Manager hast du Jellyfin sauber auf der Synology installiert und das Intel-QuickSync-Hardware-Transcoding über /dev/dri aktiviert. Das Ergebnis ist ein vollwertiger, kostenfreier Media-Server, der dank iGPU mehrere parallele Streams transcodiert, ohne die NAS-CPU zu überlasten. Der entscheidende Punkt bleibt die korrekte render-Gruppen-ID - stimmt sie, läuft das Transcoding zuverlässig in Hardware. Wer ein ARM-Modell besitzt, kann Jellyfin trotzdem betreiben, transcodiert dann aber rein in Software und sollte die Streams entsprechend sparsam halten.

Weitere Anleitungen in den Kategorien Synology / NAS und Docker.

Quellen: Jellyfin Docs - Container Installation, Jellyfin Docs - Intel Hardware Acceleration