Comment Installer Matomo sur votre Serveur
Les prérequis techniques réels pour installer Matomo self-hosted (PHP 8, MySQL/MariaDB, Docker officiel), les étapes manuelles, la sécurisation et le cron d'archivage.
Dans ce guide
Installer Matomo sur son propre serveur (par opposition à Matomo Cloud) donne un contrôle total sur les données, mais suppose de tenir des prérequis techniques précis, et de ne pas négliger la sécurisation une fois l'installation terminée.
Prérequis techniques réels
PHP : PHP 8 minimum pour Matomo 5, avec compatibilité confirmée jusqu'à PHP 8.1, 8.2 et 8.3 depuis la version 5.0.0. Toujours utiliser la dernière version 8.x disponible sur le serveur pour de meilleures performances mémoire.
Base de données : MySQL 5.5 ou supérieur, ou MariaDB. MySQL 8 ou plus est recommandé pour une nouvelle installation.
Extensions PHP requises :
pdoavecpdo_mysql, ou à défaut l'extensionmysqli, généralement activées par défaut sur un hébergement PHP standard.Extensions PHP recommandées :
php-curl,php-gd(nécessaire pour les sparklines et graphiques dans les rapports email et l'application mobile),php-cli,php-xml,php-mbstring.
L'option Docker officielle
Matomo maintient une image Docker officielle, publiée sur Docker Hub et sur GitHub, avec un exemple docker-compose minimal fourni dans le dossier .examples du dépôt officiel (Matomo avec Apache inclus, MariaDB, et éventuellement Redis pour le cache). Les variables d'environnement honorées par l'image pour la configuration base de données sont MATOMO_DATABASE_HOST, MATOMO_DATABASE_ADAPTER, MATOMO_DATABASE_TABLES_PREFIX, MATOMO_DATABASE_USERNAME, MATOMO_DATABASE_PASSWORD et MATOMO_DATABASE_DBNAME. Dans l'assistant d'installation web qui suit, le champ "Database Server" se renseigne avec le nom du service compose (généralement db), et les identifiants correspondent aux variables MYSQL_USER/MYSQL_PASSWORD/MYSQL_DATABASE définies côté conteneur MariaDB. Les données MySQL vivent dans un volume dédié, la configuration Matomo (dossier config/) dans le volume applicatif.
Installation manuelle classique
L'archive officielle se télécharge à l'adresse https://builds.matomo.org/matomo.zip, Matomo déconseille explicitement toute source de téléchargement tierce et recommande de vérifier la signature GPG de l'archive. Après décompression, l'upload vers le serveur se fait via SSH/SCP/SFTP (le FTP n'est recommandé qu'à défaut de SSH), dans un sous-dossier dédié ou un sous-domaine séparé.
Sur les permissions : le serveur web a besoin d'un accès en lecture sur l'ensemble des fichiers, mais l'écriture doit être restreinte. Le dossier tmp/ est le seul dont l'écriture est requise en permanence, exemple de commande donnée par Matomo pour un serveur Apache tournant en www-data : sudo chown -R www-data:www-data /var/www/html/matomo/tmp/*. Le dossier config/ a besoin d'être temporairement writable pendant l'installation, puis il est recommandé de le repasser en lecture seule une fois la configuration terminée. Sur le vhost Apache ou Nginx, la documentation officielle Matomo ne publie pas d'exemple de configuration clé en main, elle part du principe que le serveur web est déjà "configured and working" avant de lancer l'installeur, un point à combler soi-même avec un vhost PHP-FPM générique plutôt qu'un modèle officiel qui n'existe pas. Une fois le serveur prêt, il suffit de naviguer vers l'URL de Matomo dans un navigateur pour déclencher l'assistant d'installation en 5 étapes.
Sécuriser l'installation, pas seulement la faire tourner
Plusieurs recommandations officielles concrètes, souvent oubliées une fois l'installation terminée :
Servir Matomo en HTTPS avec redirection SSL automatique activée dans les réglages : identifiants de connexion et jetons API transitent dans les réponses serveur.
Restreindre l'écriture serveur web précisément à
config/config.ini.php, au dossiermisc/user, aux fichiersmatomo.js/piwik.js, et àtmp/.Désactiver la mise à jour automatique en un clic via
enable_auto_update = 0dansconfig/config.ini.php, pour garder la main sur les mises à jour et les plugins.Limiter l'accès externe aux seuls fichiers nécessaires au tracking (
matomo.php,matomo.js,piwik.php,piwik.js, les fichiers d'opt-out, les containers Tag Managerjs/container_*.js), le reste peut être restreint par IP.Installer Matomo dans une base de données dédiée, pas partagée avec une autre application, exécuter le script de sécurisation MySQL, utiliser des identifiants uniques, s'assurer que le serveur de base de données n'est pas exposé directement à Internet, et activer le plugin SecurityInfo pour auditer la configuration.
Configurer précisément le cron d'archivage
La commande officielle est core:archive, exécutée en CLI, conçue pour tourner en tâche cron plutôt que de laisser Matomo recalculer les rapports à la demande. La fréquence recommandée dépend du volume de trafic : toutes les 30 minutes pour moins de 10 000 visites/jour, toutes les 1 à 2 heures entre 10 000 et 100 000 visites/jour, toutes les 6 à 24 heures au-delà de 100 000 visites/jour. Une exécution horaire reste la configuration par défaut la plus courante en pratique.
Une implémentation plus complexe à discuter ?
Discuter de votre trackingBesoin d'un accompagnement sur ce sujet ?
Freelance web analyticsArticles liés
Pour aller plus loin sur votre projet
Analytics (GA4, Matomo, Piano)
Analytics (GA4, Matomo, Piano)
Une configuration analytics avancée adaptée à votre e-commerce ou votre produit, pas juste l'installation par défaut.
Voir l'expertiseQuestions fréquemment posées
Quelle version de PHP faut-il pour installer Matomo 5 ?
PHP 8 minimum, avec compatibilité confirmée pour PHP 8.1, 8.2 et 8.3 depuis Matomo 5.0.0. Il est recommandé d'utiliser la dernière version 8.x disponible sur le serveur.
Existe-t-il une image Docker officielle pour Matomo ?
Oui, maintenue par Matomo lui-même sur Docker Hub et GitHub, avec un exemple docker-compose (Matomo + Apache, MariaDB, Redis en option) fourni dans le dossier .examples du dépôt officiel.
Quel dossier Matomo doit rester writable en permanence après installation ?
Le dossier tmp/. Le dossier config/ a besoin d'être writable seulement pendant l'installation initiale, puis il est recommandé de le repasser en lecture seule une fois la configuration terminée.
Pourquoi faut-il configurer une tâche cron après l'installation de Matomo ?
Pour l'archivage périodique via la commande core:archive. Sans cron dédié, Matomo recalcule certains rapports à la volée à chaque consultation, ce qui devient lent dès que le trafic du site grossit.