Security Notifications informiert den Administrator deines Jellyfin-Servers, sobald etwas Abnormales oder Sicherheitsrelevantes passiert: wer es war, von wo, warum es verdächtig wirkt und was du dagegen tun kannst.
Was es überwacht
20 Regeln, jede mit eigenem Schalter, eigener Schwelle und eigener Schwere:
- Angriffe auf Konten: Stöße falscher Passwörter von einer Adresse, viele Konten von derselben Adresse ausprobiert (Password Spraying), eine erfolgreiche Anmeldung nach vielen Fehlschlägen, ein gesperrtes Konto.
- Ungewöhnliche Anmeldungen: ein neues Land für das Konto oder „unmögliche Reise" (zwei Orte, in zu kurzer Zeit zu weit auseinander); ein Administrator, der sich von einem neuen Gerät, einem neuen Netz, von außerhalb des lokalen Netzes oder zu einer ungewöhnlichen Uhrzeit anmeldet; Anmeldungen von einem Tor-Exit oder einem bekannten schlechten Netz (Spamhaus DROP).
- Heikle Änderungen: ein neuer Administrator oder vergebene heikle Rechte, ein geändertes Passwort, ein gelöschtes Konto, ein erstellter oder gelöschter API-Schlüssel, ein installiertes, aktualisiertes oder entferntes Plugin, geänderte kritische Einstellungen (Fernzugriff, HTTPS, vertrauenswürdige Proxys, Ports, UPnP).
- Schäden und Missbrauch: Massenlöschung in einer Bibliothek, ein Konto, das gleichzeitig von zu vielen Orten genutzt wird, eine aktive Sitzung eines deaktivierten Kontos.
- Anzeichen einer Kompromittierung: Scans und Sonden (
/.env,wp-login, Path Traversal), gefälschte Proxy-Header, benutzte „Forgot password"-Funktion, bekannte Backdoor-Dateien oder DLLs, die ohne Katalog-Installation im Plugin-Ordner auftauchen, eine Serverversion mit veröffentlichten Schwachstellen.
Benachrichtigungen
- Kanäle: Telegram, E-Mail (SMTP), Webhook (Discord, Slack, ntfy, Gotify oder schlichtes JSON) und das Jellyfin-Aktivitätsprotokoll. Jeder Kanal hat eine eigene Mindestschwere und eine Test-Schaltfläche.
- Kein Spam: dieselbe Warnung höchstens einmal pro Intervall, Stöße zu einer Nachricht gruppiert, Ruhezeiten (nur kritische Warnungen gehen sofort raus, der Rest kommt am Ende in einer Zusammenfassung), optionaler täglicher Digest.
- Inhalt: was passiert ist, welches Konto, von wo (Adresse, Land, Stadt, Netz, Gerät), warum es verdächtig ist und was du prüfen solltest. Von einem Angreifer gesendete Namen (Gerät, App, Konto) werden als Klartext weitergegeben.
- Verlauf aller Warnungen auf der Plugin-Seite, mit Filtern und CSV-Export.
Voraussetzungen
- Jellyfin Server 12.2 oder neuer.
- Für Warnungen per Telegram, E-Mail oder Webhook: ein Telegram-Bot, ein SMTP-Server oder eine Webhook-Adresse. Das Jellyfin-Aktivitätsprotokoll funktioniert ohne alles davon.
Häufige Fragen
Kann Jellyfin mich warnen, wenn jemand versucht, in meinen Server einzubrechen? Ja, mit Security Notifications: wiederholte falsche Passwörter, Password Spraying, eine Anmeldung nach vielen Fehlschlägen, ein neues Land oder ein Admin, der sich von einem neuen Gerät anmeldet, schicken dir eine Warnung über die Kanäle, die du wählst. Siehe die Anleitung.
Ist das dasselbe wie Access Log? Nein. Access Log bewahrt die vollständige Historie der Anmeldungen und Geräte für dich auf; Security Notifications überwacht verdächtige Ereignisse und Änderungen und warnt dich sofort. Beide arbeiten gut zusammen.
Was es wohin sendet
Alle Hintergrundaufgaben laufen nur mit gültiger Lizenz und aktiviertem Plugin.
- Geolokalisierungsdatenbank (nur Download, nichts gesendet): standardmäßig DB-IP Lite (
download.db-ip.com, kein Konto, CC BY 4.0 — „IP Geolocation by DB-IP", alle ~35 Tage erneuert); alternativ MaxMind GeoLite2 (download.maxmind.com, mit deinem Konto, alle 7 Tage) oder „aus". Die IP-Geolokalisierung läuft lokal; IP-Adressen werden nie irgendwohin gesendet. - Bedrohungslisten (standardmäßig an, nur Download): Tor-Exit-Nodes (
check.torproject.org, stündlich) und Spamhaus DROP (www.spamhaus.org, täglich). Kann abgeschaltet werden. - Benachrichtigungskanäle — alle standardmäßig aus, vom Admin gewählt:
- Telegram (
api.telegram.org): Der Warnungstext an deinen Chat, mit deinem Bot-Token; die Schaltfläche „detect chats" liest die letzten Updates des Bots. - Webhook (deine URL: Discord, Slack, ntfy, Gotify oder generisches JSON): Warnungstext, Servername, Schwere, Zeit.
- E-Mail: über den SMTP des Registration-Plugins (falls installiert) oder deinen eigenen SMTP-Server (standardmäßig STARTTLS), an die eingestellten Empfänger.
- Das Aktivitätsprotokoll des Servers (lokal, standardmäßig an).
- Telegram (
- Warnungsinhalt: Titel und Detail, das betroffene Konto, die IP-Adresse mit Stadt/Land/ISP (ASN), Gerät und App, Schwere, Regel, Servername, Zeit. Von einem Angreifer eingegebene Namen werden als Klartext gesendet (Discord-Erwähnungen sind deaktiviert).
- Seiten laden keine externen Ressourcen.
- Dazu der Lizenzierungs-Client, derselbe in jedem Plugin: siehe Lizenzierung und Datenschutz in unseren Plugins.
Lokal gespeichert (Plugin-Datenordner):
state/alerts.json: Warnungsverlauf (max. 5000, konfigurierbar).accounts.json: pro Konto — Länder, Netze (ASN), gesehene Geräte (nach 365 Tagen entfernt), letzte IP/Land/Koordinaten; aktuelle IPs werden nach 24 Std. entfernt.secrets.json(Modus 600, außerhalb der Serverkonfiguration): Telegram-Token, SMTP-Passwort, Webhook-URL, MaxMind-Schlüssel.- Tor-/Spamhaus-Listen,
geoip/*.mmdb-Datenbanken. - Das Plugin prüft, ob die Passwort-Reset-Datei des Servers existiert, ohne sie zu lesen; es vergleicht die Serverversion mit einer beigelegten Schwachstellentabelle (offline).
Nie gesendet: Passwörter, Session-Tokens, Medieninhalte. Nichts geht an einen Kanal, den du nicht aktiviert hast.
Client-Kompatibilität
Vollständig serverseitig: Warnungen kommen aus den Ereignissen und Logs des Servers, egal welche App der Nutzer oder Angreifer verwendet.
- Jellyfin Web / medialab Server: ✅ End-to-End 34/34.
- Zustellung verifiziert: JSON-Webhook, E-Mail (lokaler SMTP), Aktivitätsprotokoll ✅; echte Telegram-, Discord-, Slack-, ntfy-, Gotify-Zustellung: ❔ nicht getestet (Discord-Format per Unit-Test geprüft).
- Native Jellyfin-Apps, Kodi, Infuse usw.: 🟢 clientunabhängig; ❔ nicht einzeln getestet.
- Grenzen: Fehlgeschlagene Anmeldungen werden an 401/403-Antworten erkannt (Jellyfin sendet für unbekannte Nutzer kein Ereignis). SMTP über Port 465 (implizites TLS) funktioniert möglicherweise nicht – nutz 587/STARTTLS (nicht verifiziert).
Legende: ✅ verifiziert (End-to-End- oder On-Device-Test) · 🟢 serverseitig, funktioniert mit jedem Client (by design, kein client-spezifischer Test) · ➖ nicht zutreffend · ❔ nicht getestet.
Lizenzierung
Das Plugin ist Open Source (GPL-3.0). Die fertigen Builds sind – wie der Quellcode – öffentlich. Gekauft wird das Abonnement: die Lizenz, das Plugin auf einem Jellyfin-Server zu nutzen, die Updates deines Tarifs und Support: jedes Update, solange das Abonnement aktiv ist, über dein privates Plugin-Repository, und Hilfe, wenn etwas nicht funktioniert. Das Plugin prüft den Abonnementschlüssel einmal am Tag; ohne gültiges Abonnement stoppt es, bis du erneuerst (es wird nichts gelöscht). Monatlich, jährlich oder Lifetime (Lifetime enthält ein Jahr Updates) oder enthalten im Jellyfin-Paket. 30 Tage kostenlos testen.
Quellcode. Zu jeder Version ist der vollständige zugehörige Quellcode öffentlich, neben dem Build, im Changelog und auch in deinem Konto (Account → Licenses, Source code); jedes Archiv enthält den vollständigen GPL-3.0-Text (LICENSE). Wenn du den Quellcode einer Version brauchst, die du nicht mehr herunterladen kannst, schreib uns und wir schicken ihn dir. Siehe Abschnitt 10 der EULA.
