Matomo Tag Manager pour GLPI : plugin open source, architecture et installation
Nous développons des plugins GLPI pour nos propres déploiements ITSM depuis un moment. Le premier que nous ouvrons est Matomo Tag Manager : il est désormais publié sur GitHub sous licence libre. Voici pourquoi, comment il est construit, et comment l’installer.
Pourquoi open source
Un plugin qui injecte un conteneur de tracking dans chaque page ne mérite la confiance que si on peut le lire. C’est tout l’intérêt de le publier ouvertement :
- transparence sur ce qui s’exécute dans le navigateur de vos utilisateurs — pas d’analytique obscurcie, pas d’appel caché ;
- la liberté de forker, d’épingler ou de retirer le loader pour coller à votre politique de confidentialité ;
- une revue communautaire sur une fonctionnalité sensible, et aucun verrou propriétaire sur votre ITSM.
Écrit selon les bonnes pratiques GLPI 10/11, avec la confidentialité et une empreinte minimale comme principes premiers.
Le besoin
On veut mesurer l’usage de GLPI avec une solution respectueuse de la vie privée et auto-hébergeable (Matomo), sans :
- modifier les templates du cœur (qui sautent à chaque mise à jour) ;
- créer une table de base de données de plus à maintenir ;
- exposer une nouvelle surface de configuration au-delà de ce que GLPI protège déjà.
Le plugin tient en une idée : une URL de conteneur, collée une fois, chargée partout.
Fonctionnement
À chaque requête, le plugin se greffe sur le hook d’en-tête natif de GLPI ($PLUGIN_HOOKS) et émet une balise <script> qui pointe vers un petit loader statique (public/js/mtm-loader.js). Ce loader charge à son tour l’URL de votre conteneur Matomo. Le chargement est asynchrone : aucun surcoût perceptible. Tout se configure depuis le panneau d’administration ; interface FR/EN, compatible GLPI 10.x et 11.x.
Le conteneur est injecté sur toutes les pages — écrans authentifiés et page de connexion — ce qui permet de suivre le parcours complet, dès le login.
L’URL du conteneur est lue dans le magasin de configuration du cœur de GLPI :
Config::getConfigurationValues('plugin:matomo', ['container_url']);
Aucune table de plugin n’est créée, aucune donnée par asset n’est stockée. Le réglage vit dans le contexte plugin:matomo de la configuration GLPI, point.
Sécurité
Un plugin qui injecte du JavaScript sur chaque page — connexion comprise — doit être irréprochable. Nos garde-fous :
- l’URL du conteneur est validée : elle doit commencer par
https://avant d’être enregistrée ; - la sortie est échappée (
htmlspecialchars,ENT_QUOTES) au moment du rendu dans la page ; - la page de configuration est protégée par le droit cœur
config: UPDATE(typiquement le profil super-admin) — le même droit que la configuration générale de GLPI ; - le plugin est
csrf_compliant: le formulaire passe par le contrôleur protégé contre la CSRF de GLPI 11 ; - aucun droit personnalisé n’est enregistré, et le plugin n’écrit que dans le magasin de configuration de GLPI — il ne touche aucune table cœur ou tierce.
Prérequis
| Élément | Version |
|---|---|
| GLPI | 10.x ou 11.x |
| PHP | ≥ 8.1 |
| Matomo | une URL de conteneur Tag Manager joignable |
Installation
Récupérez la dernière archive depuis la page des releases (ou installez-la directement depuis git avec notre plugin Git Plugin Installer), puis :
# extraire dans plugins/ de sorte que le chemin soit plugins/matomo/
sudo -u apache php bin/console plugin:install matomo
sudo -u apache php bin/console plugin:activate matomo
sudo -u apache php bin/console cache:clear
Mise en route
- Réglages → Matomo Tag Manager.
- Collez l’URL du conteneur Matomo (ex.
https://stats.example.com/js/container_XXXXXXXX.js). - Enregistrer — le conteneur est injecté au prochain chargement, le suivi démarre immédiatement.
Pourquoi si minimal
Le plugin fait une chose et la fait bien. Pas de table, pas de droit custom, pas de template patché : moins de surface, moins de casse aux mises à jour, et un audit de quelques minutes. C’est notre ligne de conduite sur tout l’écosystème GLPI que nous publions.
Version stable 1.0.0, licence GPL v2.0-or-later.
→ Code, releases et issues : https://github.com/FathiBenNasr/glpi-matomo
La suite
D’autres plugins issus de nos déploiements sont dans la feuille de route et seront publiés au fil de leur stabilisation.
Vous déployez GLPI et cherchez un plugin sur mesure, de l’infogérance ou un durcissement ? Découvrez nos services GLPI — ITSM & plugins ou parlons-en. Et suivez-nous sur GitHub pour les prochaines publications.