Featured image of post Installation Matomo avec Docker

Installation Matomo avec Docker

Installation de l'analyseur de traffic Matomo avec Docker

Introduction

Matomo est une alternative libre à Google Analytics qui permet d’analyser le trafic de votre site Internet. En auto hébergeant Matomo, vous êtes seul propriétaire de toutes les données qui seront collectées. Aucun tiers ne viendra intercepter les données 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/matomo-org/docker.

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). J’ai créé aussi un répertoire qui contiendra toutes 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

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

Il est important 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,
  • /data/docker : Le chemin vers le répertoire de votre application.

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’

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é :

Le container ‘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/

Le fichier de configuration de ‘matomo’

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’.

Nous relançons le containeur ‘matomo’

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’

Si tout s’est bien passé par contre, vous arriverez sur l’écran d’accueil de configuration de ‘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

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’

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 :

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 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’.

Généré avec Hugo
Thème Stack conçu par Jimmy