2 octobre 2026PHPSQLiteMySQL / MariaDB

Minilytics

Solution d'analytics web minimaliste, auto-hébergée et conforme au RGPD. Permet de suivre les sessions, événements, funnels et import de données, sans cookies.

Minilytics
JavaScriptComposerGDPR

Pourquoi Minilytics ?

Comme beaucoup d'autres développeurs, j'ai commencé à coder avec des projets web. Lorsque j'ai codé Parcoursup Explorer au lycée et que je cherchais un langage pour développer mon projet, je me suis tourné assez tôt vers PHP, puisqu'il était assez proche du HTML. Pour suivre l'évolution du projet et voir comment les visiteurs interagissent avec mon site, j'avais installé Matomo. C'était la seule solution simple à auto-héberger que j'avais trouvée, et c'est devenu mon outil par défaut, même si son interface était loin d'être belle.

Plus tard, quand j'ai lancé EcrisMaLettre, j'ai utilisé Umami Cloud pendant deux ans, jusqu'au jour où j'ai découvert que tout l'historique de plus de six mois avait été supprimé. C'est compréhensible de leur côté, puisqu'ils ne peuvent pas garder toutes les données il faut bien qu'ils vivent, mais c'était un peu frustrant pour moi.

J'ai donc cherché à auto-héberger, et là, surprise : presque toutes les solutions modernes demandent Node.js, Docker, des services en arrière-plan ou un serveur de base de données dédié. Umami et Swetrix tournent sous Node.js, Plausible sous Elixir avec PostgreSQL et ClickHouse. Mon VPS est bien trop petit pour faire tourner toute une stack juste pour savoir combien de personnes visitent mes pages ! Matomo existe toujours, mais son interface a peu évolué, et parmi les autres solutions, il manquait toujours quelque chose : les événements, les funnels, des sessions propres ou le respect du RGPD.

J'ai posé la question sur Reddit pour savoir si j'avais mal cherché. Visiblement, l'outil que je voulais n'existait pas, et les réponses m'ont convaincu de l'écrire moi-même.

C'est ainsi qu'est né Minilytics. L'idée n'est pas de réinventer la roue, mais de reprendre ce que les outils existants font de bien, en PHP avec SQLite pour les données, avec une interface moderne et sans dépendances lourdes. Il est minimaliste par conception : il tourne partout où PHP est disponible et consomme des ressources serveur négligeables.

Vue d'ensemble du tableau de bord Minilytics, ici avec les vraies données d'EcrisMaLettre
Vue d'ensemble du tableau de bord Minilytics, ici avec les vraies données d'EcrisMaLettre

Fonctionnalités clés

Sessions

Le parcours de chaque visiteur peut être suivi en détail : appareil, localisation et pages vues dans l'ordre chronologique. Le tableau de bord affiche aussi les principaux référents, les pages d'entrée et de sortie, ainsi que la durée des sessions, le tout sans déposer le moindre cookie côté client.

Vue des sessions avec les parcours et appareils des visiteurs
Vue des sessions avec les parcours et appareils des visiteurs

Événements

Les clics, téléchargements et interactions personnalisées apparaissent dans un flux d'activité interactif. Suivre un événement est aussi simple que d'ajouter un attribut data-minilytics-event à un élément HTML, et son évolution dans le temps permet de repérer les tendances et de mesurer l'utilisation des fonctionnalités.

Vue des événements
Vue des événements

Funnels

Les funnels permettent de définir des objectifs de conversion et de suivre des parcours en plusieurs étapes, du premier contact jusqu'à la conversion, pour voir exactement à quelle étape les utilisateurs décrochent.

Vue d'un funnel avec les étapes de conversion
Vue d'un funnel avec les étapes de conversion

Import de données

Ayant moi-même perdu une partie de mon historique, je tenais à ce que changer d'outil ne coûte jamais ses données. Minilytics peut importer les pages vues, événements et sessions passés depuis un export Umami, via le tableau de bord ou en ligne de commande :

BASH
php bin/import.php --zip umami-export.zip --site-id example

Des importeurs pour Google Analytics (GA4), Plausible, Matomo et Simple Analytics sont prévus.

Interface d'import de données
Interface d'import de données

Respect de la vie privée par défaut

Je voulais que Minilytics soit une solution plug-and-play qui ne demande aucune configuration pour respecter la vie privée. Deux modes de suivi sont disponibles :

  • strict (par défaut) : aucun cookie, aucun local storage ni session storage. Les paramètres et fragments d'URL sont supprimés, et ni les adresses IP brutes ni les user agents ne sont stockés. Le serveur dérive une clé visiteur propre à chaque site à partir de ces valeurs, d'un secret privé et d'un sel renouvelé chaque mois.
  • enriched (optionnel) : nécessite le consentement explicite du visiteur (minilytics.consent()) et peut utiliser le sessionStorage pour maintenir une session. C'est quand même assez utile car ça permet par exemple de savoir si une personne revient sur le site ou non !

La géolocalisation repose sur une base DB-IP City Lite locale, et aucune donnée visiteur n'est envoyée à un service tiers.

Architecture

Le backend est écrit en PHP 8.1+ et stocke les données dans SQLite par défaut, car c'est léger et ne nécessite pas de serveur séparé. MySQL ou MariaDB peuvent être configurés directement depuis les paramètres du tableau de bord, avec un test de connexion avant l'enregistrement.

Les données sont stockées en dehors de la racine web, de sorte qu'un redéploiement ou une nouvelle extraction de l'archive ne puisse jamais les écraser ni les exposer. L'installation en production se résume à deux commandes :

BASH
curl -LO https://github.com/axthauvin/minilytics/releases/latest/download/minilytics.tar.gz
tar -xzf minilytics.tar.gz && rm minilytics.tar.gz

Il suffit ensuite d'ouvrir /dashboard/ pour créer le compte administrateur, d'ajouter un site et de coller le snippet de suivi dans son <head>.

Et la suite ?

À long terme, j'aimerais que Minilytics devienne la solution par défaut pour les développeurs indépendants, les projets perso et tous les sites qui ont juste besoin de statistiques simples et respectueuses de la vie privée.

Les prochaines étapes sont les imports depuis d'autres outils (GA4, Plausible, Matomo), et la stabilisation du projet grâce aux retours des utilisateurs. La ligne directrice, elle, ne changera pas : rester installable en quelques minutes sur n'importe quel hébergement PHP.

C'est une première version, développée seul, donc il y a forcément des bugs ! Minilytics est open source sous licence MIT : les suggestions et contributions sont les bienvenues sur GitHub.