Lizenzierung und Datenschutz in unseren Plugins

Dies ist eine Übersetzung, die zur besseren Verständlichkeit bereitgestellt wird. Bei Abweichungen gilt die englische Fassung.

Fassung vom 2026-10-13.

Jedes Plugin kommuniziert für Lizenzierung, Updates und optional Protokolle mit https://medialab.works (nur mit dieser Domain). Der Datenverkehr für Aktivierung und Prüfung ist zusätzlich zu HTTPS verschlüsselt (ephemerer ECDH-Schlüssel + AES-256-GCM; die Antworten sind mit ECDSA signiert und werden vom Plugin überprüft). Was jedes Plugin an andere Dienste sendet und mit welchen Apps es funktioniert, steht auf seiner Produktseite unter Was es wohin sendet und Kompatibilität mit Clients.

Der Lizenz-Client (in jedem Plugin)

Wann Was gesendet wird
Aktivierung (wenn der Administrator den Schlüssel eingibt) die Kennung des Emby-/Jellyfin-Servers (server_id, die interne Kennung der Installation), ein Hardware-Fingerabdruck (hw_hash — ein lokal berechneter SHA-256 aus machine-id, DMI-UUID/-Seriennummer, falls lesbar, und der niedrigsten physischen MAC-Adresse; die Rohwerte verlassen den Rechner nie), der Produkt-Slug, die Plugin-Version, SHA-256 + Größe der Plugin-DLL, eine Nonce und ein Zeitstempel; der Lizenzschlüssel wird nie im Klartext gesendet (nur sein SHA-256 als Kennung; der Schlüssel fließt in die Ableitung des Verschlüsselungsschlüssels ein)
Beim Serverstart, danach alle 24 h (± bis zu 1 h, zufällig) dieselben Felder über die verschlüsselte Sitzung (Aktivierungs-ID statt des Schlüssels)
Vor Update / Rollback oder einer geschützten Aktion auf den Seiten eine neue Prüfung nur, wenn die letzte erfolgreiche älter als 1 h ist (die Plattform begrenzt die Rate von Prüfungen auf Anforderung)
Update / Rollback (vom Administrator auf der Lizenzseite gestartet) Download des Pakets von der von medialab.works zurückgegebenen signierten URL (vor der Installation per SHA-256 / MD5 überprüft), danach ein Bericht: Vorgang, Ausgangs-/Zielversion, Erfolg oder nicht, Fehlermeldung
Kostenloser Test / Kauf aus dem Plugin heraus (optional) die E-Mail-Adresse, die der Administrator eingibt, der gewählte Tarif, der Produkt-Slug, server_id, hw_hash, die Plugin-Version, die Sprache der Seite; die Zahlung erfolgt auf der Stripe-Checkout-Seite von medialab.works, nicht im Plugin; das Plugin fragt danach ab (in der ersten Stunde alle 5 s, danach jede Minute, solange der Link gültig ist), ob die Lizenz übernommen wurde
Deaktivierung eine Deaktivierungsanfrage über die verschlüsselte Sitzung
Export von Protokollen nur, wenn der Administrator auf „Send log“ klickt oder den automatischen Versand (AutoSendLogs, standardmäßig aus) eingeschaltet hat. Gesendet werden nur die Zeilen des aktuellen Serverprotokolls, die den Namen des Plugins enthalten (höchstens ~2000 Zeilen, mit gzip komprimiert, maximal 2 MB), plus eine optionale Notiz. Mit eingeschaltetem AutoSendLogs: einmal täglich nach der Prüfung; bei Plugins, die den Emby-Web-Client patchen (Registration, Quick Connect, MediaLab TV sowie Smart Skip und Share Links, wenn ihr optionaler Patch eingeschaltet ist), außerdem einmal pro Emby-Version, wenn der Patch nach einem Emby-Update nicht erneut angewendet werden konnte.

QR-Code auf der Lizenzseite: Der QR-Code des Bezahllinks wird lokal, in der Seite erzeugt, ohne dass zusätzlich etwas gesendet wird – bei jedem Emby-Plugin spätestens ab den am 14. Oktober 2026 veröffentlichten Versionen (MediaLab TV ab 1.2.1) und bei Jellyfin von Headend ab 1.0.4, MediaLab TV ab 1.2.1, Rosub ab 1.1.3, AISub ab 0.1.3, Smart Skip ab 0.1.2, Transcode Doctor ab 0.1.3 und Library Doctor ab 0.1.6; die übrigen Jellyfin-Plugins erhalten es mit ihrer nächsten Version. In älteren Versionen lädt, während ein aus dem Plugin heraus gestarteter Test oder Kauf auf die Zahlung wartet, der Browser des Administrators das QR-Bild vom Drittanbieterdienst api.qrserver.com und übergibt ihm dabei den Bezahllink (die URL der Stripe-Checkout-Seite von medialab.works). Sonst wird nichts gesendet; wenn du nicht aus dem Plugin heraus kaufst, wird dieser Dienst nie kontaktiert.

Lokal gespeichert: der Lizenzstatus in <plugin data folder>/license/license.json (Schlüssel, Aktivierungs-ID, Sitzungsgeheimnis, signierte Lizenz, letzte Prüfung, Einstellung für AutoSendLogs).

Vom Lizenz-Client nie gesendet: Daten über die Nutzer des Servers, Titel, Bibliotheken, IP-Adressen der Clients, Passwörter, API-Schlüssel anderer Dienste. Das Protokoll (nur mit Einwilligung) kann alles enthalten, was das Plugin ins Protokoll schreibt (z. B. Benutzernamen oder Titel, je nach Produkt).

Jellyfin: Update/Rollback laufen über den Installer von Jellyfin (zip + MD5) aus dem Plugin-Repository von medialab.works; nach einem Rollback ist das automatische Update von Jellyfin für dieses Plugin bis zum nächsten Update auf der Lizenzseite ausgeschaltet. Der öffentliche Jellyfin-Katalog bietet immer die neueste Version an: Bei einer Lifetime-Lizenz, deren Update-Zeitraum abgelaufen ist, stoppt eine neuere Version, die durch die automatischen Plugin-Updates von Jellyfin installiert wurde, mit „version not licensed“, bis du ein Rollback machst oder einen Update-Pass kaufst (siehe die FAQ).

Ohne gültige Lizenz (oder nach Ablauf der Kulanzfrist) wechselt das Plugin in den eingeschränkten Modus; es sendet nichts zusätzlich.

Die personenbezogenen Daten, die wir auf unserer Seite speichern (Konto, Lizenzen, Serverkennungen, vom Lizenzserver gesehene IP-Adressen), und deine Rechte sind in der Datenschutzerklärung beschrieben.

Unterstützte Serverversionen

  • Emby: 4.10.1.0 oder neuer (die Emby-Pakete werden mit min_emby = 4.10.1.0 veröffentlicht; getestet mit Emby 4.10.1).
  • Jellyfin: 12.x (targetAbi 12.2.0.0, .NET 10), getestet mit Jellyfin 12.2 und mit dem Fork medialab Server (12.2-ml). Jellyfin 10.x wird nicht unterstützt. Jellyfin-Plugins werden unter der GPL-3.0 mit Quellcode ausgeliefert.

Legende zur Kompatibilität

Der Abschnitt Kompatibilität mit Clients auf jeder Produktseite verwendet diese Zeichen:

  • ✅ verifiziert (End-to-End-Test oder Test auf dem Gerät)
  • 🟢 serverseitig, unabhängig vom Client (prinzipbedingt, kein clientspezifischer Test)
  • ➖ nicht zutreffend
  • ❔ nicht getestet