Emby vous dit qui regarde, mais peu de choses sur qui frappe à la porte. Si vous gérez un serveur pour votre famille, vos amis ou une petite communauté, la question qui finit par se poser est simple : qui s'est connecté, depuis où, avec quelle application et quel appareil, et quelqu'un a-t-il tenté de deviner un mot de passe ? Access Log y répond depuis votre propre serveur, sans service de géolocalisation externe dans la boucle.
Access Log est un plugin qui conserve l'historique des connexions de votre serveur Emby. Il enregistre chaque authentification et chaque tentative échouée, puis les affiche dans un tableau : utilisateur, date, adresse IP, appareil, application, et le pays et la ville approximatifs issus d'une base GeoLite2 locale. C'est précisément l'intérêt de ce tutoriel : la recherche s'effectue sur votre machine, les adresses IP ne la quittent jamais.
Ce qu'Emby affiche et ce qui lui échappe
Emby dispose de ses propres vues d'activité, et elles conviennent à l'usage quotidien. En revanche, elles ne sont pas conçues pour l'audit. Vous ne pouvez pas facilement filtrer par pays, vous n'obtenez pas un historique stable par utilisateur avec l'appareil et la version de l'application côte à côte, et les tentatives échouées sont difficiles à examiner comme une tendance dans le temps.
Access Log comble ce manque sans changer l'usage que quiconque fait du serveur. La capture se fait côté serveur (événements de connexion et de session du serveur), elle fonctionne donc avec n'importe quel client : Emby Web, applications natives sur Android, iOS, Android TV, Samsung, LG, Roku, Apple TV, et navigateurs de TV. Le nom de l'application et de l'appareil affiché est celui que le client déclare. Le plugin lit aussi le journal local embyserver.txt pour les en-têtes de requête, ce qui lui permet de distinguer une session directe d'une session passée par Cloudflare.
Prérequis
- Emby Server 4.10.1 ou plus récent.
- Un compte MediaLab Works avec une licence (mensuelle, annuelle, à vie, ou le pack Emby) ou l'essai gratuit de 30 jours.
- Facultatif mais recommandé : un compte MaxMind gratuit, pour les bases GeoLite2 City et ASN. Sans lui, aucune base n'est téléchargée et vous n'obtenez pas de données de localisation.
- L'accès au dossier des plugins Emby et la permission de redémarrer le serveur.
Étape 1 : installer le plugin
- Connectez-vous à votre compte MediaLab Works, ouvrez Licenses et téléchargez la DLL du plugin.
- Copiez la DLL dans le dossier des plugins Emby et redémarrez Emby Server :
- Linux (paquet) :
/var/lib/emby/plugins/ - Docker : le dossier
pluginsdans le volume de configuration d'Emby - Windows :
%AppData%\Emby-Server\programdata\plugins\
- Linux (paquet) :
- Ouvrez Emby Dashboard → Plugins, cliquez sur le plugin, collez votre clé de licence et enregistrez. Le plugin contacte le serveur de licences, lie la clé à ce serveur Emby et affiche la licence comme Active.
La licence est vérifiée une fois par jour et à chaque démarrage d'Emby. Sans internet, le plugin continue de fonctionner 7 jours après la dernière vérification réussie ; passé ce délai, il est arrêté jusqu'à ce qu'il puisse vérifier de nouveau. Tant qu'il est arrêté, aucune nouvelle connexion n'est enregistrée, mais le journal existant est conservé et tout reprend dès que la licence est de nouveau valide.
Étape 2 : ajouter la base GeoLite2
Ouvrez Dashboard → Plugins → Access Log.
Sous GeoLite2, saisissez votre clé de licence MaxMind (compte gratuit) pour que le plugin télécharge et mette à jour la base City, ou déposez le fichier .mmdb manuellement. L'Account ID MaxMind se renseigne dans la configuration du plugin ; la clé de licence est chiffrée au repos dans secrets.enc.json dans le dossier de données du plugin et n'est jamais envoyée au navigateur — la page affiche seulement « set ✓ ».
Le téléchargement est facultatif et désactivé par défaut. Si vous l'activez, le plugin récupère les bases GeoLite2 City et ASN depuis download.maxmind.com, authentifié avec votre propre compte. Aucune adresse IP ni donnée utilisateur n'est envoyée. Les bases sont actualisées lorsqu'elles ont plus de 7 jours (paramétrable). Ensuite, la géolocalisation s'effectue localement dans la base téléchargée ; les adresses privées et locales ne sont pas recherchées.
Étape 3 : régler la rétention et le traitement des échecs
Toujours sous Dashboard → Plugins → Access Log :
- Rétention : nombre de jours de conservation des entrées. La valeur par défaut est 365. Les fichiers mensuels sont supprimés en entier, il peut donc rester jusqu'à environ un mois supplémentaire sur le disque.
- Tentatives échouées : enregistrées par défaut. Vous pouvez éventuellement être notifié après N échecs depuis une même IP. Les alertes vont uniquement au journal d'activité local du serveur.
Réfléchissez à la rétention avant de collecter des mois de données. Un an est une valeur par défaut raisonnable pour un serveur domestique ; réduisez-la si l'espace disque ou vos propres attentes en matière de confidentialité l'exigent.
Étape 4 : lire le journal
La page du plugin liste les connexions, les plus récentes en premier. Chaque ligne indique l'utilisateur, la date, l'adresse IP, l'application, le nom et la version de l'appareil, ainsi que la localisation approximative issue de GeoLite2. Cliquez sur un utilisateur pour n'afficher que son historique.
Utilisez les filtres — par utilisateur, période, pays et appareil — pour affiner. Le filtrage par pays est le moyen le plus rapide de repérer des connexions depuis des lieux que vous n'attendez pas. Lorsque vous avez besoin d'un relevé hors de l'interface, exportez en CSV ; l'export est déclenché par l'administrateur.
En coulisses, tout est stocké dans le dossier de données du plugin :
events/events-YYYY-MM.jsonl: chaque connexion, échec, lecture et changement d'adresse, avec date, utilisateur, IP, localisation (pays, région, ville, coordonnées approximatives, ASN/FAI), chemin d'accès (direct ou via Cloudflare, Host, User-Agent, chaîne X-Forwarded-For), application, version, appareil et 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.
Étape 5 : repérer les signaux d'alerte
Avec quelques semaines d'historique, les tendances deviennent visibles :
- Rafales d'échecs de connexion depuis une même IP. Une série d'échecs contre un ou plusieurs utilisateurs est le schéma classique de devinette. Si vous avez activé la notification, le journal d'activité vous indique quand le seuil est franchi.
- Nouveaux pays. Un utilisateur qui se connecte habituellement depuis un pays et apparaît soudain dans un autre mérite une question amicale. Le fichier des pays connus par utilisateur facilite cette vérification.
- Appareils inconnus. Un nom d'appareil que vous n'avez jamais vu associé à un compte peut signifier un mot de passe partagé ou compromis.
- Mots de passe partagés. Le même mot de passe qui circule se traduit par un utilisateur connecté depuis plusieurs pays et appareils sans lien, sur une courte période. La vue par utilisateur et le filtre par pays rendent cela visible sans supposition.
- En-têtes falsifiés. Emby accepte
X-Forwarded-Forde n'importe qui ; le plugin signale les en-têtes falsifiés, une fausse ligne « via Cloudflare » ne vous trompe donc pas.
Astuces et dépannage
- Pas de localisation ? Vérifiez que la base GeoLite2 a bien été téléchargée ou déposée. Sans compte MaxMind et sans fichier
.mmdbmanuel, le plugin n'a rien à rechercher. - Les adresses privées n'affichent pas de localisation. C'est voulu ; les IP locales et privées ne sont pas recherchées.
- Nom d'application ou d'appareil incorrect. Le plugin affiche ce que le client déclare. La capture elle-même ne dépend pas du client.
- La détection Cloudflare semble erronée. « Via Cloudflare / direct » dépend des lignes qu'Emby écrit dans
embyserver.txt. Si votre configuration de reverse proxy change, revérifiez quelques entrées récentes. - Le plugin est arrêté. Ses pages et son API répondent avec la raison, et seule la page License continue de fonctionner. Corrigez la licence à cet endroit ; rien n'est supprimé.
- Espace disque. Les fichiers mensuels et la rétention donnent une croissance prévisible. Exportez en CSV et réduisez la rétention si vous voulez une empreinte plus légère.
Confidentialité en un paragraphe
La localisation provient de la base GeoLite2 stockée sur votre serveur. Les adresses IP ne sont jamais envoyées à un service externe. Les alertes vont uniquement au journal d'activité local du serveur. Les pages ne chargent ni script CDN ni police externe. Le seul trafic sortant est le téléchargement MaxMind facultatif avec votre propre compte et le client de licence commun à tous nos plugins ; voir Licensing and privacy in our plugins.
Conclusion
Access Log transforme le flux de connexions d'Emby en une piste d'audit qui vous appartient vraiment : chaque authentification et tentative échouée, avec IP, application, appareil et une localisation GeoLite2 locale, filtrable par utilisateur, période, pays et appareil, et exportable en CSV. Installez-le, pointez-le vers une base MaxMind gratuite, réglez la rétention et vérifiez les signaux d'alerte de temps en temps. Pour les détails d'installation et la référence complète, consultez la page produit et le guide utilisateur ; le changelog suit les évolutions, et la base de connaissances et la FAQ couvrent le reste.