Ein Medienserver-Update sollte langweilig sein. In der Praxis ist es der Moment, in dem etwas kaputtgeht: Eine Datenbankmigration läuft, ein Plugin lädt nicht mehr, und der Server antwortet nie wieder. Normalerweise erfährst du das im Terminal, mit apt und ein paar angespannten Minuten beim Blick in die Logs.
Self-Update nimmt das Terminal aus diesem Ablauf heraus. Es ist ein Jellyfin-Plugin, das medialab Server (die MediaLab-Works-Variante von Jellyfin 12.2) aus der Weboberfläche aktualisiert oder zurückrollt. Bevor es etwas installiert, sichert es Datenbank und Konfiguration, und wenn die neue Version nicht richtig startet, kehrt der Server von selbst zur vorherigen zurück. Genau das macht einen Downgrade sicher genug, um ihn aus dem Browser zu machen.
Dieses Tutorial deckt den ganzen Weg ab: Versionen prüfen, aktualisieren, zurückrollen, die tägliche Prüfung um 03:00 und das optionale automatische Update. Die Produktseite findest du unter /products/jf-selfupdate, die ausführliche Referenz ist die Bedienungsanleitung.
Voraussetzungen
- medialab Server aus seinen Paketen installiert (
medialab-serverundmedialab-server-web) auf Debian oder Ubuntu. Diese Pakete bringen den Updater mit:/usr/lib/medialab-server/update.sh, die systemd-Unitsmedialab-update.pathundmedialab-update.servicesowie den Ordner/var/lib/medialab-update. - Mindestens 1 GB frei in
/usr/lib. Bei weniger bricht das Update mit Not enough disk space ab. - Ein MediaLab-Works-Konto mit einer Lizenz, die das Plugin abdeckt (ein aktives Abo, eine Lifetime-Lizenz innerhalb ihres Update-Fensters, das Jellyfin-Bundle oder die kostenlose 30-Tage-Testversion) für Aktualisieren und Zurückrollen. Das Prüfen der Versionen funktioniert auch ohne Lizenz.
- Administratorzugang zum Jellyfin-Dashboard. Die API des Plugins antwortet nur Jellyfin-Administratoren.
Wenn medialab Server aus einem Archiv, einer portablen Installation oder einem lokalen Build installiert wurde, fehlt der Updater: Die Seite erklärt, wie du aus den Paketen installierst, und die Aktionen sind deaktiviert. Bei offiziellem Jellyfin zeigt die Seite nur, wie du zu medialab Server wechselst, wobei deine Daten, Benutzer, Bibliotheken und Plugins erhalten bleiben.
Schritt 1 — Plugin installieren
Aus deinem privaten Plugin-Repository (empfohlen). Jellyfin installiert und aktualisiert das Plugin dann von selbst.
- Öffne in deinem MediaLab-Works-Konto Licenses → Jellyfin plugin repository und klicke auf Create address. Kopiere die Adresse. Sie ist privat, weil sie ein Token enthält – teile sie also nicht; du kannst sie jederzeit neu erzeugen oder widerrufen.
- Öffne in Jellyfin Dashboard → Plugins → Repositories, klicke auf +, gib einen Namen an (zum Beispiel MediaLab Works), füge die Adresse ein und speichere.
- Suche in Dashboard → Plugins → Catalog nach Self-Update by MediaLab, klicke auf Install und starte den Server neu.
Aus dem öffentlichen Katalog. https://medialab.works/jellyfin/manifest.json listet jedes veröffentlichte MediaLab-Works-Plugin; medialab Server fügt ihn von selbst hinzu.
Manuell aus einer Zip-Datei. Lade jf-selfupdate_x.y.z.zip unter Account → Licenses herunter (die SHA-256 wird neben dem Button angezeigt), entpacke sie bei einer Paketinstallation in einen neuen Ordner Self-Update by MediaLab_x.y.z.0 innerhalb von /var/lib/jellyfin/plugins/ und starte den Server neu.
Schritt 2 — Lizenz aktivieren
- Öffne Dashboard → Plugins → Self-Update by MediaLab und klicke auf License (die Seite Server update hat ebenfalls einen License-Button).
- Füge deinen Lizenzschlüssel ein und klicke auf Activate with key. Das Plugin bindet den Schlüssel an diesen Server und zeigt die Lizenz als Active an.
- Noch kein Schlüssel? Gib auf derselben Seite deine E-Mail-Adresse ein und starte die 30-Tage-Testversion, oder kaufe eine Lizenz; das Plugin aktiviert sich selbst, sobald die Zahlung abgeschlossen ist.
Die Lizenz wird einmal täglich und bei jedem Serverstart geprüft, außerdem erneut vor einem Update, einem Rollback oder einem automatischen Update, sofern sie nicht kurz zuvor geprüft wurde. Ohne Internet bleibt sie 7 Tage nach der letzten erfolgreichen Prüfung gültig. Move license (release this server) auf der License-Seite gibt den Schlüssel für einen anderen Server frei.
Schritt 3 — Jetzt prüfen und die Versionsliste lesen
Öffne Server update im Menü des Jellyfin-Dashboards (nur für Administratoren).
- Installed version zeigt die medialab-Revision, das installierte Paket (zum Beispiel
12.2+ml4+deb12), die Jellyfin-Version und die neueste Version, die bei der letzten Prüfung gefunden wurde. - Klicke auf Check now. Der Updater liest das medialab-Repository, und die Liste Available versions zeigt jede Version, markiert als installed, newer oder older.
Mach das, bevor du eine Wartung planst. Es ist eine reine Leseoperation und funktioniert ohne Lizenz.
Schritt 4 — Auf die neueste Version oder eine gewählte aktualisieren
- Update to x installiert die neueste Version.
- Install neben einer Version installiert genau diese.
- Roll back to the previous version geht auf die Version direkt unter der installierten; Roll back neben einer älteren Version geht auf diese. Ab medialab Server 12.2-ml.7 wird ein Zurückrollen unter 12.2-ml.7 bewusst verweigert, weil ältere Versionen den weniger sicheren Updater haben.
Jede Aktion fragt zuerst nach einer Bestätigung. Lies sie: Sie erinnert dich daran, dass der Server neu startet und laufende Wiedergabe stoppt; dass Datenbank und Konfiguration zuerst gesichert werden; und dass der Server bei einem Fehlstart von selbst zur aktuellen Version zurückkehrt.
Während ein Update läuft oder eine Anfrage darauf wartet, abgeholt zu werden, wird eine neue Anfrage abgelehnt.
Schritt 5 — Den Fortschritt über den Neustart hinweg verfolgen
Current operation verfolgt die Anfrage: gesendet, läuft, The server is restarting…, dann lädt sich die Seite von selbst neu, sobald der Server wieder antwortet. Der Neustart dauert in der Regel 1–3 Minuten.
Last result zeigt danach, wie es ausgegangen ist:
- succeeded;
- failed, rolled back automatically, mit der Version, zu der der Server zurückgekehrt ist;
- refused, mit dem Grund, zum Beispiel eine Version, die nicht im Repository ist.
Im seltenen Fall, dass der Server auch nach der Rückkehr nicht antwortet, zeigt die Seite, wo sich die Sicherung befindet.
Schritt 6 — Die tägliche Prüfung um 03:00 und optionale automatische Updates
Die geplante Aufgabe Check for medialab Server updates (Kategorie medialab, jeden Tag um 03:00) prüft nur das Repository. Sie installiert nichts.
Unter Automatic update:
- Install new versions automatically ist standardmäßig aus.
- Update hour (server time) ist die Stunde, in der eine neue Version installiert werden darf (04:00, sofern du es nicht änderst). Klicke auf Save.
Mit aktiviertem automatischem Update und gültiger Lizenz wird eine Version, die bei der letzten Prüfung neuer als die installierte war, zur gewählten Stunde installiert, höchstens einmal pro Tag, mit derselben Sicherung und demselben automatischen Zurücksetzen wie bei einem manuellen Update. Die Uhrzeit der Prüfung selbst kannst du unter Dashboard → Scheduled Tasks ändern.
Tipps und Fehlerbehebung
- Kein sudo, by design. Das Plugin läuft als Benutzer
jellyfinund schreibt nur eine Anfragedatei,/var/lib/medialab-update/request.json. Der root-Dienstmedialab-updateprüft sie streng: Die Aktion muss update, rollback oder check sein, die Version muss das exakte Paketformat haben (zum Beispiel12.2+ml4+deb12) und im Repository existieren. Installiert werden nur die Paketemedialab-serverundmedialab-server-web, und nur aus dem signierten medialab-apt-Repository, dessen Adresse auf dem Server fest hinterlegt ist und nie aus der Anfrage kommt. Wird eine Anfrage abgelehnt, erledigt diese Prüfung genau ihre Aufgabe. - Freier Speicher zuerst. Prüfe
/usr/libvor einem großen Sprung. Not enough disk space ist der häufigste vermeidbare Fehler. - Wähle eine ruhige Stunde. Ein Update startet den Server neu; laufende Wiedergabe stoppt für 1–3 Minuten. Die Prüfung um 03:00 und die standardmäßige Installationsstunde um 04:00 sind ein guter Ausgangspunkt für einen Heimserver.
- Aktionen abgelehnt? Aktualisieren, Zurückrollen und das automatische Update brauchen eine gültige Lizenz; ohne sie funktioniert das Prüfen weiterhin und es wird nichts gelöscht. Schau auf die License-Seite.
- Plugin-Updates und Lifetime-Lizenzen. Der öffentliche Katalog bietet immer die neueste Plugin-Version an. Ist das Update-Fenster einer Lifetime-Lizenz abgelaufen, ist eine neuere Plugin-Version nicht lizenziert und stoppt mit "version not licensed", bis du auf ihrer License-Seite Roll back to x.y.z verwendest oder einen Update-Pass kaufst. Um das zu vermeiden, nutze dein privates Repository, das nur die Versionen anbietet, die deine Lizenz erlaubt, statt des öffentlichen Katalogs.
- Container. In einem Container aktualisierst du, indem du den neuen Image-Tag (12.2-ml.N) ziehst und den Container neu erstellst; Self-Update zeigt die verfügbaren Versionen, installiert in einem Container aber keine Pakete.
Fazit
Das Wertvolle ist nicht der Button, sondern die Reihenfolge der Schritte dahinter: Datenbank und Konfiguration sichern, installieren und, wenn der Server nicht zurückkommt, automatisch zur vorherigen Version zurückkehren und die Sicherung wiederherstellen. Mit der täglichen Prüfung um 03:00, die das Lesen übernimmt, und dem automatischen Update, das aus bleibt, bis du anders entscheidest, behältst du die Kontrolle, ohne ein Terminal offen zu halten. Starte unter /products/jf-selfupdate, halte die Anleitung und das Changelog bereit, und wenn etwas nicht zusammenpasst, sind die Wissensdatenbank und die FAQ die nächsten Anlaufstellen.