Qu'est-ce-que Matomo ?
Matomo est une alternative libre à Google Analytics vous permettant de générer des statistiques concernant vos sites Web. Vous choisissez les données qui seront collectées et vous en restez maître. Cela est un véritable atout pour vos utilisateurs. Leurs données ne serviront plus à alimenter les bases de données des géants du Web tels que Google.
Prérequis
- Serveur Web : Apache, Nginx ...etc.
- PHP >= 5.5.9. Version >= 7 recommandée.
- Base de données : MySQL ou MariaDB >= 5.7
- Extensions PHP
- PHP Curl
- PHP GD
- PHP Cli
- PHP Mysql
- PHP xml
- PHP Mbstring
Pour un site avec 100 000 vues ou moins par mois, Matomo recommande :
- CPU : 2
- RAM 2 GB
- Disque SSD : 50 GB
Je pars du principe que votre serveur MariaDB, PHP, ainsi que le serveur Web sont préalablement installés.
Téléchargement de Matomo
cd /var/www/
# Téléchargement de la dernière version de Matomo
wget https://builds.matomo.org/matomo.zip
apt install -y unzip
unzip matomo.zip
# On supprime les fichiers inutiles
rm How\ to\ install\ Matomo.html && rm matomo.zip
chown -R www-data:www-data /var/www/matomo
Création de la base de données et d'un nouvel utilisateur
J'utilise ici MariaDB mais cela vaut également pour MySQL.
# Connexion en tant que root au serveur de base de données
mysql -u root -p
Entrez les commandes suivantes en prenant soin de modifier "NOM_DB", "UTILISATEUR" et "MDP" :
-- Création d'une nouvelle base de données
CREATE DATABASE NOM_DB;
-- Création d'un utilisateur dédié
CREATE USER 'UTILISATEUR'@'localhost' IDENTIFIED BY 'MDP';
-- Attribution des droits du nouvel utilisateur sur la nouvelle table
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON NOM_DB.* TO 'UTILISATEUR'@'localhost';
flush privileges;
exit;
Configuration du serveur Web Nginx
# Création du fichier de configuration sur le serveur Web
nano /etc/nginx/sites-enabled/matomo.domaine.tld.conf
server {
# Supprimez cette ligne si vous ne souhaitez pas le support d'IPv6
listen [::]:80;
listen 80;
# Entrez votre nom de domaine
server_name stats.DOMAIN.TLD;
# Fichiers où seront stockés les logs
access_log /var/log/nginx/matomo.access.log;
error_log /var/log/nginx/matomo.error.log;
# Chemin vers les fichiers de Matomo
root /var/www/matomo/;
index index.php;
## only allow accessing the following php files
location ~ ^/(index|matomo|piwik|js/index).php {
include snippets/fastcgi-php.conf;
fastcgi_param HTTP_PROXY "";
# Modifiez la version de PHP selon votre version (php -v)
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
## needed for HeatmapSessionRecording plugin
location = /plugins/HeatmapSessionRecording/configs.php {
include snippets/fastcgi-php.conf;
fastcgi_param HTTP_PROXY "";
# Modifiez la version de PHP selon votre version (php -v)
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
## deny access to all other .php files
location ~* ^.+\.php$ {
deny all;
return 403;
}
## serve all other files normally
location / {
try_files $uri $uri/ =404;
}
## disable all access to the following directories
location ~ /(config|tmp|core|lang) {
deny all;
# replace with 404 to not show these directories exist
return 403;
}
location ~ /\.ht {
deny all;
return 403;
}
location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {
allow all;
## Cache images,CSS,JS and webfonts for an hour
## Increasing the duration may improve the load-time, but may cause old files to show after an Matomo upgrade
expires 1h;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~ /(libs|vendor|plugins|misc/user) {
deny all;
return 403;
}
## properly display textfiles in root directory
location ~/(.*\.md|LEGALNOTICE|LICENSE) {
default_type text/plain;
}
}
systemctl reload nginx
Installation des modules PHP
N'oubliez pas de faire correspondre les modules avec votre version de PHP.
# Affiche la version de PHP
php -v
apt install php7.3-curl php7.3-gd php7.3-cli php7.3-mysql php7.3-xml php7.3-mbstring
Activer HTTPS avec un certificat Let's Encrypt
apt install python3-certbot-nginx
# Modifiez l'email ainsi que le nom de domaine
certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d analytics.example.com
Finalisation de l'installation
Rendez-vous sur https://matomo.votre-domaine.tld/ puis complétez le formulaire d'installation.
Configurations supplémentaires
Rendez-vous sur https://matomo.DOMAIN.TLD/index.php?module=Installation&action=systemCheckPage afin de vous assurer que tous les indicateurs sont au vert.
Modifier la taille maximale des paquets dans MariaDB
nano /etc/mysql/my.cnf
Ajoutez :
[mysqld]
max_allowed_packet=64MB
# Relancer MariaDB
systemctl restart mariadb
Forcez l'usage de SSL
nano /var/www/matomo/config/config.ini.php
Ajouter sous [General] :
force_ssl = 1
Ajouter une tâche CRON pour archiver automatiquement les rapports
crontab -u www-data -e
MAILTO="CONTACT@DOMAIN.TLD"
5 * * * * www-data /usr/bin/php /var/www/matomo/console core:archive --url=https://stats.DOMAIN.TLD > /dev/null
Mise en place de l'authentification à 2 facteurs (2FA)
L'authentification à deux facteurs améliore grandement la sécurité. Je vous invite donc à l'activer depuis Personnel > Paramètres ou via le lien suivant : https://matomo.DOMAIN.TLD/index.php?module=UsersManager&action=userSettings.
Rendez-vous en bas de la page et cliquez sur "Activer l'authentification à deux facteurs".
Sauvegardez précieusement les codes de récupération dans un endroit sûr.
Ils vous serviront à vous connecter à votre compte si jamais un problème survenait sur votre générateur de codes.
Ensuite, utilisez votre application habituelle (andOTP, Google Authenticator ...etc.) pour scanner le QR-Code et entrez le code fourni par cette dernière.
C'est terminer. Lors de votre prochaine connexion, votre mot de passe + un code d'identification unique vous seront demandés lors de la connexion à Matomo.
Installation sur votre site Web
Matomo propose énormément de manières d'inclure un code de suivi dans vos pages Web.
Rendez-vous sur https://matomo.DOMAIN.TLD/index.php?module=CoreAdminHome&action=trackingCodeGenerator afin d'en savoir plus.
Si vous utilisez un CMS, comme Wordpress, Ghost ou Drupal, rendez-vous sur cette page afin d'obtenir la procédure d'installation. Une multitude de plugins sont disponibles vous facilitant grandement cette étape.
Si vous développez vous-même votre site, il suffit d'insérer le code de suivi avant la balise </head> sur vos pages Web.
Sources :