Réalisation
Des statistiques auto-hébergées, sans cookie ni service tiers
maxa-analytics est l'outil que j'ai écrit pour mesurer mes propres sites, maxadev.fr compris. Il sert ici de démonstration : le nom est à moi, la mécanique se transpose.
La démonstration
Transcription de la démo
0:00 · Le constat
Des statistiques derrière un bandeau cookies, des logs dans un terminal… et les pannes, on les apprend par ses clients. Celui-ci réunit tout au même endroit, sur votre serveur, et sans cookie.
0:10 · Tous vos sites
Tous vos sites sur un seul tableau : visiteurs, pages, sources, jusqu'aux visites envoyées par les assistants d'IA. Et il suffit d'un script de moins de trois kilo-octets.
0:21 · Temps réel
En direct, vous voyez qui est là, ce qu'il lit, et ce qu'il met au panier.
0:26 · Entonnoir d'achat
L'entonnoir d'achat montre où vos clients décrochent : ici, à la livraison.
0:32 · Vue serveur
Un petit agent lit aussi les logs du serveur : erreurs, robots, bande passante. Tout ce que le script ne voit pas.
0:39 · Sécurité
Les robots qui cherchent une faille sont démasqués, avec une fiche par adresse IP.
0:45 · Alertes et incidents
Une rafale d'erreurs ? L'alerte arrive sur votre téléphone, et ouvre la fiche de l'incident, preuves à l'appui.
0:51 · Assistant IA
Et votre assistant d'IA s'y connecte : demandez-lui pourquoi les ventes ont chuté mardi, il croise le trafic et les erreurs du serveur.
1:04 · Hébergé chez vous
Le tout tient dans un conteneur, sur votre serveur : vos données restent chez vous. Un outil sur mesure, pour garder la main sur vos données. Parlons de votre projet.
0
cookie déposé chez vos visiteurs
Le problème de départ
J'avais plusieurs sites à suivre (maxadev.fr, maxa-movies, maxence-os) et trois endroits pour le faire. Les statistiques de maxadev.fr chez Google, derrière un bandeau cookies, donc sans les visiteurs qui refusent les cookies. Les logs du serveur, dans un terminal. Et les pannes, que je risquais d'apprendre par quelqu'un d'autre.
Chacun ne voyait qu'une partie de l'histoire. Quand le site ne répond plus, la page ne s'affiche pas et la visite n'est pas comptée : la courbe baisse sans dire pourquoi. Et la plupart des robots, qui n'exécutent pas le script de mesure, manquent aux statistiques alors qu'ils remplissent les logs. Croiser les deux à la main, c'est le genre de vérification toujours remise à plus tard.
Ce qui a été construit
Un seul outil, installé sur mon serveur. Sur chaque site, un script de moins de 3 Ko une fois compressé, ou un connecteur Next.js, Nuxt ou Node, y compris pour Electron. Le tableau de bord montre les pages, les sources (jusqu'aux visites envoyées par ChatGPT ou Claude), les clics, les parcours, les entonnoirs et l'activité en temps réel. Le tout sans cookie ni identifiant persistant.
À côté, un petit agent expédie les logs de Nginx Proxy Manager, le reverse proxy placé devant les sites. Le tableau de bord y lit ce qui échappe au script : robots, erreurs, scanners en quête d'un fichier .env ou d'une installation WordPress, avec une fiche par adresse IP. Des alertes réglées au curseur arrivent sur mon iPhone et ouvrent la fiche de l'incident.
Les choix techniques, et pourquoi
Trois décisions structurantes, prises pour que l'outil reste léger, respectueux de vos visiteurs et chez vous.
Un conteneur, une base SQLite
Le tableau de bord et la collecte tiennent dans un seul conteneur, avec une base SQLite. Pas de CDN, pas de pixel : aucun service tiers ne s'intercale entre vos visiteurs et vos statistiques, les données restent sur votre serveur, et vous ne dépendez d'aucun éditeur pour continuer à y accéder.
Sans cookie, par construction
Rien n'est déposé dans le navigateur. Le visiteur est compté grâce à un identifiant haché avec un sel qui change chaque jour et qui est détruit au bout de deux jours. L'adresse IP n'est jamais écrite sur les pages vues ni sur les événements : seule la session garde celle de son début, pour le diagnostic, 30 jours par défaut, puis l'efface, et un réglage permet de ne jamais la stocker.
Serveur MCP protégé par OAuth 2.1
Le serveur MCP est intégré à l'outil : Claude, ou tout autre client MCP, interroge en conversation les statistiques de vos sites et les logs de votre reverse proxy, sans export à faire ni API publique à exposer. La vidéo montre deux de ces conversations, enregistrées sur la démo : « Pourquoi les ventes de Clairvenne ont chuté mardi après-midi ? » et « Fais-moi le point de la semaine ».
Ce que ça change à l'usage
Quand une courbe baisse, la vue serveur du site met les réponses du proxy, erreurs comprises, face aux pages vues, ce qui montre si l'audience recule ou si le site ne répond plus. Et, si les alertes sont activées, une série d'erreurs serveur déclenche une notification sur mon iPhone, preuves à l'appui, avant qu'un visiteur ait à signaler le problème.
maxadev.fr utilise cet outil pour ses statistiques internes, avec l’accord de ses visiteurs. La mesure facultative des publicités ChatGPT utilise séparément OpenAI et ses cookies, après un accord distinct. Les chiffres MaxaDev de la vidéo sont fictifs, comme le reste de la démonstration.
La même mécanique, pour votre cas
Le nom est à moi, la mécanique non. Garder chez soi une donnée d'habitude confiée à un tiers, la croiser avec les traces qui existent déjà, être prévenu quand un seuil est franchi, et pouvoir l'interroger en conversation : ça vaut pour l'audience d'un site comme pour autre chose.
Ce que je livre, c'est l'outil taillé pour votre cas, l'hébergement, et le code source. Si vos statistiques dépendent d'un bandeau cookies, ou si vous apprenez vos pannes par vos clients, c'est probablement par là qu'il faut commencer.
- Statistiques sans cookie pour les sites de vos clients
- Suivi d'usage d'une application web ou de bureau
- Supervision de serveurs et alertes sur mobile
- Indicateurs métier interrogeables en langage naturel
Questions fréquentes
- Non. C'est l'outil que j'utilise pour mes propres sites, montré ici comme démonstration de ce qui est faisable. Ce que je livre, c'est un outil construit pour votre cas d'usage, avec son hébergement et son code source.