Utiliser Piwik avec Docker

Lorsqu’il s’agit de mesurer le traffic de son site internet on connaît tous les leaders qui proposent des outils d’analytics comme Google analytics ou bien MixPanel ou encore bien d’autres… Mais il existe aussi d’autres alternatives comme Piwik.

Pour ceux qui ne connaîtraient pas Piwik, c’est un outil d’analytics sous licence libre (GnuGPL v3) qu’il est possible d’auto-héberger, c’est à dire que vous pouvez installer directement sur votre serveur ce qui vous permet de garder un accès total à vos données.

Vous pouvez visiter le site officiel pour avoir plus d’informations ou tester la démo en ligne.

 

Objectif du guide

Dans ce guide, nous allons voir comment mettre en place Piwik avec Docker, un accès en HTTPS vers Piwik sera de la partie.

Pour cela nous allons utiliser docker-compose. Notre stack sera composée de Nginx, MariaDB et Piwik.

Concernant Piwik et MariaDB nous utiliserons les images fournies par BitNami :

Enfin pour ce qui est de Nginx et HTTPS nous utiliserons nginx-proxy et docker-letsencrypt-nginx-proxy-companion qui sont deux images qui vont nous permettre de générer automatiquement la configuration de Nginx ainsi que les certificats Let’s Encrypt.

 

Création de l’arborescence

Pour commencer nous allons créer un dossier srv-piwik et y ajouter notre fichier docker-compose.yml

mkdir srv-piwik && cd srv-piwik

touch docker-compose.yml

 

Ajout de Nginx

Maintenant nous allons rajouter les services nginx-proxy et ssl-companion :

version: ‘2’

services:

nginx-proxy:

image: jwilder/nginx-proxy

container_name: nginx-proxy

ports:

– ’80:80′

– ‘443:443’

volumes:

– /var/run/docker.sock:/tmp/docker.sock:ro

– /etc/nginx/vhost.d

– /usr/share/nginx/html

– /apps/web/ssl:/etc/nginx/certs:ro

ssl-companion:

image: jrcs/letsencrypt-nginx-proxy-companion

container_name: ssl-companion

volumes:

– /apps/web/ssl:/etc/nginx/certs:rw

– /var/run/docker.sock:/var/run/docker.sock:ro

volumes_from:

– nginx-proxy

depends_on:

– nginx-proxy

 

Ajout de MariaDB

Ensuite nous allons ajouter MariaDB :

mariadb:

image: ‘bitnami/mariadb:latest’

environment:

– MARIADB_ROOT_PASSWORD=YOUR_ROOT_PASSWORD

volumes:

– ‘./data/mariadb/mariadb:/bitnami/mariadb’

Explication de la configuration :

  • On définit que l’on utilise l’image bitnami/mariadb
  • On définit la valeur du mot de passe de la base de données
  • On crée un volume pour pouvoir récupérer les données si l’on souhaite faire un backup

 

Ajout du service Piwik

Pour terminer on ajoute le service Piwik :

piwik:

image: ‘bitnami/piwik:latest’

ports:

– 80

depends_on:

– mariadb

volumes:

– ‘./data/piwik/latest:/bitnami/piwik’

– ‘./data/apache/latest:/bitnami/apache’

– ‘./data/php/latest:/bitnami/php’

environment:

– VIRTUAL_HOST=analytics.yourdomain.fr

– LETSENCRYPT_HOST=analytics.yourdomain.fr

– LETSENCRYPT_EMAIL=mail@yourdomain.fr

– MARIADB_PASSWORD=YOUR_ROOT_PASSWORD

Explication de la configuration :

  • On définit que l’on utilise l’image bitnami/piwik
  • On mappe le port 80 entre la machine hôte et le container
  • On lie le service au service mariadb
  • On définit les volumes
  • On définit les variables d’environnement nécéssaires à Nginx et Let’s Encrypt en définissant le domaine par lequel on souhaite accéder au service
  • Pour terminer on définit le mot de passe de la base de données qui doit être identique à celui déclarer dans le service mariadb

 

Finalité du fichier docker-compose

Voici le fichier docker-compose.yml complet :

version: ‘2’
services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
– ’80:80′
– ‘443:443’
volumes:
– /var/run/docker.sock:/tmp/docker.sock:ro
– /etc/nginx/vhost.d
– /usr/share/nginx/html
– /apps/web/ssl:/etc/nginx/certs:ro
ssl-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: ssl-companion
volumes:
– /apps/web/ssl:/etc/nginx/certs:rw
– /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
– nginx-proxy
depends_on:
– nginx-proxy
mariadb:
image: ‘bitnami/mariadb:latest’
environment:
– MARIADB_ROOT_PASSWORD=YOURROOTPASSWORD
volumes:
– ‘./data/mariadb/mariadb:/bitnami/mariadb’
piwik:
image: ‘bitnami/piwik:latest’
ports:
– 80
depends_on:
– mariadb
volumes:
– ‘./data/piwik/latest:/bitnami/piwik’
– ‘./data/apache/latest:/bitnami/apache’
– ‘./data/php/latest:/bitnami/php’
environment:
– VIRTUAL_HOST=analytics.yourdomain.fr
– LETSENCRYPT_HOST=analytics.yourdomain.fr
– LETSENCRYPT_EMAIL=mail@yourdomain.fr
– MARIADB_PASSWORD=YOURROOTPASSWORD

 

Il ne vous reste plus qu’à copier le fichier docker-compose.yml sur votre serveur, remplacer les variables d’environnement avec vos valeurs et lancer la commande

docker-compose up -d

 

Première connexion à Piwik

Une fois les services démarrés rendez-vous sur le domaine que vous avez configuré.

Les identifiants par défaut sont :

  • Utilisateur : user
  • Mot de passe : bitnami

Ensuite il ne vous reste plus qu’à suivre les instructions pour commencer tracker les données de votre site.

Pensez aussi à modifier les informations de connexion.

Voila nous avons maintenant un serveur Piwik à notre disposition qui est accessible en HTTPS.