Plan Guard für Jellyfin — Anleitung
Installation
Vorerst brauchst du medialab Server (die MediaLab-Variante von Jellyfin 12.2; der aktuelle Build lädt nicht im offiziellen Docker-Image von Jellyfin 12.2) und ein MediaLab-Works-Konto mit einer Lizenz, die das Plugin abdeckt (ein aktives Abonnement, eine Lifetime-Lizenz innerhalb ihres Update-Zeitraums, das Jellyfin-Paket oder den kostenlosen 30-tägigen Testzeitraum).
Über dein Plugin-Repository (empfohlen). Jellyfin installiert und aktualisiert das Plugin dann von selbst.
- Öffne in deinem MediaLab-Works-Konto Lizenzen → Jellyfin-Plugin-Repository und klicke auf Adresse erstellen. Kopiere sie: Sie ist privat (sie enthält einen Token), teile sie also nicht; du kannst sie jederzeit neu erzeugen oder widerrufen.
- Öffne in Jellyfin Dashboard → Erweiterungen → Repositories, klicke auf +, gib einen Namen ein (zum Beispiel MediaLab Works), füge die Adresse ein und speichere.
- Finde im Dashboard → Erweiterungen → Katalog den Eintrag Plan Guard by MediaLab, klicke auf Installieren und starte Jellyfin neu.
Das Repository listet nur die Plugins, die deine Lizenzen abdecken, und nur die Versionen, die sie erlauben. Seine Download-Links sind signiert und laufen nach ein paar Stunden ab, deshalb liest Jellyfin immer eine frische Liste.
Über den öffentlichen Katalog. https://medialab.works/jellyfin/manifest.json listet jedes veröffentlichte MediaLab-Works-Plugin mit seinem öffentlichen Build; medialab Server fügt ihn von selbst hinzu. Du kannst ihn auf dieselbe Weise hinzufügen, um ein Plugin zu installieren, bevor du einen Schlüssel hast: Das Plugin fragt dann auf seiner Lizenzseite nach der Lizenz oder startet den Testzeitraum. Bei einer Lifetime-Lizenz, deren Update-Zeitraum endete, bleib bei deinem privaten Repository, das nur die Versionen anbietet, die deine Lizenz erlaubt.
Manuell aus einer Zip-Datei.
- Lade in Konto → Lizenzen
jf-planguard_x.y.z.zipherunter (die SHA-256 der Datei steht neben dem Button). - Entpacke sie in einen neuen Ordner
Plan Guard by MediaLab_x.y.z.0im Jellyfin-Plugin-Ordner:- Linux (Paket):
/var/lib/jellyfin/plugins/ - Docker (offizielles Image):
/config/plugins/im Konfigurations-Volume - Windows:
%ProgramData%\Jellyfin\Server\plugins\
- Linux (Paket):
- Starte Jellyfin neu.
Lizenzaktivierung
- Öffne die Plugin-Seite unter Dashboard → Erweiterungen → Plan Guard by MediaLab und klicke auf License.
- Füge deinen Lizenzschlüssel ein und klicke auf Activate with key. Das Plugin kontaktiert den Lizenzserver, bindet den Schlüssel an diesen Jellyfin-Server und zeigt die Lizenz als Active an.
- Noch kein Schlüssel? Gib auf derselben Seite deine E-Mail-Adresse ein und starte den kostenlosen 30-tägigen Testzeitraum (Karte erforderlich, heute nichts zu zahlen) oder kaufe eine Lizenz; das Plugin aktiviert sich, sobald die Zahlung erledigt ist.
Die Lizenz wird einmal am Tag und bei jedem Start von Jellyfin geprüft. Ohne Internet funktioniert das Plugin noch 7 Tage nach der letzten erfolgreichen Prüfung weiter. Ohne gültige Lizenz stoppt das Plugin seine Arbeit, und nur seine License-Seite funktioniert weiter (Testzeitraum, Schlüssel, Verlängerung); es wird nichts gelöscht, und alles läuft weiter, sobald die Lizenz wieder gültig ist. Move license (release this server) auf derselben Seite gibt den Schlüssel für einen anderen Server frei.
Updates und Rollback
- Aus dem Repository: Jellyfin zeigt neue Versionen unter Dashboard → Erweiterungen an und kann das Plugin automatisch aktualisieren; starte Jellyfin neu, um die neue Version zu laden.
- Über die Lizenzseite des Plugins: Mit gültiger Lizenz installiert Install update die neueste Version, die deine Lizenz erlaubt, und Roll back to x.y.z geht zur vorherigen Version zurück (zum Beispiel, wenn nach einem Update etwas nicht mehr funktioniert). Starte Jellyfin nach beidem neu. Beide Pakete werden gegen die Prüfsumme geprüft, die der Lizenzserver veröffentlicht.
- Eine Lifetime-Lizenz erhält die Versionen, die während ihres Update-Zeitraums erschienen sind; danach läuft das Plugin mit der letzten Version weiter, die es nutzen darf.
- Nach einem Rollback installiert Jellyfins geplante Aufgabe Update Plugins (beim Start und täglich) die neueste Version wieder, wenn dein Plugin-Repository in Jellyfin hinzugefügt ist. Um eine Weile auf der vorherigen Version zu bleiben, entferne die Auslöser dieser Aufgabe unter Dashboard → Geplante Aufgaben und füge sie später wieder hinzu.
Quellcode
Der GPL-3.0-Quellcode jeder Version liegt in Konto → Lizenzen (Quellcode) neben dem Download als .tar.gz-Archiv, erzeugt aus dem exakten Commit dieser Version.
Konfiguration
Öffne Plan Guard im Dashboard-Menü von Jellyfin. Die Seite hat sechs Tabs: Active streams, Profiles, Users, Sharing, Log und Settings.
- Profiles: Klicke auf Add profile und stelle für jedes Profil ein (0 heißt: kein Limit):
- die Anzahl gleichzeitiger Wiedergaben;
- die Qualität zu Hause und unterwegs, in Mbit/s;
- die maximale Auflösung;
- ob Videokonvertierung (Transcoding) erlaubt ist und ob 4K-Konvertierung erlaubt ist (die teuerste für den Server);
- wie viele Geräte in 30 Tagen ein Konto nutzen darf, bevor es als Teilen-Signal zählt;
- mit Cashier den verknüpften Cashier-Tarif.
- Users: Wähle das Profil jedes Benutzers und das Profil für alle anderen (oder keine Limits). Administratoren werden nie begrenzt.
- Cashier-Tarife (optional): Mit installiertem Cashier und eingeschalteter Option With Cashier installed: the profile follows the paid plan bekommen Abonnenten das Profil, das mit ihrem Tarif verknüpft ist (oder das Gerätelimit des Tarifs), und Plan Guard übernimmt das Stoppen der Wiedergabe.
- Settings → enforcement:
- Automatically stop playback that breaks the profile (aus: nur Protokoll);
- Seconds between message and stop (standardmäßig 10);
- Sign out devices that ignore stop (standardmäßig an): Der Benutzer muss sich auf dem Gerät neu anmelden;
- Block the device after signing it out (standardmäßig aus).
- Settings → shared accounts: Schalte Detect shared accounts ein und wähle dann, what happens below the threshold: nur benachrichtigen (Aktivitätsprotokoll, die Voreinstellung), benachrichtigen und dem Benutzer eine Nachricht schicken, benachrichtigen und eine neue Anmeldung erzwingen oder benachrichtigen und das neueste Gerät blockieren. Du kannst auch den Schwellwert für den Score einstellen (standardmäßig 50), die Geschwindigkeit für „unmögliche Ortswechsel" (standardmäßig 500 km/h) und wie viele verschiedene Netzwerke an einem Tag als Signal zählen (standardmäßig 5).
Tägliche Nutzung
- Wenn ein Benutzer eine Wiedergabe über dem Stream-Limit startet, lehnt Jellyfin sie ab, bevor sie startet. Die Qualität wird beim Start auf die Bitrate des Profils für zu Hause oder unterwegs gedeckelt.
- Während der Wiedergabe prüft Plan Guard etwa alle 10 Sekunden jeden Stream. Eine Wiedergabe, die gegen das Profil verstößt, bekommt eine Meldung, dann einen Stopp-Befehl; wenn sie weiterspielt, wird ihr Transcoding auf dem Server beendet und das Gerät abgemeldet.
- Active streams zeigt, wer was spielt, mit welcher Qualität, von wo und mit welchem Profil, mit einem Stop-Button und einer optionalen Nachricht für den Benutzer.
- Sharing zeigt einen Trust-Score pro Konto (100 = sauber) über die letzten 30 Tage, mit den Signalen und Orten dahinter. Warnungen erscheinen auch im Aktivitätsprotokoll von Jellyfin, höchstens einmal am Tag pro Konto.
- Log zeigt jede Aktion von Plan Guard und warum.
Wie Player reagieren
- Player ohne Fernsteuerung wie Infuse, Kodi und DLNA ignorieren Stopp-Befehle, also meldet Plan Guard das Gerät stattdessen ab (falls Sign out devices that ignore stop an ist).
- Player, die nach dem Stopp-Befehl weiterspielen, bekommen ihr Transcoding auf dem Server beendet und werden dann abgemeldet.
- Die vollständige Liste der Clients und wie jeder reagiert, ergänzen wir nach dem Testen.
Was es wohin sendet
Standorte werden auf deinem Server nachgeschlagen, aus den kostenlosen DB-IP Lite City- und ASN-Datenbanken, heruntergeladen von download.db-ip.com, solange die Erkennung geteilter Konten läuft, und erneut beim Start heruntergeladen, sobald sie älter als 35 Tage sind. Wenn Access Log oder Security Notifications bereits eine Standortdatenbank vorhalten, nutzt Plan Guard sie; der Tab Sharing zeigt, welche gerade in Benutzung ist. Nichts über deine Benutzer wird irgendwohin gesendet; nur die Lizenzprüfung erreicht medialab.works.
IP-Geolocation von DB-IP (CC BY 4.0).
Fehlerbehebung
- „Geolocation is not available yet": Die DB-IP-Lite-Datenbanken werden noch heruntergeladen; der Server muss
download.db-ip.comüber HTTPS erreichen können. - Ein Benutzer im Mobilfunknetz oder mit VPN sieht wie ein geteiltes Konto aus: Das kann vorkommen; lass die Aktion auf Nur benachrichtigen, oder erhöhe die Einstellung für Netzwerke pro Tag.
- Cashier ist installiert, aber die Profile folgen nicht den Tarifen: Prüfe, dass Cashiers Lizenz aktiv und auf dem neuesten Stand ist; der Tab Users zeigt den Stand der Verknüpfung.