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 :
- VPS Performance - Idéal pour un ou plusieurs sites
- VPS NVMe - Excellent rapport qualité/prix
- Serveurs dédiés Eco - Pour un trafic analytics important
- Serveurs dédiés Performance - Performance maximale
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
| Composant | Minimum | Recommandé |
|---|---|---|
| RAM | 2 Go | 4 Go |
| CPU | 2 cœurs | 2-4 cœurs |
| Stockage | 10 Go | 20 Go |
| Réseau | 100 Mbps | 1 Gbps |
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
| Variable | Description |
|---|---|
ADMIN_USER_EMAIL | Email du compte administrateur Plausible |
ADMIN_USER_NAME | Nom affiché de l’admin |
ADMIN_USER_PWD | Mot de passe du compte admin (choisir un mot de passe fort) |
BASE_URL | URL publique de Plausible (HTTPS, avec votre domaine) |
SECRET_KEY_BASE | Clé générée à l’étape précédente |
DATABASE_URL | Connexion PostgreSQL (ne pas modifier sauf personnalisation) |
CLICKHOUSE_DATABASE_URL | Connexion ClickHouse pour les événements (ne pas modifier) |
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.
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
- Ouvrez un navigateur et allez à :
https://plausible.votredomaine.com/register - Renseignez nom, email et mot de passe puis validez Créer mon compte.
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
- Dans le tableau de bord, cliquez sur Add a website (ou équivalent).
- Saisissez le domaine à suivre (ex.
votresite.com), choisissez le fuseau horaire des rapports, puis validez Install Plausible. - 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). - Cliquez sur Verify script installation une fois le script déployé sur votre site.
- Après quelques vues, le tableau de bord affiche les statistiques (visiteurs, pages vues, etc.).
Commandes utiles
| Commande | Description |
|---|---|
docker compose ps | État des conteneurs Plausible |
docker compose logs -f plausible | Suivre les logs de l’application |
docker compose down | Arrêter tous les conteneurs |
docker compose up -d | Redémarrer les conteneurs en arrière-plan |
sudo systemctl reload nginx | Recharger la configuration Nginx |
Structure des répertoires
| Chemin | Description |
|---|---|
~/plausible/community-edition/ | Dépôt Plausible Community Edition |
~/plausible/community-edition/.env | Variables d’environnement (secrets, URL, admin) |
~/plausible/community-edition/compose.override.yaml | Exposition du port 8000 pour Nginx |
/etc/nginx/sites-available/plausible.conf | Configuration Nginx (reverse proxy) |
En cas de problème
Les conteneurs ne démarrent pas
- Vérifiez les logs :
docker compose logs - Vérifiez que
.envest bien à la racine decommunity-editionet queSECRET_KEY_BASEetBASE_URLsont renseignés. - Vérifiez l’espace disque et la mémoire :
df -hetfree -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.