Access Log enregistre qui se connecte à votre serveur Jellyfin, quand, d’où et depuis quelle application et quel appareil, pour que vous puissiez repérer les mots de passe partagés, les appareils inconnus et les tentatives de connexion.
Ce qu’il fait
- Événements : connexions réussies, mots de passe erronés (jamais le mot de passe tenté), ouvertures et fermetures de sessions, changements d’IP pendant une session et, en option, démarrages de lecture.
- Pour chaque événement : utilisateur, heure, adresse IP, application et sa version, nom et identifiant de l’appareil, pays, région, ville et fournisseur d’accès (ASN).
- Appareils connus par utilisateur : première et dernière connexion, nombre de sessions, dernières adresses.
- Résumé par utilisateur et par pays, et les adresses ayant tenté des mots de passe erronés ; filtres et export CSV.
- Alertes dans le journal d’activité de Jellyfin : un nouvel appareil, un nouveau pays pour un utilisateur, des mots de passe erronés répétés depuis la même adresse.
- Localisation issue d’une base GeoLite2 locale (compte MaxMind gratuit), actualisée automatiquement. Les adresses IP ne sont jamais envoyées à un service externe.
Exigences
- Jellyfin Server 12.2 ou plus récent.
- Un compte MaxMind gratuit et une clé de licence pour les bases GeoLite2 City et ASN (sans elles, les événements sont enregistrés sans localisation).
Questions fréquentes
Comment voir qui s’est connecté à mon serveur Jellyfin ? Installez Access Log ; dès lors, chaque connexion, tentative échouée et session apparaît dans Dashboard → Access Log → Activity, avec l’adresse IP, la localisation, l’application et l’appareil. Voir le guide.
Peut-il m’avertir d’un nouvel appareil ou d’un nouveau pays ? Oui. Les alertes pour un nouvel appareil, un nouveau pays et des mots de passe erronés répétés vont au journal d’activité de Jellyfin ; pendant le premier jour après l’installation, appareils et pays sont appris sans alertes.
Ce qu’il envoie où
- MaxMind GeoLite2 (
download.maxmind.com) — facultatif, désactivé par défaut : seulement si vous saisissez votre propre compte MaxMind gratuit (identifiant de compte + clé de licence), le plugin télécharge les bases GeoLite2 City et ASN (authentifié avec votre compte ; aucune adresse IP ni donnée utilisateur n’est envoyée). Elles sont actualisées quand elles ont plus de 7 jours (configurable). - La géolocalisation des IP se fait localement, dans la base téléchargée ; les adresses IP ne sont jamais envoyées à un service externe. Les adresses privées/locales ne sont pas recherchées.
- Les alertes (nouvel appareil, nouveau pays, rafales d’échecs de connexion) vont uniquement au journal d’activité local du serveur.
- Aucun script CDN ni police externe dans les pages.
- Plus le client de licences, identique dans chaque plugin : voir Licences et confidentialité dans nos plugins.
Stocké localement (dossier de données du plugin) :
events/events-YYYY-MM.jsonl: chaque connexion / échec / lecture / changement d’adresse — heure, utilisateur, IP, localisation (pays, région, ville, coordonnées approximatives, ASN/FAI), chemin d’accès (direct ou via Cloudflare, en-têtes Host, User-Agent et chaîne X-Forwarded-For), application, version, appareil, session. Le mot de passe tenté n’est jamais stocké.events/known.json: appareils et pays connus par utilisateur (sans expiration).geoip/*.mmdb: les bases MaxMind. Les identifiants du compte MaxMind se trouvent dans la configuration du plugin (non chiffrée).- Conservation : 365 jours par défaut (configurable) ; des fichiers mensuels entiers sont supprimés, de sorte que jusqu’à ~un mois supplémentaire peut rester sur le disque. L’export CSV est déclenché par l’administrateur.
- Un middleware lit les en-têtes de la requête (seul le DeviceId est extrait de l’autorisation ; les jetons ne sont pas stockés).
Ce sont des données personnelles (adresses IP, localisations, appareils) : ne les conservez que le temps nécessaire et informez les utilisateurs de votre serveur que les accès sont journalisés.
Compatibilité avec les clients
La capture est côté serveur (les événements de connexion/session du serveur), donc elle fonctionne avec n’importe quel client ; l’interface n’est que la page d’administration.
- Jellyfin Web / medialab Server : ✅ (14/14 de bout en bout au niveau de l’API + pages).
- Applications Jellyfin (Android/Android TV, Swiftfin, Findroid, Kodi/JellyCon, Infuse, Streamyfin), navigateurs TV : 🟢 la capture ne dépend pas du client ; ❔ non testé individuellement. Le nom d’application/appareil affiché est celui que le client rapporte.
Légende : ✅ vérifié (test de bout en bout ou sur appareil) · 🟢 côté serveur, fonctionne avec tout client (par conception, pas de test par client) · ➖ sans objet · ❔ non testé.
Licences
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 tant que l’abonnement est actif, via votre dépôt de plugins privé, plus 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, ainsi que dans votre compte (Compte → Licences, Code source) ; chaque archive contient le texte complet 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).
