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 :

Partager cet article :