Qui se connecte à votre serveur Jellyfin ? Historique des connexions avec IP, appareil et lieu

Configurez Access Log pour enregistrer chaque connexion Jellyfin et chaque échec avec IP, application, appareil et lieu depuis une base GeoLite2 locale : rien ne quitte votre serveur.

Pourquoi votre serveur Jellyfin a besoin d’un audit des connexions

Si vous faites tourner Jellyfin pour votre famille ou vos amis, vous avez probablement distribué quelques comptes puis cessé d’y penser. Le problème, c’est qu’un compte peut être utilisé discrètement par plus de personnes que prévu : un mot de passe partagé avec un voisin, un ancien téléphone encore connecté, ou quelqu’un qui essaie des combinaisons sur votre page de connexion à trois heures du matin.

Jellyfin journalise bien l’activité, mais une piste d’audit dédiée est plus facile à lire et à exploiter. Access Log enregistre chaque connexion, chaque mot de passe incorrect et chaque session avec l’utilisateur, l’adresse IP, l’application et l’appareil, et y ajoute le pays, la ville et le fournisseur d’accès depuis une base GeoLite2 locale. Le point important pour les auto-hébergeurs : les adresses IP ne sont jamais envoyées à un service de géolocalisation externe. Les recherches se font sur votre serveur, dans la base téléchargée.

Ce tutoriel décrit l’installation du plugin, la configuration de la base de localisation locale et la lecture du journal, pour que vous puissiez réellement repérer un mot de passe partagé ou une attaque. Il suppose que vous faites déjà tourner Jellyfin et que vous connaissez le tableau de bord.

Prérequis

  • Jellyfin Server 12.2 ou plus récent, sous Linux, Windows ou Docker.
  • Un compte MediaLab Works avec une licence couvrant le plugin (un abonnement actif, une licence à vie dans sa fenêtre de mises à jour, le bundle Jellyfin, ou l’essai gratuit de 30 jours).
  • Un compte MaxMind gratuit pour les bases GeoLite2 City et ASN. Sans lui, les événements sont toujours enregistrés, mais sans localisation.
  • Un accès administrateur à votre tableau de bord Jellyfin.

Le plugin est open source (GPL-3.0), et le code source de chaque version est disponible dans votre compte.

Étape 1 — Installer Access Log

La voie recommandée est votre dépôt de plugins privé, car Jellyfin installe et met ensuite à jour le plugin lui-même.

  1. Dans votre compte MediaLab Works, ouvrez Licenses → Jellyfin plugin repository et cliquez sur Create address. Copiez-la. L’adresse est privée (elle contient un jeton), traitez-la comme un mot de passe ; vous pouvez la régénérer ou la révoquer à tout moment.
  2. Dans Jellyfin, ouvrez Dashboard → Plugins → Repositories, cliquez sur +, nommez-la (par exemple MediaLab Works), collez l’adresse et enregistrez.
  3. Ouvrez Dashboard → Plugins → Catalog, trouvez Access Log by MediaLab, cliquez sur Install, puis redémarrez Jellyfin.

Si vous préférez le catalogue public, https://medialab.works/jellyfin/manifest.json liste tous les plugins MediaLab Works publiés ; vous pouvez l’ajouter de la même manière et activer ensuite la licence ou l’essai. Une installation manuelle par zip est aussi documentée dans le guide si vous en avez besoin.

Étape 2 — Activer la licence

  1. Ouvrez Dashboard → Plugins → Access Log by MediaLab et cliquez sur Open License page.
  2. Collez votre clé de licence et cliquez sur Activate with key. Le plugin lie la clé à ce serveur et affiche la licence comme Active.
  3. Pas encore de clé ? Saisissez votre e-mail sur la même page pour démarrer l’essai gratuit de 30 jours, ou achetez une licence ; le plugin s’active de lui-même 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 de fonctionner 7 jours après la dernière vérification réussie. Sans licence valide, il se met en pause et seule la page License reste disponible ; rien n’est supprimé.

Étape 3 — Configurer la base GeoLite2 locale

C’est de là que viennent les données de localisation, et c’est entièrement facultatif et désactivé par défaut.

  1. Créez un compte gratuit chez MaxMind (GeoLite2), puis allez dans Manage License Keys → Generate new license key.
  2. Dans Jellyfin, ouvrez Dashboard → Access Log → Settings. Saisissez l’account id et la license key puis enregistrez. Les bases GeoLite2 City et ASN sont téléchargées aussitôt et rafraîchies automatiquement (lorsqu’elles ont plus de 7 jours, paramétrable).
  3. Sur la même page Settings, choisissez le nombre de jours de conservation des événements, si les démarrages de lecture et les changements d’IP sont enregistrés, et quelles alertes vous voulez.

Ce qui quitte votre serveur ici n’est que la requête de téléchargement authentifiée vers download.maxmind.com. Aucune adresse IP ni donnée utilisateur n’est envoyée. Les adresses privées et locales ne sont pas recherchées du tout.

Étape 4 — Lire le journal d’activité

Ouvrez Dashboard → Access Log → Activity. Chaque événement apparaît du plus récent au plus ancien : connexions réussies, mots de passe incorrects (le mot de passe tenté n’est jamais stocké), sessions ouvertes et fermées, changements d’IP pendant une session, et éventuellement les démarrages de lecture.

Pour chaque événement, vous obtenez l’utilisateur, l’heure, l’adresse IP, l’application et sa version, le nom et l’id de l’appareil, ainsi que le pays, la région, la ville et le fournisseur d’accès (ASN). C’est la réponse à « qui se connecte à mon serveur Jellyfin ? » — pas seulement un nom d’utilisateur, mais tout le contexte.

Utilisez les filtres par utilisateur, période, pays et appareil pour affiner, et l’export CSV quand vous voulez examiner les données dans un tableur ou conserver une trace.

Deux autres vues aident :

  • Devices : les appareils connus de chaque utilisateur, avec première et dernière connexion, nombre de sessions et dernières adresses.
  • Users and countries : un résumé par utilisateur et par pays, plus les adresses avec des mots de passe incorrects.

Étape 5 — Régler les alertes et la rétention

Dans Settings, vous pouvez activer des alertes envoyées au journal d’activité Jellyfin : un appareil nouveau, un pays nouveau pour un utilisateur, et des mots de passe incorrects répétés depuis la même adresse. Pendant le premier jour après l’installation, les appareils et les pays sont appris sans alerte, pour éviter un déluge dès le premier jour.

La rétention est de 365 jours par défaut et est paramétrable. Des fichiers mensuels entiers sont supprimés, donc jusqu’à environ un mois supplémentaire peut rester sur le disque. Les données se trouvent dans le dossier de données du plugin sous events/events-YYYY-MM.jsonl, events/known.json et geoip/*.mmdb. Ce sont des données personnelles (adresses IP, localisations, appareils) : conservez-les seulement le temps nécessaire et informez les utilisateurs de votre serveur que les accès sont journalisés.

Astuces et dépannage

  • Tous les événements affichent la même adresse. C’est votre proxy ou Cloudflare. Ajoutez le proxy aux Known proxies de Jellyfin sous Dashboard → Networking pour que Jellyfin transmette la vraie adresse du visiteur.
  • Pas de localisation dans les événements. Vérifiez l’account id et la clé MaxMind dans Settings.
  • Signaux à surveiller. Une rafale de mots de passe incorrects depuis une adresse, une connexion depuis un pays d’où aucun utilisateur ne s’est jamais connecté, ou un appareil inconnu apparaissant sous un utilisateur familier. Les vues de résumé et les alertes sont faites exactement pour cela.
  • Clients. La capture se fait côté serveur, donc elle fonctionne avec n’importe quel client ; le nom d’application et d’appareil affiché est celui que le client déclare. Jellyfin Web est vérifié de bout en bout, les autres applications sont couvertes par conception.
  • Mises à jour et retour arrière. Jellyfin peut mettre à jour le plugin depuis le dépôt ; la page License propose aussi Install update et Roll back to x.y.z si quelque chose ne fonctionne plus après une mise à jour. Redémarrez Jellyfin après l’une ou l’autre.

Conclusion

Un historique de connexions n’est utile que s’il est complet, lisible et privé. Access Log vous donne chaque connexion et chaque tentative échouée avec IP, application, appareil et lieu, garde la géolocalisation en local grâce à GeoLite2, et transforme le bruit en alertes exploitables. Installez-le, ajoutez votre clé MaxMind et passez dix minutes dans la vue Activity — vous pourriez être surpris par ce que vous y trouverez.

Plus de détails sur la page produit, dans le guide et le changelog. Si quelque chose ne fonctionne pas, la base de connaissances et la FAQ sont de bons points de départ, ou contactez-nous.

Cet article a été rédigé avec l’aide de l’IA à partir de la documentation de nos produits ou des sources indiquées et vérifié automatiquement avant publication.

À lire ensuite

Vous utilisez Emby, Jellyfin ou Nextcloud ?

Nos plugins et applications ajoutent la TV en direct, les sous-titres, l’inscription et la sécurité à votre propre serveur, avec un essai gratuit.