Security Notifications für Jellyfin

Bekomm eine Warnung per Telegram, E-Mail oder Webhook, wenn auf deinem Jellyfin-Server etwas Verdächtiges passiert: Passwortangriffe, ungewöhnliche Anmeldungen, Admin-Änderungen.

Security overview of a Jellyfin server: alerts in the last 24 hours, critical ones this week, channels and threat lists1 von 6

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).
  • 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.

Funktioniert am besten mit medialab Server

Dieses Plugin funktioniert mit dem offiziellen Jellyfin 12.2 oder neuer. Auf medialab Server, unserem auf Jellyfin basierenden Server mit denselben Daten, Bibliotheken, Nutzern und Apps, funktioniert es besser:

  • Verified – medialab. Der Server prüft die Signatur unserer Plugins und zeigt dir, dass die Dateien genau die sind, die wir veröffentlicht haben. Ein nach der Veröffentlichung verändertes Plugin wird markiert.
  • In die Oberfläche integriert. Plugins können Schaltflächen und Links zum Menü deiner Nutzer hinzufügen (zum Beispiel „TV“, „Share“), ohne manuelle Web-Konfiguration.
  • Standardmäßig Vorrang. medialab-Plugins stehen dort an erster Stelle, wo es darauf ankommt: Live-TV-Tuner, Programmführer-Quellen und Untertitelanbieter. Die Reihenfolge bestimmst weiterhin du: Du kannst sie jederzeit ändern.
  • Der Katalog von medialab.works ist enthalten, die Installation erfolgt ohne zusätzliche Bestätigungen.
  • Updates über die Weboberfläche, ohne Terminal (mit Self-Update by MediaLab): prüfen, aktualisieren und zurücksetzen über das Dashboard; startet eine neue Version nicht, kehrt der Server von selbst zur vorherigen zurück, deine Daten bleiben unversehrt.
  • Dasselbe Jellyfin, immer aktuell. medialab Server folgt jede Woche den stabilen Versionen von Jellyfin 12.x; eine neue Version wird erst veröffentlicht, wenn sie alle Tests bestanden hat, einschließlich der Tests unserer Plugins.

Die Jellyfin-Apps (Android, iOS, TV, Web) verbinden sich genauso wie mit dem offiziellen Jellyfin.

Zur Installation startest du das Container-Image (Anleitung) oder, unter Debian 12, die apt-Pakete, die jellyfin-server und jellyfin-web ersetzen und deine Daten an Ort und Stelle lassen (Anleitung).

medialab Server ist freie Software (GPL-2.0) auf Basis von Jellyfin. Der Quellcode ist öffentlich: medialab-server und medialab-server-web.

Voraussetzungen

  • Jellyfin Server 12.2 oder neuer (Linux, Windows oder Docker)
  • Open Source (GPL-3.0): Der Quellcode jeder Version liegt in deinem Konto

Neueste Version

0.1.4
veröffentlicht am 20.10.2026
Alle Änderungen ansehen →

Der Build ist öffentlich; für die Nutzung des Plugins brauchst du eine Lizenz oder den kostenlosen 30-tägigen Testzeitraum.