Installer et sécuriser Matomo auto-hébergé sur un serveur LiteSpeed (ServerAvatar)

Matomo est une excellente alternative à Google Analytics pour suivre les statistiques de vos sites tout en gardant vos données chez vous.

Mais en auto-hébergé, surtout sur un stack LiteSpeed / OpenLiteSpeed + ServerAvatar, quelques points de configuration sont indispensables pour garantir sécurité et performances.

Dans ce tutoriel, on va voir comment :

  1. Installer Matomo sur un sous-domaine (ex. analytics.mon-domaine.fr)

  2. Corriger les alertes de sécurité : config accessible, répertoires tmp/ et lang/

  3. Forcer l’utilisation du HTTPS

  4. Mettre en place un cron d’archivage propre via ServerAvatar

  5. (Optionnel) Optimiser les performances avec LOAD DATA INFILE


1. Pré-requis

Avant de commencer, assurez-vous d’avoir :

  • Un serveur avec LiteSpeed ou OpenLiteSpeed (par exemple via ServerAvatar)

  • PHP 7.4+ (idéalement PHP 8.1 ou 8.2)

  • MySQL/MariaDB

  • Un sous-domaine dédié, par exemple :

    analytics.mon-domaine.fr

  • Accès SSH et accès à votre base de données (phpMyAdmin ou ligne de commande)


2. Installation de Matomo sur le serveur

2.1. Créer le site / vhost dans ServerAvatar

  1. Dans ServerAvatar, créez un nouveau site ou ajoutez un domaine :

    • Domaine : analytics.mon-domaine.fr

    • Dossier racine : par exemple

      /home/UTILISATEUR/analytics/public_html

  2. Activez le SSL Let’s Encrypt pour ce domaine.

2.2. Téléchargement et déploiement de Matomo

En SSH sur votre serveur :

cd /home/UTILISATEUR/analytics/public_html

# Télécharger la dernière version
wget https://builds.matomo.org/matomo.zip

# Décompresser
unzip matomo.zip
mv matomo/* .
mv matomo/.* . 2>/dev/null || true
rmdir matomo
rm matomo.zip

Donnez les bons droits (adaptés à votre setup) :


chown -R UTILISATEUR:UTILISATEUR /home/UTILISATEUR/analytics/public_html

2.3. Lancer l’installateur web

  • Ouvrez https://analytics.mon-domaine.fr dans votre navigateur.

  • Suivez les étapes :

    • Vérification du système

    • Configuration de la base de données

    • Création du super administrateur

    • Ajout du premier site à suivre

À ce stade, Matomo est installé mais la vérification du système vous affichera probablement des avertissements importants, surtout sur LiteSpeed.

3. Corriger les alertes de sécurité sur LiteSpeed

Par défaut, Matomo vous signale souvent :

  • config/config.ini.php accessible publiquement

  • tmp/ et lang/en.json accessibles via le navigateur

Sur un serveur Apache classique, Matomo se repose sur des fichiers .htaccess.

Avec LiteSpeed / OpenLiteSpeed, il faut s’assurer que ces fichiers sont pris en compte et/ou ajouter des règles adaptées.

3.1. Protéger config, tmp et lang en .json via .htaccess

Dans le dossier racine de Matomo :

cd /home/UTILISATEUR/analytics/public_html
nano .htaccess

Ajoutez (ou complétez) le fichier avec :

RewriteEngine On

# --- Sécurité Matomo ---

# Bloque totalement l'accès au répertoire config/
RewriteRule ^config/.*$ - [F,L]

# Bloque l'accès HTTP à tmp/
RewriteRule ^tmp/.*$ - [F,L]

# Bloque l'accès au fichier de langue sensible
RewriteRule ^lang/en\.json$ - [F,L]

Enregistrez, puis testez depuis votre machine :

curl -I https://analytics.mon-domaine.fr/config/config.ini.php
curl -I https://analytics.mon-domaine.fr/tmp/
curl -I https://analytics.mon-domaine.fr/lang/en.json

Vous devez obtenir un HTTP 403 (ou un autre code ≠ 200).

Si vous êtes encore en 200, vérifiez côté OpenLiteSpeed que les .htaccess sont bien activés (paramètre autoLoadHtaccess dans la conf du vhost).

Une fois cela en place, retournez dans Matomo → Administration → Système → Vérification du système :

les sections Répertoires privés requis et Répertoires privés recommandés devraient passer au vert.

4. Forcer l’utilisation du HTTPS dans Matomo

Même si votre domaine est déjà en HTTPS, Matomo recommande de forcer l’utilisation du SSL dans sa propre configuration.

Éditez le fichier :

cd /home/UTILISATEUR/analytics/public_html/config
nano config.ini.php

Dans la section [General], ajoutez (ou vérifiez) :

[General]
force_ssl = 1
assume_secure_protocol = 1

Enregistrez.

Désormais, Matomo redirigera vers HTTPS et considérera les URLs comme sécurisées.

5. Mettre en place le cron d’archivage Matomo (ServerAvatar)

Par défaut, Matomo peut archiver les rapports au moment où vous consultez l’interface.

Ça fonctionne, mais sur un site sérieux, il est préférable de pré-calculer les rapports via un cron pour :

  • Accélérer le chargement du back-office Matomo

  • Éviter des pics de charge aléatoires

5.1. Commande core:archive

Dans le dossier racine de Matomo :

cd /home/UTILISATEUR/analytics/public_html
/usr/bin/php console core:archive --url=https://analytics.mon-domaine.fr/

Testez cette commande une fois en SSH pour vérifier qu’elle s’exécute sans erreur.

5.2. Créer la tâche cron dans ServerAvatar

Dans ServerAvatar, ajoutez un cron job pour l’utilisateur du site, avec une fréquence raisonnable (par exemple, toutes les heures) :

5 * * * * /usr/bin/php /home/UTILISATEUR/analytics/public_html/console core:archive --url=https://analytics.mon-domaine.fr/ > /home/UTILISATEUR/matomo-archive.log 2>&1

Explication :

  • 5 * * * * : tous les jours, toutes les heures, à H+5

  • console core:archive : commande Matomo d’archivage

  • matomo-archive.log : fichier log pour vérifier ce qui se passe en cas de souci

5.3. Désactiver l’archivage via le navigateur

Dans Matomo :

  1. Allez dans Administration → Paramètres généraux.

  2. Section Archiver les rapports :

    • Désactivez l’archivage “lorsque les visites sont enregistrées”.

    • Indiquez que les rapports sont archivés via la ligne de commande (cron).

Résultat : Matomo ne fera plus de gros calculs au moment où vous consultez les rapports : tout sera déjà prêt, pré-calculé par le cron.

6. (Optionnel) Optimiser les performances avec

LOAD DATA INFILE

Dans la vérification du système, Matomo peut vous afficher :

Erreur: LOAD DATA INFILE failed…
Access denied for user …
Loading local data is disabled…

Ce warning concerne exclusivement la performance de l’archivage.

Matomo fonctionnera sans, mais sur des sites à gros trafic (> 100 000 pages vues/mois), activer LOAD DATA INFILE permet de gagner du temps.

6.1. Activer local_infile côté MySQL

Éditez la configuration MySQL (chemin classique sous Ubuntu) :

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Dans la section [mysqld] :

[mysqld]
local_infile = 1

Redémarrez MySQL :

sudo systemctl restart mysql

Vérifiez :

mysql -u root -p -e "SHOW VARIABLES LIKE 'local_infile';"

Vous devez voir ON.

6.2. Donner le privilège FILE à l’utilisateur Matomo

Attention : ce privilège permet à l’utilisateur d’accéder à des fichiers côté serveur via MySQL.

À n’accorder que si vous maîtrisez votre environnement.

Dans MySQL :

GRANT FILE ON *.* TO 'UTILISATEUR_MATOMO'@'localhost';
FLUSH PRIVILEGES;

Remplacez UTILISATEUR_MATOMO par le nom d’utilisateur utilisé par Matomo dans config/config.ini.php.

Ensuite, relancez l’archivage :

cd /home/UTILISATEUR/analytics/public_html
/usr/bin/php console core:archive --url=https://analytics.mon-domaine.fr/

Retournez dans Vérification du système : la ligne LOAD DATA INFILE devrait passer au vert.

Si vous préférez rester prudent (ou que le trafic est modeste), vous pouvez simplement ignorer ce warning : Matomo tournera parfaitement sans.

7. Vérifications finales

À la fin de ce tuto, vous devriez avoir :

  • ✅ Matomo accessible uniquement en HTTPS

  • ✅ Le fichier config/config.ini.php inaccessible depuis le web

  • ✅ Les dossiers tmp/ et lang/en.json protégés

  • ✅ Un cron d’archivage Matomo en place (toutes les heures, par exemple)

  • ✅ Une “Vérification du système” globalement au vert, avec éventuellement un simple warning LOAD DATA INFILE si vous choisissez de ne pas l’activer

Conclusion

Installer Matomo auto-hébergé sur un serveur LiteSpeed/ServerAvatar, ce n’est pas compliqué, mais ça demande quelques ajustements :

  • Adapter les règles de sécurité aux comportements spécifiques de LiteSpeed / OpenLiteSpeed

  • Mettre en place un cron pour éviter que l’interface Matomo soit lente

  • Éventuellement optimiser MySQL pour les gros volumes

Une fois ces étapes en place, vous avez une solution d’analytics :

  • Respectueuse de la vie privée,

  • Sous votre contrôle,

  • Performante même avec plusieurs sites WordPress branchés dessus.