Security Notifications pour Jellyfin — guide

Installation

Vous avez besoin de Jellyfin Server 12.2 ou plus récent et d’un compte MediaLab Works avec une licence qui couvre le plugin (un abonnement actif, une licence à vie dans sa période de mises à jour, le pack Jellyfin ou l’essai gratuit de 30 jours).

Depuis votre dépôt de plugins (recommandé). Jellyfin installe et met alors à jour le plugin tout seul.

  1. Dans votre compte MediaLab Works, ouvrez Licences → Dépôt de plugins Jellyfin et cliquez sur Créer l’URL du dépôt. Copiez-la : elle est privée (elle contient un jeton), ne la partagez pas ; vous pouvez la régénérer ou la révoquer à tout moment.
  2. Dans Jellyfin, ouvrez Tableau de bord → Plugins → Dépôts, cliquez sur +, donnez-lui un nom (par exemple MediaLab Works), collez l’adresse et enregistrez.
  3. Dans Tableau de bord → Plugins → Catalogue, trouvez Security Notifications by MediaLab, cliquez sur Installer, puis redémarrez Jellyfin.

Le dépôt ne liste que les plugins couverts par vos licences, et uniquement dans les versions qu’elles autorisent. Ses liens de téléchargement sont signés et expirent après quelques heures : Jellyfin lit donc toujours une liste à jour.

Depuis le catalogue public. https://medialab.works/jellyfin/manifest.json liste chaque plugin MediaLab Works publié avec sa version publique ; medialab Server l’ajoute lui-même. Vous pouvez l’ajouter de la même façon pour installer un plugin avant d’avoir une clé : le plugin demande alors la licence, ou démarre l’essai, sur sa page License. Avec une licence à vie dont la période de mises à jour est terminée, restez sur votre dépôt privé, qui ne propose que les versions autorisées par votre licence.

Manuellement, depuis un fichier zip.

  1. Dans Compte → Licences, téléchargez jf-securitynotifications_x.y.z.zip (le SHA-256 du fichier est affiché à côté du bouton).
  2. Extrayez-le dans un nouveau dossier Security Notifications by MediaLab_x.y.z.0 à l’intérieur du dossier de plugins Jellyfin :
    • Linux (paquet) : /var/lib/jellyfin/plugins/
    • Docker (image officielle) : /config/plugins/ dans le volume de configuration
    • Windows : %ProgramData%\Jellyfin\Server\plugins\
  3. Redémarrez Jellyfin.

Activation de la licence

  1. Ouvrez la page du plugin dans Tableau de bord → Plugins → Security Notifications by MediaLab et cliquez sur Open License page.
  2. Collez votre clé de licence et cliquez sur Activate with key. Le plugin contacte le serveur de licences, lie la clé à ce serveur Jellyfin et affiche la licence comme Active.
  3. Pas encore de clé ? Sur la même page, saisissez votre e-mail et démarrez l’essai gratuit de 30 jours (carte requise, rien à payer aujourd’hui) ou achetez une licence ; le plugin s’active tout seul une fois le paiement effectué.

La licence est vérifiée une fois par jour et à chaque démarrage de Jellyfin. Sans internet, le plugin continue à fonctionner 7 jours après la dernière vérification réussie. Sans licence valide, le plugin cesse son travail et seule sa page License reste fonctionnelle (essai, clé, renouvellement) ; rien n’est supprimé et tout reprend dès que la licence redevient valide. Move license (release this server) sur la même page libère la clé pour un autre serveur.

Mises à jour et retour en arrière

  • Depuis le dépôt : Jellyfin affiche les nouvelles versions dans Tableau de bord → Plugins et peut mettre à jour le plugin automatiquement ; redémarrez Jellyfin pour charger la nouvelle version.
  • Depuis la page License du plugin : avec une licence valide, Install update installe la version la plus récente autorisée par votre licence et Roll back to x.y.z revient à la version précédente (par exemple si quelque chose a cessé de fonctionner après une mise à jour). Redémarrez Jellyfin après l’une ou l’autre. Les deux paquets sont vérifiés par rapport à la somme de contrôle publiée par le serveur de licences.
  • Une licence à vie reçoit les versions publiées pendant sa période de mises à jour ; après celle-ci, le plugin continue à fonctionner avec la dernière version qu’il est autorisé à utiliser.
  • Après Roll back to x.y.z, la mise à jour automatique Jellyfin de ce plugin est désactivée jusqu’au prochain Install update sur la page License : la tâche planifiée Update Plugins (au démarrage et chaque jour) ne réinstalle donc pas la version plus récente.
  • Licence à vie et mises à jour automatiques. Le catalogue public Jellyfin (https://medialab.works/jellyfin/manifest.json) propose toujours la version la plus récente. Quand la période de mises à jour d’une licence à vie est terminée, les versions publiées après ne sont pas licenciées : si la mise à jour automatique des plugins de Jellyfin en installe une, le plugin s’arrête avec « version not licensed » jusqu’à ce que vous reveniez avec Roll back to x.y.z sur sa page License ou achetiez un pass de mises à jour. Pour l’éviter, ne laissez pas Jellyfin mettre à jour ce plugin automatiquement : ajoutez votre dépôt de plugins privé, qui ne propose que les versions autorisées par votre licence, à la place du catalogue public, ou retirez les déclencheurs de la tâche planifiée Update Plugins dans Tableau de bord → Tâches planifiées (cela désactive les mises à jour automatiques pour tous les plugins).

Code source

Le code source GPL-3.0 de chaque version se trouve dans Compte → Licences (Code source), à côté du téléchargement, sous forme d’archive .tar.gz créée à partir du commit exact de cette version.

Configuration

Ouvrez Security Notifications dans le menu du tableau de bord Jellyfin. La page comporte cinq onglets : Overview, History, Rules, Channels et Settings.

  1. Channels : activez les canaux souhaités et réglez la sévérité minimale de chacun, puis utilisez Send a test.
    • Telegram : saisissez le jeton du bot, envoyez /start au bot (ou ajoutez-le à un groupe), puis cliquez sur Find pour renseigner la discussion.
    • E-mail : destinataires et votre serveur SMTP. Le port 587 avec STARTTLS est recommandé (le port 465 avec TLS implicite n’est pas pris en charge). Si Registration by MediaLab est installé, vous pouvez réutiliser son serveur SMTP.
    • Webhook : choisissez Discord, Slack, ntfy, Gotify ou JSON et collez l’adresse. L’adresse contient le jeton et est stockée séparément des réglages. Pour Gotify, ajoutez ?token=… à l’adresse /message.
    • Jellyfin activity log : les alertes apparaissent aussi dans la liste d’activité du tableau de bord.
  2. No spam (même onglet) : la fréquence à laquelle la même alerte peut se répéter, les heures de silence (seules les alertes critiques partent immédiatement, les autres arrivent dans un résumé à la fin) et le résumé quotidien facultatif pour les alertes moyennes et informatives.
  3. Rules : chacune des 20 règles a un interrupteur, une sévérité et, le cas échéant, des seuils (par exemple combien de mots de passe incorrects en combien de minutes, la vitesse pour le voyage impossible ou les horaires habituels de l’administrateur).
  4. Settings :
    • Location : DB-IP Lite (gratuit, sans compte), MaxMind GeoLite2 (votre identifiant de compte et clé de licence) ou désactivé. Sans localisation, les règles nouveau pays, voyage impossible et nouveau réseau ne fonctionnent pas.
    • Network : réseaux de confiance (CIDR) traités comme locaux, comme votre propre VPN. Les réseaux privés et ceux des réglages réseau de Jellyfin sont inclus automatiquement. Activez The server is behind its own proxy si Jellyfin est derrière nginx, Caddy, Traefik ou similaire, pour que les en-têtes transmis soient pris en compte ; Cloudflare est reconnu tout seul.
    • Bad IP lists : sorties Tor (actualisées chaque heure) et Spamhaus DROP (chaque jour).

Utilisation quotidienne

  • Overview affiche les alertes récentes et l’état du plugin.
  • History liste chaque alerte avec le compte, l’adresse, la localisation, l’appareil et les canaux auxquels elle a été envoyée ; filtrez par sévérité, règle et période, ou exportez en CSV.
  • Chaque alerte indique pourquoi elle est suspecte et quoi vérifier. Si c’était vous (un nouveau téléphone, un voyage à l’étranger), il n’y a rien à faire.

Dépannage

  • Chaque alerte affiche la même adresse (votre proxy ou Cloudflare) : ajoutez le proxy aux Known proxies de Jellyfin (Tableau de bord → Réseau) pour que Jellyfin transmette la véritable adresse du visiteur, et activez The server is behind its own proxy dans Settings.
  • Aucun message Telegram : envoyez de nouveau /start au bot et cliquez sur Find ; vérifiez la sévérité minimale du canal.
  • Pas de localisation : vérifiez la source Location dans Settings ; avec MaxMind, vérifiez l’identifiant de compte et la clé.

La version compilée est publique ; l’utilisation du plugin nécessite une licence ou l’essai gratuit de 30 jours.