Security Notifications informe l’administrateur de votre serveur Jellyfin dès que quelque chose d’anormal ou touchant à la sécurité se produit : qui, d’où, pourquoi c’est suspect et quoi faire.
Ce qu’il surveille
20 règles, chacune avec son interrupteur, son seuil et sa sévérité :
- Attaques contre les comptes : rafales de mots de passe incorrects depuis une adresse, de nombreux comptes essayés depuis la même adresse (password spraying), une connexion réussie après de nombreux échecs, un compte verrouillé.
- Connexions inhabituelles : un nouveau pays pour le compte ou un « voyage impossible » (deux endroits trop éloignés en trop peu de temps) ; un administrateur se connectant depuis un nouvel appareil, un nouveau réseau, l’extérieur du réseau local ou à une heure inhabituelle ; des connexions depuis une sortie Tor ou un réseau réputé mauvais (Spamhaus DROP).
- Changements sensibles : un nouvel administrateur ou des droits sensibles accordés, un mot de passe modifié, un compte supprimé, une clé d’API créée ou supprimée, un plugin installé, mis à jour ou supprimé, des réglages critiques modifiés (accès à distance, HTTPS, proxys de confiance, ports, UPnP).
- Dommages et abus : suppression massive dans une bibliothèque, un compte utilisé depuis trop d’endroits à la fois, une session active d’un compte désactivé.
- Signes de compromission : scans et sondes (
/.env,wp-login, traversal de chemins), en-têtes de proxy falsifiés, utilisation de « Forgot password », fichiers ou DLL de porte dérobée connus qui apparaissent dans le dossier des plugins sans installation depuis le catalogue, une version du serveur avec des vulnérabilités publiées.
Notifications
- Canaux : Telegram, e-mail (SMTP), webhook (Discord, Slack, ntfy, Gotify ou JSON simple) et le journal d’activité Jellyfin. Chaque canal a sa sévérité minimale et un bouton de test.
- Pas de spam : la même alerte au plus une fois par intervalle, les rafales regroupées en un seul message, des heures de silence (seules les alertes critiques partent immédiatement, les autres arrivent dans un résumé à la fin), un résumé quotidien facultatif.
- Contenu : ce qui s’est passé, quel compte, d’où (adresse, pays, ville, réseau, appareil), pourquoi c’est suspect et quoi vérifier. Les noms envoyés par un attaquant (appareil, application, compte) sont transmis en texte brut.
- History de toutes les alertes sur la page du plugin, avec filtres et export CSV.
Prérequis
- Jellyfin Server 12.2 ou plus récent.
- Pour les alertes Telegram, e-mail ou webhook : un bot Telegram, un serveur SMTP ou une adresse de webhook. Le journal d’activité Jellyfin fonctionne sans aucun d’eux.
Questions fréquentes
Jellyfin peut-il m’avertir quand quelqu’un tente de s’introduire dans mon serveur ? Oui, avec Security Notifications : des mots de passe incorrects répétés, du password spraying, une connexion après de nombreux échecs, un nouveau pays ou un administrateur connecté depuis un nouvel appareil vous envoient une alerte sur les canaux choisis. Voir le guide.
Est-ce la même chose qu’Access Log ? Non. Access Log conserve l’historique complet des connexions et des appareils pour que vous puissiez le consulter ; Security Notifications surveille les événements et changements suspects et vous alerte immédiatement. Ils fonctionnent bien ensemble.
Ce qu’il envoie et où
Toutes les tâches d’arrière-plan ne tournent qu’avec une licence valide et le plugin activé.
- Base de données de géolocalisation (téléchargement uniquement, rien n’est envoyé) : DB-IP Lite par défaut (
download.db-ip.com, sans compte, CC BY 4.0 — « IP Geolocation by DB-IP », actualisée environ tous les 35 jours) ; alternativement MaxMind GeoLite2 (download.maxmind.com, avec votre compte, tous les 7 jours) ou « off ». La géolocalisation des IP se fait localement ; les adresses IP ne sont jamais envoyées nulle part. - Listes de menaces (activées par défaut, téléchargement uniquement) : nœuds de sortie Tor (
check.torproject.org, chaque heure) et Spamhaus DROP (www.spamhaus.org, chaque jour). Peuvent être désactivées. - Canaux de notification — tous désactivés par défaut, choisis par l’administrateur :
- Telegram (
api.telegram.org) : le texte de l’alerte vers votre discussion, avec votre jeton de bot ; le bouton « detect chats » lit les mises à jour récentes du bot. - Webhook (votre URL : Discord, Slack, ntfy, Gotify ou JSON générique) : texte de l’alerte, nom du serveur, sévérité, heure.
- E-mail : via le SMTP du plugin Registration (s’il est installé) ou votre propre serveur SMTP (STARTTLS par défaut), vers les destinataires configurés.
- Le journal d’activité du serveur (local, activé par défaut).
- Telegram (
- Contenu de l’alerte : titre et détail, le compte concerné, l’adresse IP avec ville/pays/FAI (ASN), appareil et application, sévérité, règle, nom du serveur, heure. Les noms saisis par un attaquant sont envoyés en texte brut (les mentions Discord sont désactivées).
- Les pages ne chargent aucune ressource externe.
- Plus le client de licence, le même dans chaque plugin : voir Licences et confidentialité dans nos plugins.
Stocké localement (dossier de données du plugin) :
state/alerts.json: historique des alertes (5000 maximum, configurable).accounts.json: par compte — pays, réseaux (ASN), appareils vus (supprimés après 365 jours), dernière IP/pays/coordonnées ; les IP récentes sont supprimées après 24 h.secrets.json(mode 600, en dehors de la configuration du serveur) : jeton Telegram, mot de passe SMTP, URL du webhook, clé MaxMind.- Listes Tor/Spamhaus, bases de données
geoip/*.mmdb. - Le plugin vérifie si le fichier de réinitialisation du mot de passe du serveur existe, sans le lire ; il compare la version du serveur à une table de vulnérabilités incluse (hors ligne).
Jamais envoyés : mots de passe, jetons de session, contenu multimédia. Rien ne va vers un canal que vous n’avez pas activé.
Compatibilité avec les clients
Entièrement côté serveur : les alertes proviennent des événements et du journal du serveur, quelle que soit l’application utilisée par l’utilisateur ou l’attaquant.
- Jellyfin Web / medialab Server : ✅ de bout en bout 34/34.
- Livraison vérifiée : webhook JSON, e-mail (SMTP local), journal d’activité ✅ ; vrais Telegram, Discord, Slack, ntfy, Gotify : ❔ non testé (format Discord testé en unitaire).
- Applications Jellyfin natives, Kodi, Infuse, etc. : 🟢 indépendant du client ; ❔ non testés individuellement.
- Limites : les connexions échouées sont détectées à partir des réponses 401/403 (Jellyfin n’émet aucun événement pour les utilisateurs inconnus). Le SMTP sur le port 465 (TLS implicite) peut ne pas fonctionner — utilisez 587/STARTTLS (non vérifié).
Légende : ✅ vérifié (test de bout en bout ou sur l’appareil) · 🟢 côté serveur, fonctionne avec tout client (par conception, sans test propre à un client) · ➖ non applicable · ❔ non testé.
Licence
Le plugin est open source (GPL-3.0). Les versions compilées prêtes à installer sont publiques, comme le code source. Ce que vous achetez, c’est l’abonnement : la licence d’utilisation du plugin sur un serveur Jellyfin, les mises à jour comprises dans votre formule et le support : chaque mise à jour pendant que l’abonnement est actif, via votre dépôt de plugins privé, et de l’aide quand quelque chose ne fonctionne pas. Le plugin vérifie la clé d’abonnement une fois par jour ; sans abonnement valide, il s’arrête jusqu’au renouvellement (rien n’est supprimé). Mensuel, annuel ou à vie (la licence à vie comprend un an de mises à jour), ou inclus dans le pack Jellyfin. Essai gratuit de 30 jours.
Code source. Pour chaque version, le code source complet correspondant est public, à côté de la version compilée, dans l’historique des versions, et aussi dans votre compte (Compte → Licences, Code source) ; chaque archive contient le texte intégral de la GPL-3.0 (LICENSE). Si vous avez besoin du code source d’une version que vous ne pouvez plus télécharger, écrivez-nous et nous vous l’envoyons. Voir la section 10 de la Licence (CLUF).
