Installer Matomo avec Docker

Introduction

Matomo est une alternative gratuite à Google Analytics qui permet d’analyser le trafic de vos site Internet. En auto hébergeant Matomo, vous êtes seul propriétaire de toutes les données qui seront collectés. Aucun tiers ne viendra intercepter les donnés de vos visiteurs. Cela permet d’être conforme au RGPD et de respecter la vie privée de vos visiteurs.

Pour cette installation j’utilise l’image officielle qui est présente ici : https://github.com/linuxserver/docker-duckdns. Nous installerons Matomo derrière un reverse proxy (swag) afin de sécuriser son accès.

Remarque : Nous aurons besoin aussi des autres containeurs : MariaDB, swag et Duck DNS (ou un équivalent). Reporter vous aux 3 articles consacrés en cliquant sur les liens précédents.

Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d ‘un utilisateur Docker pour le détail). J’ai créé aussi un répertoire qui contiendra tous mes installations docker. dans ce blog, j’utiliserais pour exemple le chemin /volume/docker.

Nous allons créer aussi le répertoire matomo en ligne de commande sur le NAS (connexion en SSH) dans notre répertoire docker : /volume/docker. Cette étape est facultative, le containeur créera le répertoire automatiquement lors du déploiement si celui ci n’existe pas.

$ cd /volume/docker
$ mkdir matomo

Le fichier de configuration de Matomo

Si vous souhaitez sécuriser le lancement de ‘matomo‘, je vous engage à parcourir l’article securiser docker

Il est importent de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.

Le fichier yml en détails. Il faut remplacer pour votre configuration :

  • passwd: Le mot de passe ROOT pour acceder à la base de données mariaDB
  • PUID et PGID : celui de votre utilisateur Docker (omdocker pour ce blog),
  • TZ : Votre zone de temps,
  • MYSQL_ROOT_PASSWORD : Votre mot de passe ‘root’ pour accéder à MariaDB

Remarque : La section ‘labels‘ a été défini pour indiquer que les mises à jour d’images sont surveillées et notifiées par le containeur Watchtower. Nous effectuons aussi un lien externe avec la base de données mariaDB avec les section ‘external_links‘ et ‘networks‘.
Remarque : La containeur ‘matomo‘ doit être relier aux réseaux de ‘swag‘ et ‘mariadb‘. Nous rajoutons donc deux sections réseaux dans le ficher.

version: "2.9"
services:
 matomo:
    container_name: matomo
    image: matomo
    restart: always
    networks:
      - mariadb_default
      - swag_default
    external_links:
      - mariadb
    environment:
      - PUID=1003
      - PGID=100
      - TZ=Europe/Paris
      - MYSQL_ROOT_PASSWORD=passwd
    volumes:
      - /volume/docker/matomo:/var/www/html
    labels:
      - com.centurylinklabs.watchtower.monitor-only=true
networks:
    swag_default:
      external: true
    mariadb_default:
      external: true

Vous copiez le contenu de ce fichier dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.

La pile matomo
La pile ‘matomo

Donnez un nom à votre pile, par exemple ‘matomo‘, puis déployer cotre containeur en cliquant en bas sur « Deploy the stack‘.

Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :

Containeur matomo
Le containeur ‘matomo‘ est installé et est en fonctionnement.

Configuration de swag

La configuration d’un containeur avec ‘swag‘ est la plupart du temps très simple. ‘swag‘ propose par défaut des fichiers de configurations prédéfinis pour de nombreux services.

Ces fichiers se trouvent dans le répertoire d’installation de swag : /volume/docker/swag/nginx/proxy-confs/.

Fichier de configuration nginx
Le fichier de configuration ‘matomo‘ coté ‘swag

Nous allons simplement recopier ce fichier et le renommer ‘matomo.subdomain.conf’.

$ cd /volume/docker/swag/nginx/proxy-confs/
$ cp matomo.subdomain.conf.sample matomo.subdomain.conf

Nous relançons le containeur swag soit via Portainer, soit en ligne de commande (sudo docker restart swag) pour qu’il prenne en charge la redirection du containeur ‘matomo‘.

Realcement contaneur swag
Nous relançons le containeur ‘swag

Nous pouvons maintenant nous connectez à ‘matomo‘ avec l’URL : https//matomo.subdomain.duckdns.org.

Si vous avez oublier une étape (relancer swag, relier votre containeur au réseau swag…) vous risquer de tomber sur cet écran :

erreur connexion matomo
Erreur connexion à ‘matomo

Si tout s’est bien passé par contre, vous arriverez sur l’écran d’accueil de configuration de ‘matomo‘ :

Premier lancement matomo
Premier lancement de ‘matomo

Nous continuons la configuration de ‘matomo‘ qui effectue avec une vérification du système :

Vérification du système
Vérification du système

Nous arrivons à l’étape de création de la base de données ‘matomo‘. Il faudra bien préciser le nom de votre containeur ‘mariadb‘ comme adresse de serveur de bases de données. Vous pouvez remplir les champs comme ceci en choisissant un mot de passe pour votre base de données ‘matomo‘ :

Installation de la base de données matomo
Installation de la base de données ‘matomo

Une fois la configuration terminée, il est possible qu’une mise à jour de la base de donnée soit nécessaire. Accepter cette mise à jour. Vous devriez après arriver à l’accueil du tableau de bord :

Accueil matomo
Page d’accueil de ‘matomo

Pour aller plus loin

Configuration de fail2ban

fail2ban‘ est un analyseur de log qui vise à bannir les adresses IP faisant du spamming sur vos applications hébergées. La configuration se fait au niveau du containeur ‘swag‘ en deux étapes. Nous allons l’activer pour ‘matomo‘ et bannir les adresses IP après 4 tentatives consécutives infructueuses.

Nous nous déplaçons en premier temps dans le répertoire /volume/docker/swag/fail2ban/filter.d/ et nous créons le fichier ‘matomo.conf‘ avec le contenu suivant :

Remarque : Je pars du principe que votre ‘subdomain’ se prénomme ‘matomo‘.

[Definition]
failregex = ^<HOST> \- \S+ \[\] \"POST \/.*? \S+\" 403 .+ \"https:\/\/matomo.+\" .+$
ignoreregex =
datepattern = {^LN-BEG}%%ExY(?P<_sep>[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s*%%z)?
              ^[^\[]*\[({DATE})
              {^LN-BEG}

Nous revenons ensuite dans le répertoire parent /volume/docker/swag/fail2ban/ et nous ouvrons le fichier ‘jail.local‘ pour lui rajouter le bloc suivant à la fin :

[matomo]
enabled  = true
filter   = matomo
port     = http,https
logpath  = /config/log/nginx/access.log
maxretry = 4

Nous relançons le containeur ‘swag‘ soit via Portainer, soit en ligne de commande : sudo docker restart swag.

Vérification du système

Nous cliquons sur la roue crantée en haut à droite pour accéder aux paramètres. Il est probable que ‘matomo‘ vous indique qu’il a détecté des problèmes dans la configuration initiale. Cliquer sur le lien ‘afficher le rapport complet‘ pour avoir le détails des corrections à appliquer :

Vérification du sytème
Vérification du système

Intégration de matomo sur votre site Internet

Matomo propose plusieurs méthodes d’intégration à un site web : Par JavaScript, ou avec une image ou alors avec un code d’API compatible avec les CMS. Pour voir toutes ces méthodes d’intégrations, cliquez sur ‘sites web‘, puis ‘code de suivi‘.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *