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 ou bien MixPanel et d’autres encore, mais il existe aussi d’autres alternatives comme Piwik par exemple.
Pour ceux qui ne connaitraient pas Piwik, c’est un outil d’analytics open-source que vous pouvez installer directement sur votre serveur ce qui vous permet de garder un accès total sur vos données.
Vous pouvez visiter le site pour avoir plus d’informations ou cliquer ici pour voir la démo.
Dans cet article nous allons voir comment mettre en place Piwik en HTTPS avec Docker. 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.
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
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
Ensuite nous allons ajouter MariaDB :
mariadb:
image: 'bitnami/mariadb:latest'
environment:
- MARIADB_ROOT_PASSWORD=YOURROOTPASSWORD
volumes:
- './data/mariadb/mariadb:/bitnami/mariadb'
- 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.
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=YOURROOTPASSWORD
- 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
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
Si vous voulez plus de détail sur la configuration du DNS et l’installation sur Digital Ocean vous pouvez consulter cet article.
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 via HTTPS.
Vous pouvez retrouver le fichier docker-compose ici.