Security Notifications für Jellyfin — Anleitung
Installation
Du brauchst Jellyfin Server 12.2 oder neuer 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 Licenses → Jellyfin plugin repository und klick auf Create address. Kopier es: Es ist privat (es enthält ein Token), also teil es nicht; du kannst es jederzeit neu erzeugen oder widerrufen.
- Öffne in Jellyfin Dashboard → Plugins → Repositories, klick auf +, gib einen Namen ein (zum Beispiel MediaLab Works), füg die Adresse ein und speicher.
- Find in Dashboard → Plugins → Catalog Security Notifications by MediaLab, klick auf Install und starte Jellyfin neu.
Das Repository listet nur die Plugins, die deine Lizenzen abdecken, und nur die erlaubten Versionen. Seine Download-Links sind signiert und laufen nach wenigen Stunden ab, sodass Jellyfin immer eine aktuelle Liste liest.
Ü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 genauso 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 mit abgelaufenem Update-Zeitraum bleib bei deinem privaten Repository, das nur die Versionen anbietet, die deine Lizenz erlaubt.
Manuell aus einer Zip-Datei.
- Lade in Account → Licenses
jf-securitynotifications_x.y.z.zipherunter (der SHA-256 der Datei wird neben der Schaltfläche angezeigt). - Entpack es in einen neuen Ordner
Security Notifications by MediaLab_x.y.z.0im Jellyfin-Plugins-Ordner:- Linux (Paket):
/var/lib/jellyfin/plugins/ - Docker (offizielles Image):
/config/plugins/im Config-Volume - Windows:
%ProgramData%\Jellyfin\Server\plugins\
- Linux (Paket):
- Starte Jellyfin neu.
Lizenzaktivierung
- Öffne die Plugin-Seite unter Dashboard → Plugins → Security Notifications by MediaLab und klick auf Open License page.
- Füg deinen Lizenzschlüssel ein und klick 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 ein und starte den kostenlosen 30-tägigen Testzeitraum (Karte erforderlich, heute nichts zu zahlen) oder kauf eine Lizenz; das Plugin aktiviert sich, wenn die Zahlung fertig ist.
Die Lizenz wird einmal am Tag und bei jedem Jellyfin-Start geprüft. Ohne Internet arbeitet 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 (Test, 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 → Plugins an und kann das Plugin automatisch aktualisieren; starte Jellyfin neu, um die neue Version zu laden.
- Über die License-Seite 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 danach neu. Beide Pakete werden gegen die vom Lizenzserver veröffentlichte Prüfsumme geprüft.
- Eine Lifetime-Lizenz erhält die Versionen, die während ihres Update-Zeitraums veröffentlicht wurden; danach arbeitet das Plugin mit der letzten erlaubten Version weiter.
- Nach Roll back to x.y.z ist Jellyfins automatische Aktualisierung für dieses Plugin ausgeschaltet, bis du auf der License-Seite wieder Install update ausführst, sodass die geplante Aufgabe Update Plugins (beim Start und täglich) die neuere Version nicht zurückholt.
- Lifetime-Lizenz und automatische Updates. Der öffentliche Jellyfin-Katalog (
https://medialab.works/jellyfin/manifest.json) bietet immer die neueste Version an. Ist der Update-Zeitraum einer Lifetime-Lizenz abgelaufen, sind danach veröffentlichte Versionen nicht lizenziert: Installiert Jellyfins automatische Plugin-Aktualisierung eine davon, stoppt das Plugin mit „version not licensed", bis du über Roll back to x.y.z auf seiner License-Seite zurückgehst oder einen Update-Pass kaufst. Um das zu vermeiden, lass Jellyfin dieses Plugin nicht automatisch aktualisieren: Füg dein privates Plugin-Repository hinzu, das nur die Versionen anbietet, die deine Lizenz erlaubt, statt des öffentlichen Katalogs, oder entfern die Auslöser der geplanten Aufgabe Update Plugins unter Dashboard → Scheduled Tasks (das stoppt automatische Updates für jedes Plugin).
Quellcode
Der GPL-3.0-Quellcode jeder Version liegt in Account → Licenses (Source code) neben dem Download als .tar.gz-Archiv, das aus dem exakten Commit dieser Version erstellt wurde.
Konfiguration
Öffne Security Notifications im Jellyfin-Dashboard-Menü. Die Seite hat fünf Tabs: Overview, History, Rules, Channels und Settings.
- Channels: Schalt die gewünschten Kanäle ein und stell für jeden die Mindestschwere ein, dann nutz Send a test.
- Telegram: Gib den Bot-Token ein, send dem Bot
/start(oder füg ihn einer Gruppe hinzu) und klick dann auf Find, um den Chat einzutragen. - E-Mail: Empfänger und dein SMTP-Server. Port 587 mit STARTTLS wird empfohlen (Port 465 mit implizitem TLS wird nicht unterstützt). Wenn Registration by MediaLab installiert ist, kannst du dessen SMTP-Server mitbenutzen.
- Webhook: Wähl Discord, Slack, ntfy, Gotify oder JSON und füg die Adresse ein. Die Adresse enthält das Token und wird getrennt von den Einstellungen gespeichert. Für Gotify füg
?token=…zur/message-Adresse hinzu. - Jellyfin-Aktivitätsprotokoll: Warnungen erscheinen auch in der Aktivitätsliste des Dashboards.
- Telegram: Gib den Bot-Token ein, send dem Bot
- No spam (derselbe Tab): wie oft dieselbe Warnung wiederholt werden darf, die Ruhezeiten (nur kritische Warnungen gehen sofort raus, der Rest kommt am Ende in einer Zusammenfassung) und der optionale tägliche Digest für Warnungen mittlerer und informativer Schwere.
- Rules: Jede der 20 Regeln hat einen Schalter, eine Schwere und, wo zutreffend, Schwellenwerte (zum Beispiel wie viele falsche Passwörter in wie vielen Minuten, die Geschwindigkeit für unmögliche Reisen oder die üblichen Zeiten des Administrators).
- Settings:
- Location: DB-IP Lite (kostenlos, kein Konto), MaxMind GeoLite2 (deine Konto-ID und dein Lizenzschlüssel) oder aus. Ohne Ort funktionieren die Regeln für neues Land, unmögliche Reise und neues Netz nicht.
- Network: Vertrauenswürdige Netze (CIDR), die als lokal gelten, etwa dein eigenes VPN. Private Netze und die in Jellyfins Netzwerkeinstellungen werden automatisch einbezogen. Schalt The server is behind its own proxy ein, wenn Jellyfin hinter nginx, Caddy, Traefik oder Ähnlichem steht, sodass weitergeleitete Header erwartet werden; Cloudflare wird von selbst erkannt.
- Bad IP lists: Tor-Exits (stündlich erneuert) und Spamhaus DROP (täglich).
Tägliche Nutzung
- Overview zeigt die letzten Warnungen und den Status des Plugins.
- History listet jede Warnung mit Konto, Adresse, Ort, Gerät und den Kanälen, an die sie gesendet wurde; filter nach Schwere, Regel und Zeitraum oder exportier als CSV.
- Jede Warnung sagt, warum sie verdächtig ist und was du prüfen solltest. Warst du es (neues Telefon, Urlaub), muss nichts unternommen werden.
Fehlersuche
- Jede Warnung zeigt dieselbe Adresse (dein Proxy oder Cloudflare): Füg den Proxy zu Jellyfins Known proxies hinzu (Dashboard → Networking), damit Jellyfin die echte Besucheradresse weitergibt, und schalt in Settings The server is behind its own proxy ein.
- Keine Telegram-Nachrichten: Send dem Bot erneut
/startund klick auf Find; prüf die Mindestschwere des Kanals. - Kein Ort: Prüf die Location-Quelle in Settings; bei MaxMind prüf Konto-ID und Schlüssel.