Aller au contenu principal

Déployer Plausible Analytics

Ce guide vous explique comment déployer Plausible Analytics en self-hosted sur un serveur Linux (Ubuntu 24.04 LTS). Plausible est une solution d’analytics web open source, centrée sur la simplicité et la confidentialité : mesure du trafic sans cookies ni suivi personnel, adaptée aux sites qui veulent des statistiques tout en respectant la vie privée des visiteurs.

Le déploiement s’appuie sur Docker et Docker Compose, avec Nginx en reverse proxy et Let's Encrypt pour le HTTPS.

Commander un serveur

Pour héberger votre instance Plausible, HostMyServers propose plusieurs offres adaptées :

Prérequis

  • Accès SSH root ou utilisateur avec sudo
  • Système Ubuntu 24.04 LTS (ou Debian / Fedora)
  • Docker et Docker Compose installés
  • Un nom de domaine (ex. plausible.votredomaine.com) pointant vers l’IP publique du serveur (enregistrement A)
  • Ports 80 (HTTP) et 443 (HTTPS) accessibles

Configuration requise

ComposantMinimumRecommandé
RAM2 Go4 Go
CPU2 cœurs2-4 cœurs
Stockage10 Go20 Go
Réseau100 Mbps1 Gbps
Docker

Si Docker n’est pas encore installé, suivez la documentation officielle Docker pour Ubuntu.

Connexion au serveur

Connectez-vous en SSH à votre serveur :

ssh utilisateur@adresse_ip_serveur

Mise à jour du système

Mettez à jour la liste des paquets avant de commencer :

sudo apt update
sudo apt upgrade -y

Configuration de l’environnement Plausible

Plausible utilise des variables d’environnement pour l’URL de base, le compte administrateur et les paramètres applicatifs (base PostgreSQL, ClickHouse). On crée un répertoire dédié, clone le dépôt Community Edition et prépare le fichier .env.

Créer le répertoire et cloner le dépôt

mkdir -p ~/plausible
cd ~/plausible
git clone https://github.com/plausible/community-edition.git
cd community-edition

Générer une clé secrète

Plausible exige une clé secrète (SECRET_KEY_BASE) pour signer les sessions. Générez-en une :

openssl rand -base64 64 | tr -d '\n'

Copiez la valeur affichée ; vous l’utiliserez dans le fichier .env à l’étape suivante.

Créer le fichier d’environnement .env

Créez le fichier .env à la racine du projet (dans community-edition) :

nano .env

Ajoutez la configuration suivante en remplaçant les valeurs par les vôtres :

ADMIN_USER_EMAIL=admin@exemple.com
ADMIN_USER_NAME=admin
ADMIN_USER_PWD=VOTRE_MOT_DE_PASSE_ADMIN
BASE_URL=https://plausible.votredomaine.com
SECRET_KEY_BASE=VOTRE_CLE_SECRETE_GENEREE
DATABASE_URL=postgres://postgres:postgres@plausible_db:5432/plausible_db
CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
VariableDescription
ADMIN_USER_EMAILEmail du compte administrateur Plausible
ADMIN_USER_NAMENom affiché de l’admin
ADMIN_USER_PWDMot de passe du compte admin (choisir un mot de passe fort)
BASE_URLURL publique de Plausible (HTTPS, avec votre domaine)
SECRET_KEY_BASEClé générée à l’étape précédente
DATABASE_URLConnexion PostgreSQL (ne pas modifier sauf personnalisation)
CLICKHOUSE_DATABASE_URLConnexion ClickHouse pour les événements (ne pas modifier)
Remplacez les valeurs

Adaptez admin@exemple.com, VOTRE_MOT_DE_PASSE_ADMIN, plausible.votredomaine.com et VOTRE_CLE_SECRETE_GENEREE à votre environnement.

Exposer le port de l’application (override Docker Compose)

Plausible écoute en interne sur le port 8000. Pour que Nginx puisse le joindre, on expose ce port en local uniquement via un fichier d’override :

nano compose.override.yaml

Contenu :

services:
plausible:
ports:
- 127.0.0.1:8000:8000

Enregistrez et quittez. Docker Compose fusionnera ce fichier avec compose.yml au démarrage.

Déploiement des conteneurs Plausible

Une fois l’environnement configuré, lancez l’ensemble des services (application, PostgreSQL, ClickHouse) avec Docker Compose :

cd ~/plausible/community-edition
docker compose up -d

Vérifiez que tous les conteneurs sont en cours d’exécution :

docker compose ps

Tous les services (plausible, plausible_db, plausible_events_db, etc.) doivent être « Up ». En cas d’erreur, consultez les logs : docker compose logs -f.

Reverse proxy Nginx et HTTPS (Let's Encrypt)

Pour exposer Plausible sur Internet en HTTPS, on installe Nginx en reverse proxy devant le port 8000, puis Certbot pour obtenir un certificat Let's Encrypt et configurer HTTPS automatiquement.

Installer Nginx

sudo apt update
sudo apt install -y nginx

Créer la configuration Nginx pour Plausible

Créez un virtual host dédié (remplacez plausible.votredomaine.com par votre domaine) :

sudo nano /etc/nginx/sites-available/plausible.conf

Contenu :

server {
listen 80;
listen [::]:80;
server_name plausible.votredomaine.com;
access_log /var/log/nginx/plausible.access.log;
error_log /var/log/nginx/plausible.error.log;

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}

Activez le site et testez la configuration :

sudo ln -s /etc/nginx/sites-available/plausible.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Ouvrir les ports 80 et 443 dans le pare-feu

Le port 80 est nécessaire pour la validation ACME (Let's Encrypt), le 443 pour l’accès HTTPS :

sudo ufw allow 80,443/tcp
sudo ufw reload

Obtenir le certificat TLS avec Certbot

Installez Certbot et le plugin Nginx, puis demandez un certificat pour votre domaine (remplacez l’email et le domaine) :

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d plausible.votredomaine.com -m admin@exemple.com --agree-tos --no-eff-email

Certbot configure automatiquement Nginx pour servir le site en HTTPS et gère le renouvellement des certificats.

Renouvellement

Les certificats Let's Encrypt sont renouvelés automatiquement via une tâche cron/systemd fournie par le paquet certbot.

Accès et première configuration

Une fois Nginx et HTTPS en place, vous pouvez créer le compte admin et ajouter vos sites à suivre.

Créer le compte administrateur

  1. Ouvrez un navigateur et allez à : https://plausible.votredomaine.com/register
  2. Renseignez nom, email et mot de passe puis validez Créer mon compte.
Compte pré-rempli

Si vous avez défini ADMIN_USER_EMAIL et ADMIN_USER_PWD dans .env, le premier compte peut déjà exister ; dans ce cas, connectez-vous avec ces identifiants sur /login.

Ajouter un site à analyser

  1. Dans le tableau de bord, cliquez sur Add a website (ou équivalent).
  2. Saisissez le domaine à suivre (ex. votresite.com), choisissez le fuseau horaire des rapports, puis validez Install Plausible.
  3. Plausible affiche un script de suivi JavaScript. Copiez-le et ajoutez-le dans la section <head> de vos pages (voir la documentation d’installation Plausible).
  4. Cliquez sur Verify script installation une fois le script déployé sur votre site.
  5. Après quelques vues, le tableau de bord affiche les statistiques (visiteurs, pages vues, etc.).

Commandes utiles

CommandeDescription
docker compose psÉtat des conteneurs Plausible
docker compose logs -f plausibleSuivre les logs de l’application
docker compose downArrêter tous les conteneurs
docker compose up -dRedémarrer les conteneurs en arrière-plan
sudo systemctl reload nginxRecharger la configuration Nginx

Structure des répertoires

CheminDescription
~/plausible/community-edition/Dépôt Plausible Community Edition
~/plausible/community-edition/.envVariables d’environnement (secrets, URL, admin)
~/plausible/community-edition/compose.override.yamlExposition du port 8000 pour Nginx
/etc/nginx/sites-available/plausible.confConfiguration Nginx (reverse proxy)

En cas de problème

Les conteneurs ne démarrent pas

  • Vérifiez les logs : docker compose logs
  • Vérifiez que .env est bien à la racine de community-edition et que SECRET_KEY_BASE et BASE_URL sont renseignés.
  • Vérifiez l’espace disque et la mémoire : df -h et free -h

Erreur 502 Bad Gateway dans le navigateur

  • Vérifiez que les conteneurs tournent : docker compose ps
  • Vérifiez que Plausible écoute sur 8000 : curl -I http://127.0.0.1:8000
  • Vérifiez les logs Nginx : sudo tail -f /var/log/nginx/plausible.error.log

Le script de suivi ne détecte pas les visites

  • Vérifiez que le script est bien inséré dans le <head> de vos pages.
  • Vérifiez que le domaine configuré dans Plausible correspond exactement au domaine du site (sans sous-domaine sauf si configuré).
  • Attendez quelques minutes et rechargez le tableau de bord ; les événements peuvent mettre un peu de temps à apparaître.

Renouvellement des certificats

  • Tester le renouvellement : sudo certbot renew --dry-run
  • En cas d’échec, vérifiez que le port 80 est accessible depuis Internet et que le virtual host Nginx pour le domaine est actif.

Références