By Walid ETTAYEB

Je cherchais à voir quel était le trafic sur le site "ettayeb.fr" et m'assurer qu'il était utilisé par la communauté (ce qui semble être le cas) afin de ne pas perdre de temps sur des choses inutiles chaque semaine lorsque je prépare un nouvel article à publier.

Bien sûr, Google Analytics m'est venu à l'esprit immédiatement, mais je n'ai vraiment pas envie d'utiliser un tel outil.  Bien que le monde soit de plus en plus sensibilisé à la protection de la vie privée en ligne, je ne ferai jamais confiance à une entreprise qui vit presque exclusivement de la publicité par la collecte de données.  Donc leur fournir plus de données est la dernière chose que je veux faire... à part ça... je suis pour l'open source et l'auto-hébergement.

J'ai commencé à chercher, et j'ai trouvé plusieurs options différentes, mais pour une raison que j'ignore, Matomo m'a tout de suite interpellé. Je me suis dit que j'allais l'installer et voir ce que ça donnait.

Dans cet article, je vais vous montrer comment configurer MariaDB (nécessaire pour utiliser Matomo) sur une machine bare metal.  Je vous montrerai également comment le serveur de base de donnée pour que vous puissiez y accéder à distance si nécessaire.  

Installation de MariaDB

Note : J'utilise des systèmes basés sur Ubuntu pour presque tout.  N'hésitez pas à utiliser le système d'exploitation qui vous convient le mieux.  Sachez simplement que vous devrez peut-être modifier les commandes listées afin de mieux répondre aux besoins de ce système d'exploitation.

sudo apt update && sudo apt dist-upgrade -y
sudo apt install mariadb-server -y

Connectez-vous à MariaDB et configurez un compte utilisateur pour l'accès local et distant.

sudo mysql -u root -p 

Dans la console mysql, entrez ce qui suit :

use mysql;
SELECT User,Host,plugin FROM mysql.user;
MariaDB [mysql]> SELECT User,Host,plugin FROM mysql.user;
+---------------+-----------+-----------------------+
| User          | Host      | plugin                |
+---------------+-----------+-----------------------+
| root          | localhost | unix_socket           |

Maintenant, ajoutons notre compte utilisateur local :

CREATE USER 'walid'@'localhost' IDENTIFIED BY 'some_password_here;

Vous devriez obtenir un retour indiquant Query OK

Ensuite, nous allons également créer un compte utilisateur distant.  Pour cela, il suffit d'appuyer sur la touche flèche haut de votre clavier... cela devrait afficher la dernière requête que vous venez de saisir.

Now modify that query by deleting localhost and putting a percent sign in it's place %.  The entire command should now look like:

Modifiez maintenant cette requête en supprimant  localhost  et en mettant le signe % à la place.  La commande entière devrait maintenant ressembler à ceci :

CREATE USER 'walid'@'%' IDENTIFIED BY 'some_other_password_here';

Là encore, vous devriez recevoir un message de requête Query OK.

Now you have a local account <your user>@localhost you can use when you are ssh'd in, or physically on that machine.  You also have a remote user you can use whtn you are not ssh'd in, or physically on the machine, <your user>@%.

Maintenant vous avez un compte<your user>@localhost que vous pouvez utiliser lorsque vous êtes connecté en ssh, ou physiquement sur cette machine.  Vous avez également un utilisateur distant que vous pouvez utiliser lorsque vous n'êtes pas connecté par ssh, ou physiquement sur la machine,  <your user>@%.

Ensuite, nous accordons des privilèges à ces comptes.

GRANT ALL PRIVILEGES ON *.* TO 'walid'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'walid'@'%';
FLUSH PRIVILEGES;

Chaque requête est censée fournir un message Query OK.

Nous devons activer le plugin mysql_native_plugin pour que nos mots de passe et nos accès fonctionnent avec les applications web.  Pour cela, nous exécutons une dernière requête :

UPDATE user SET plugin='mysql_native_password' WHERE User='<your user here>';

Nous pouvons maintenant réexécuter notre requête initiale, et nous verrons nos nouveaux comptes comme ci-dessous :

SELECT User,Host,plugin FROM mysql.user;
MariaDB [mysql]> SELECT User,Host,plugin FROM mysql.user;
+---------------+-----------+-----------------------+
| User          | Host      | plugin                |
+---------------+-----------+-----------------------+
| root          | localhost | unix_socket           |
| walid         | localhost | mysql_native_password |
| walid         | %         | mysql_native_password |

Enfin, tapez quit et appuyez sur la touche Entrée pour quitter le CLI mysql.

Maintenant, nous devons faire une dernière chose pour permettre l'accès à distance à notre serveur MariaDB.

Éditez le fichier /etc/mysql/my.cnf et ajoutez le texte suivant sur une nouvelle ligne:

bind-address=0.0.0.0

Maintenant nous devons redémarrer mysql et mariadb.

sudo systemctl restart mysql
sudo systemctl restart mariadb

Maintenant vous avez une installation de MariaDB avec de nouveaux utilisateurs, locaux et distants, et un accès depuis des systèmes distants.

Installation de Matomo avec Docker-CE

Cette partie est un peu moins chargée de commandes.  Nous voulons installer Matomo avec Docker, donc nous n'avons besoin que d'une seule ligne de commande.

docker run -d -p 10080:80 -p 10443:443 -v matomo:/var/www/html --name=matamo matomo

En pratique, il s'agit d'exécuter l'application Matomo en arrière-plan, et de transférer le port 10080 de l'hôte vers le port 80 du conteneur, et le port 10443 de l'hôte vers le port 443 du conteneur.
Créez un volume pour ne pas perdre de données lorsque je mets à jour l'image / le conteneur Matomo appelé "matomo" sur l'hôte, et transférez-le vers /var/www/html à l'intérieur du conteneur docker.

Enfin, nommez le conteneur "matomo" et utilisez l'image de docker hub appelée matomo.

Maintenant, appuyez sur Entrée, et laissez-le s'exécuter.

Utiliser NginX-Proxy-Manager pour diriger le trafic vers Matomo (facultatif)

Si vous avez installé NginX-Proxy-Manager, vous pouvez l'utiliser pour contrôler le trafic vers votre nouvelle installation Matomo, ainsi que pour sécuriser l'installation avec des certificats SSL LetsEncrypt.

Si vous souhaitez également installer NginX-Proxy-Manager dans un conteneur Docker, consultez l'article suivant :

Comment utiliser Nginx Proxy Manager
Grâce à ce tutoriel, vous allez pouvoir installer et déployer Nginx Proxy Manager sur un serveur Ubuntu exécutant Docker.

Créez un nouvel hôte, et dans l'onglet Détails, entrez votre nom de domaine pour l'application qu'on vient d'installer.  Par exemple, j'ai utilisé "analytics.ettayeb.fr", puis appuyez sur entrée.  Ajoutez l'adresse IP de l'application Matomo dans le champ IP / Hostname, et le port que vous avez défini pour votre machine hôte (j'ai utilisé 10080).

A ce stade, vous pouvez sauvegarder, et vous assurer que la page de l'assistant de démarrage s'affiche pour Matomo avec cette configuration, en allant sur votre site (dans mon cas, je suis allé sur http://analytics.ettayeb.fr).  Si elle se charge, c'est bon, passez à l'étape suivante pour SSL.

Ensuite, passez à l'onglet "SSL", et dans le menu déroulant "Certificat SSL", sélectionnez l'option permettant de demander un nouveau certificat.  Cliquez sur le bouton "Force SSL" pour l'activer. Entrez votre adresse électronique et cliquez sur le bouton "I agree...".  Cliquez maintenant sur "Enregistrer".  Soyez patient.  Il est en train de demander des certificats à LetsEncrypt, et le système LetsEncrypt teste votre serveur pour s'assurer que vous êtes correctement configuré.

Si vous ne voyez pas d'erreurs, vous êtes prêt.  Maintenant, vérifiez si vous pouvez accéder à votre site, et assurez-vous qu'il vous force à utiliser votre version SSL (https).

Configuration de Matomo

Lorsque vous arrivez à l'assistant de première exécution avec un système basé sur SSL, vous pouvez cliquer sur 'Suivant', et Matomo effectuera une auto-vérification du système.  Faites défiler les résultats, et assurez-vous que vous ne voyez aucun problème.  Si tout semble correct, continuez.

Ensuite, vous devez saisir les informations relatives à votre base de données afin que Matomo puisse créer la base de données et les tables dont il a besoin.

Ici, à cause de la façon dont nous avons configuré MariaDB sur l'hôte, et Matomo dans Docker, nous devons traiter la configuration comme s'ils étaient sur des serveurs différents (parce que techniquement, ils le sont).
Entrez l'IP du serveur (IP pulbique, car le conteneur Docker verra localhost comme son propre conteneur, et l'IP privée du serveur n'existera pas pour Docker).  Port 3306, votre nom d'utilisateur et mot de passe à distance.  Pour le nom de la base de données, j'ai simplement choisi 'matomo'.  Pour le préfixe de la table, je l'ai laissé tel quel, et enfin j'ai laissé l'adaptateur PDO/Mysql.

Cliquez sur suivant, et si tout se déroule bien, vous devriez recevoir un message disant "Table Created".

Maintenant, vous pouvez créer votre premier code de suivi de site Web... et c'est là que la magie commence.  Saisissez les informations relatives au site auquel vous souhaitez ajouter le suivi, puis copiez le code fourni.  Vous devez placer ce code dans la zone de la balise  de votre site.

C'est terminé !  Vous êtes prêt et vous devriez commencer à voir des informations analytiques provenant de votre site.

Walid ETTAYEB • 36 Articles

Passionné par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

View Articles