En tant que site Web éthique, nous essayons de garder le manuel Linux autant Google et le suivi gratuit que possible. À cet égard, nous nous abstenons d'utiliser Google Analytics pour mesurer le trafic du site Web.
Au lieu de cela, nous utilisons Plausible Analytics. Il s'agit d'une alternative simple, légère (<1 Ko), open-source et respectueuse de la vie privée à Google Analytics (GA).
Il ne vous donne peut-être pas autant de détails que GA, mais il vous donne une idée du trafic que vous obtenez sur votre site Web, ainsi que du taux de rebond et de la durée de la visite.

Vous pouvez également voir quelles pages reçoivent le plus de visites, d'où votre site Web reçoit le trafic, le taux de rebond et la durée de la page. Vous pouvez également mesurer le trafic en fonction de la région géographique et des appareils.

Fondé et développé par Uku Taht et Marco Saric, Plausible renforce considérablement l'idée que le trafic du site Web peut être analysé sans entraver la vie privée des visiteurs.
Si vous pouvez vous le permettre, soutenez le projet en optant pour leur plan d'hébergement géré. Ils offrent même un essai gratuit de 30 jours.
Si vous avez plusieurs sites Web à fort trafic et que vous trouvez que le prix dépasse votre budget, vous pouvez auto-héberger le projet open source Plausible comme nous le faisons sur Linux Handbook.
Analyse plausible auto-hébergée avec Docker
Lorsque j'ai travaillé pour la première fois sur le déploiement plausible, le processus était extrêmement compliqué. Heureusement, il est désormais très pratique de le déployer sur votre propre serveur. Pour vous faciliter la tâche, les merveilleuses personnes de Plausible ont également créé un référentiel d'hébergement séparé sur GitHub pour vous aider à démarrer.
Dans ce guide détaillé, vous découvrirez deux manières de déployer l'instance Plausible :
- Méthode autonome (serveur unique, service unique) :Only Plausible s'exécute sur l'ensemble du serveur
- La méthode du proxy inverse (un seul serveur, plusieurs services) :vous pouvez déployer plusieurs services Web comme WordPress, Nextcloud, etc. avec Plausible.
De plus, je montrerai également quelques étapes facultatives mais utiles pour profiter de toutes les fonctionnalités de Plausible :
- Configuration de SMTP sur Plausible afin que vous puissiez recevoir des rapports hebdomadaires ou mensuels par e-mail.
- Configuration de GeoIP pour afficher des statistiques par pays sur la carte du tableau de bord plausible
Prérequis
Voici ce dont vous avez besoin en dehors de quelques connaissances sur les commandes Linux, docker et docker-compose.
- Un serveur Linux. Vous pouvez utiliser un serveur physique, une machine virtuelle ou des serveurs cloud. Vous pouvez vous inscrire auprès de notre partenaire Linode et obtenir 100 $ de crédits gratuits.
- Docker et Docker Compose installés sur votre serveur.
- Accès au DNS de votre domaine sur lequel vous souhaitez déployer Plausible.
- Configuration du proxy inverse Nginx si vous optez pour la deuxième méthode de déploiement.
Étape 1 :[Méthode 1] Préparation du déploiement de Plausible de manière autonome (serveur unique, service unique)
Dans cette section, je vais supposer que vous souhaitez héberger directement votre domaine au port 80 sur un serveur autonome.
Commençons par découvrir d'abord le strict minimum. Notez que docker-compose est requis au préalable.
La configuration de déploiement Plausible se compose essentiellement de 3 composants principaux :
- Base de données Postgres pour les données utilisateur
- Base de données Clickhouse pour les données d'analyse
- C'est plausible en soi qui s'appuie sur les deux bases de données
Étant donné que Plausible se déploie avec Docker, les trois composants ci-dessus sont déployés en tant que conteneurs respectifs.
Regardez maintenant comment ils sont configurés avec Docker Compose un par un :
Pour Postgres, il faut ici utiliser l'image officielle Postgres 12 disponible sur Docker Hub (au moment de la rédaction de ce tutoriel). Ceci est absolument nécessaire car l'utilisation du latest
tag dans ce cas n'est pas conseillé.
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
Utiliser un nom de volume db-data
pour stocker les données utilisateur dans /var/lib/postgresql/data
. La définition d'une variable d'environnement pour attribuer le mot de passe Postgres serait également nécessaire.
Pour Clickhouse, utilisez l'image Yandex Clickhouse Docker Hub :
plausible_events_db:
image: yandex/clickhouse-server:latest
volumes:
- event-data:/var/lib/clickhouse
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
Laissez-moi vous expliquer ce qu'il fait! Vous utilisez un nom de volume event-data
pour stocker les données d'analyse dans /var/lib/clickhouse
. Ensuite, les fichiers de configuration sont montés pour désactiver les tables de journalisation afin d'éviter des problèmes tels que l'apaisement de clickhouse à long terme. Après les fichiers XML montés liés, ulimit
est utilisé pour restreindre l'utilisation des ressources à l'intérieur du conteneur Clickhouse.
Pour le service Plausible lui-même, utilisez l'image Docker Hub qui est étiquetée latest
par les développeurs comme une version stable :
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
ports:
- 80:8000
env_file:
- plausible-conf.env
Lors de la première exécution, il crée une base de données Postgres pour les données utilisateur, une base de données Clickhouse pour les données analytiques, les migre pour préparer le schéma et crée le compte administrateur pour vous.
Comme vous pouvez également le voir, le service s'appuie sur plausible_db
et plausible_events_db
pour qu'il soit opérationnel. mail
et geoip
sont deux autres services supplémentaires dont je parlerai plus tard.
Puisque vous utilisez une méthode autonome, vous pouvez spécifier directement le port de conteneur 8000 pour qu'il soit disponible via le nom d'hôte au port 80. Comme pour le env_file
, j'en parlerai dans la section "Fichiers d'environnement" plus loin dans ce guide.
Chacun des services de base de données aura ses propres volumes Docker respectifs pour stocker les données utilisateur et analytiques. Ainsi, vous devez également inclure une section de volumes dans le fichier de composition docker avec les détails suivants : :
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
Vous disposez maintenant des composants nécessaires pour le déploiement plausible de base.
Comme nous connaissons maintenant les trois composants de base pour un déploiement plausible de base, ce n'est pas encore tout à fait la configuration complète que nous voudrions. Nous devons également le configurer avec deux autres ajouts qui en feront un déploiement complet d'analyse Web :
Configuration SMTP pour les rapports par e-mail [facultatif]
Vous pouvez utiliser le service SMTP Bytemark que Plausible utilisera pour envoyer des rapports d'analyse hebdomadaires ou mensuels. Cette configuration supplémentaire est simple mais doit être précisée ultérieurement dans la configuration du service Plausible :
mail:
image: bytemark/smtp
restart: always
Je vais utiliser SendGrid comme exemple pour ce guide. Vous pouvez créer votre clé API gratuite à partir d'ici une fois connecté à SendGrid. Enregistrez la chaîne de 69 caractères car vous en aurez besoin plus tard comme mot de passe pour votre configuration SMTP .
GeoIP pour la carte du tableau de bord [facultatif]
Cette partie est nécessaire pour afficher le nombre de visiteurs par pays lorsque vous passez le curseur sur la carte du monde sur le tableau de bord plausible de votre domaine.

Pour cela, vous devez utiliser le service gratuit GeoLite2. Les bases de données GeoIP2 de MaxMind fournissent des données d'intelligence IP pour les environnements à volume élevé. En auto-hébergant leurs bases de données, vous éliminez toute latence du réseau et les frais par requête. Plausible utilise les bases de données GeoLite2 qui sont des bases de données de géolocalisation IP gratuites implémentées sous forme de conteneur.
Pour configurer une base de données GeoIP et la laisser se mettre à jour automatiquement, vous devez créer un compte gratuit sur MaxMind. Après votre inscription, accédez à Services> Ma clé de licence dans le panneau de gauche de la page de votre compte Maxmind. Cliquez sur "Générer une nouvelle clé de licence" et enregistrez-la localement car vous ne pourrez la voir qu'une seule fois lors de sa génération .
plausible_geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
Grâce aux deux variables d'environnement ci-dessus, nous définissons l'ID d'édition et la fréquence de mise à jour de la base de données. Les bases de données GeoLite2 Pays, Ville et ASN sont mises à jour chaque semaine, tous les mardis. Le geoip-conf.env
discuté plus loin dans ce guide devra inclure toutes les informations d'identification que vous obtenez après avoir généré la clé de licence décrite ci-dessus.
Fichiers d'environnement
Cette section est peut-être la plus importante, car elle couvre toutes les variables d'environnement essentielles qui doivent être en place pour que les cinq composants ci-dessus de l'instance Plausible fonctionnent correctement. Tout au long de la configuration, nous les utilisons directement et via des fichiers d'environnement.
Fichier d'environnement pour une configuration plausible
Le fichier plausible-conf.env stocke les variables d'environnement les plus essentielles pour déployer l'instance Plausible.
ADMIN_USER_EMAIL=replace-me
ADMIN_USER_NAME=replace-me
ADMIN_USER_PWD=replace-me
BASE_URL=replace-me
SECRET_KEY_BASE=replace-me
ADMIN_USER_EMAIL
est l'adresse e-mail à laquelle vous souhaitez vous connecter et recevoir des rapports d'analyse hebdomadaires ou mensuels.- Pour
ADMIN_USER_NAME
, vous pouvez mentionner votre propre nom ici. - La valeur de
ADMIN_USER_PWD
est votre mot de passe de connexion. BASE_URL
peut être au format :http://plausible.domain.com . Notez que pour activer HTTPS, il est recommandé d'utiliser une méthode de proxy inverse (abordée dans la deuxième partie de ce guide) pour utiliser un certificat SSL.- Le
SECRET_KEY_BASE
est une clé secrète aléatoire de 64 caractères utilisée pour sécuriser Plausible. Pour en générer un, utilisez :openssl rand -base64 64
Fichier d'environnement pour la configuration SMTP plausible avec Sendgrid
Bien que vous puissiez également inclure les variables d'environnement SMTP dans le même fichier, l'utilisation d'une variable distincte rend la procédure plus claire. Donc, ici, j'ai utilisé un fichier appelé plausible-smtp.env
dans le même but.
La configuration ci-dessous est spécifique à Sendgrid mais vous pouvez la modifier en conséquence si vous préférez un autre service SMTP :
[email protected]
SMTP_HOST_ADDR=smtp.sendgrid.net
SMTP_HOST_PORT=465
SMTP_USER_NAME=apikey
SMTP_USER_PWD=replace-me
SMTP_HOST_SSL_ENABLED=true
SMTP_RETRIES=20
CRON_ENABLED=true
MAILER_EMAIL
est l'adresse e-mail "de" personnalisable qui s'affichera dans votre boîte de réception lorsque vous recevrez vos rapports hebdomadaires ou mensuels.SMTP_HOST_ADDR
est le nom d'hôte du serveur SMTP. Dans le cas de SendGrid, il s'agit desmtp.sendgrid.net
.- Ici, vous utilisez 465 pour le numéro de port de l'hôte SMTP via
SMTP_HOST_PORT
. apikey
est l'identifiant du nom d'utilisateur pour SendGrid en particulier, défini viaSMTP_USER_NAME
.SMTP_USER_PWD
est la clé de 69 caractères utilisée comme mot de passe que vous avez obtenu de SendGrid (discuté dans la section de configuration SMTP).- J'ai activé SSL sur true via
SMTP_HOST_SSL_ENABLED
pour SendGrid. - Le nombre de tentatives jusqu'à ce que l'expéditeur abandonne peut être défini via
SMTP_RETRIES
.
CRON_ENABLED
n'est pas réellement un paramètre SMTP pour être précis. Mais pourquoi j'ai inclus ceci ici parce que sans cette variable définie sur true
, vous ne recevrez aucun rapport hebdomadaire ou mensuel par e-mail. Par défaut, cette valeur est false, mais elle sera probablement mise à jour dans la prochaine version de Plausible, comme indiqué ici. Mais à partir de maintenant, ce paramètre est absolument crucial.
Fichier d'environnement pour les statistiques globales sur Plausible avec GeoIP
Avec geoip-conf.env
, vous incluez les informations d'identification essentielles obtenues auprès de MaxMind, comme indiqué précédemment :
GEOIPUPDATE_ACCOUNT_ID=replace-me
GEOIPUPDATE_LICENSE_KEY=replace-me
Pour une référence complète à chaque type de variable d'environnement sur Plausible, vous pouvez visiter sa page de documentation ici.
Maintenant, à ce stade, vous avez examiné tous les détails nécessaires pour héberger un déploiement autonome de Plausible. La configuration complète de docker compose ressemblerait à ceci :
version: "3.3"
services:
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
plausible_events_db:
image: yandex/clickhouse-server:latest
volumes:
- event-data:/var/lib/clickhouse
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
mail:
image: bytemark/smtp
restart: always
geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
ports:
- 80:8000
env_file:
- plausible-conf.env
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
Si vous avez suivi cette méthode, ignorez la section suivante.
Étape 1 :[Méthode 2] Préparation du déploiement de Plausible avec proxy inverse Nginx (serveur unique, services multiples)
Il s'agit d'une méthode alternative qui ne peut pas être utilisée avec la méthode 1 qui a été abordée dans la section précédente. Vous devrez configurer un proxy inverse ici.Passons rapidement en revue les révisions nécessaires pour que la configuration plausible ci-dessus fonctionne également sous un paramètre de proxy inverse. J'utilise l'exemple de notre article précédent sur Nginx Docker.
Pour les quatre services autres que le service Plausible, j'utiliserai un réseau interne nommé plausible
car il ne doit être visible que pour Plausible seul.
networks:
- plausible
Mais pour le service Plausible, le même net
réseau utilisé sur la configuration du proxy inverse doit être spécifié avec le plausible
réseau, bien sûr. Ce n'est qu'alors que vous pourrez le faire fonctionner avec le conteneur Nginx Docker.
networks:
- net
- plausible
Vous devez également remplacer nos ports
paramètre avec expose
à l'intérieur de votre service Plausible puisque vous utilisez maintenant un reverse proxy :
expose:
- 8000
À la fin de la configuration, vous devez également spécifier lesquels des réseaux sont internes et externes :
networks:
net:
external: true
plausible:
internal: true
Variables d'environnement supplémentaires
Vous devez également vous assurer de mettre à jour le plausible-conf.env
fichier avec les variables suivantes pour que la configuration fonctionne correctement :
VIRTUAL_HOST=plausible.domain.com
LETSENCRYPT_HOST=plausible.domain.com
TRUSTED_PROXIES=172.x.0.0/16
Spécifiez le nom de domaine sans https://
sur VIRTUAL_HOST
et LETSENCRYPT_HOST
qui sont destinés respectivement au proxy inverse et au certificat SSL.
Avec TRUSTED_PROXIES
, vous définissez explicitement les serveurs proxy auxquels Plausible doit faire confiance. La valeur exacte peut être obtenue avec :
docker inspect -f '{{ json .IPAM.Config }}' net | jq .[].Subnet
Pour que la commande ci-dessus fonctionne, vous auriez besoin du jq
outil déjà installé.
Sur Ubuntu, vous pouvez l'installer avec :
sudo apt -y install jq
Sur CentOS, vous devez d'abord ajouter le référentiel :
yum install epel-release -y
yum install jq -y
Voici donc le fichier final docker-compose.yml, révisé pour le proxy inverse :
version: "3.3"
services:
mail:
image: bytemark/smtp
restart: always
networks:
- plausible
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
restart: always
networks:
- plausible
plausible_events_db:
image: yandex/clickhouse-server:latest
volumes:
- event-data:/var/lib/clickhouse
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
restart: always
networks:
- plausible
geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
networks:
- net
- plausible
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
expose:
- 8000
env_file:
- plausible-conf.env
- plausible-smtp.env
restart: always
networks:
- net
- plausible
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
networks:
net:
external: true
plausible:
internal: true
Étape 2 :Déployer des analyses plausibles
Que vous ayez utilisé la méthode 1 ou la méthode 2, vous devriez avoir le fichier docker-compose prêt. Il est temps d'utiliser ce fichier.
Sur votre serveur, clonez le référentiel d'hébergement Plausible :
git clone https://github.com/plausible/hosting
Déplacez-vous dans le répertoire de révision des fichiers :
cd hosting
Modifiez maintenant le fichier docker-compose pour qu'il ait le même contenu que vous avez vu dans la méthode 1 ou la méthode 2 (selon votre choix). Révisez également tous les fichiers essentiels qui nécessitent des modifications comme indiqué en utilisant l'une des deux méthodes ci-dessus.
Démarrez l'instance Plausible :
docker-compose up -d
Accédez au domaine plausible que vous avez spécifié dans la configuration. Vous devriez voir un écran comme celui-ci. En utilisant les informations d'identification que vous avez fournies dans le plausible-conf.env
fichier, connectez-vous au tableau de bord plausible.

Étape 3 : Utiliser des analyses plausibles pour vos sites Web
Il est temps d'ajouter le ou les sites Web que vous souhaitez suivre et analyser avec Plausible. Lorsque vous êtes connecté au tableau de bord de votre instance Plausible, cliquez sur "+ Ajouter un site web".

Entrez votre nom de domaine (par exemple domain.com
) sans www
ou https://
et cliquez sur "Ajouter un extrait"

Notez que domain.com
peut être n'importe quel domaine et n'a rien à voir avec l'hébergement de Plausible sur son sous-domaine. Une instance Plausible peut être hébergée sur n'importe quel autre nom de domaine et pas nécessairement sur le sous-domaine du domaine en cours d'analyse.

Vous devez ajouter cet extrait de code JavaScript dans les scripts d'en-tête sur le site Web domain.com. C'est à vous de déterminer comment ajouter un script d'en-tête sur votre site Web.
Sur Linux Handbook, nous utilisons Ghost, un CMS rapide et léger.
Sur Ghost, vous en avez besoin, collez-le dans la section d'en-tête sous SETTINGS > Code injection
et cliquez sur "Enregistrer":

Une fois ajouté, vous pourrez observer les analyses Web du domaine peu de temps après avoir cliqué dessus dans le panneau principal.

Pour les autres applications Web, y compris WordPress et Discourse, vous pouvez également vous référer aux guides d'intégration officiels.
Activer les rapports hebdomadaires ou mensuels avec Plsuible
En supposant domain.com
est le domaine que vous avez ajouté pour l'analyse, rendez-vous sur domain.com > Settings > Email Reports
après vous être connecté au tableau de bord.

Activez la ou les options souhaitées selon vos besoins :

Si vous préférez suivre la voie des nerds, vous pouvez également accéder directement au paramètre d'e-mail en fonction de la syntaxe d'URL suivante :
https://plausible.domain.com/domain.com/settings#email-reports
où plausible.domain.com
est l'endroit où vous hébergez votre instance plausible et domain.com
est le site que vous souhaitez analyser.
Qu'en est-il des statistiques globales ?
Si vous aviez configuré GeoIP, vous pouvez afficher la carte globale sur le tableau de bord où les pays des visiteurs sont ombrés en violet. Plus la nuance de la couleur est foncée, plus le nombre de visiteurs du pays est élevé.

Passer le curseur sur un pays sur la carte vous montrera son nombre de visiteurs pour votre site Web. Cliquer sur "PLUS" vous montrera la liste complète des nombres de visiteurs par pays à partir de la carte.
Conseils d'entretien
Si vous souhaitez vérifier les journaux du conteneur pendant son déploiement en temps réel, vous pouvez exécuter :
docker logs -f hosting_plausible_1
A tout moment, si vous souhaitez arrêter l'instance, vous pouvez utiliser :
docker-compose down
C'est ça! Vous avez déployé avec succès Plausible Analytics avec des rapports par e-mail et des statistiques cartographiques par pays sur le tableau de bord !
Notes personnelles sur Plausible
Ainsi, vous avez appris à déployer des analyses plausibles sur votre serveur. Quelle méthode avez-vous choisie à cet effet ?
Je préfère utiliser la méthode du proxy inverse à chaque fois, car elle laisse toujours la possibilité de déployer d'autres services Web et donc d'économiser le coût du serveur.
Une méthode de proxy inverse est préférable même pour un mode de fonctionnement à service unique de serveur unique, car elle rend l'ensemble de la configuration à l'épreuve du temps. Si je prévoyais de déployer une deuxième instance sur la méthode décrite dans la section précédente, cela nécessiterait beaucoup d'efforts supplémentaires pour modifier et adopter la nouvelle configuration de proxy inverse. Il est donc préférable de l'avoir déjà prêt dès le début lui-même.
De plus, vous n'avez pas non plus à vous soucier des certificats SSL.
Si la restauration en direct est activée sur Docker, vous souhaitez utiliser la stratégie de redémarrage on-failure
au lieu de always
indiqué dans ce guide. Cela évitera de redémarrer les conteneurs au cas où le démon Docker serait redémarré.
Au lieu de Google Analytics, profitez d'un Analytics sans Google :)
Si vous rencontrez une erreur ou rencontrez des problèmes ou avez une suggestion, veuillez me le faire savoir en laissant un commentaire.