Installer Plausible Analytics pour PeerTube
Vous hébergez une instance PeerTube et vous souhaitez suivre vos statistiques de fréquentation sans compromettre la vie privée de vos visiteurs ? Plausible Analytics est la solution idéale.
Pourquoi Plausible ?
Plausible est une alternative open-source et respectueuse de la vie privée à Google Analytics. Contrairement à ce dernier :
- Pas de cookies : aucune bannière RGPD nécessaire
- Pas de données personnelles : les adresses IP sont hashées puis supprimées
- Léger : le script fait moins de 1 Ko (vs ~45 Ko pour Google Analytics)
- Open-source : vous pouvez l'auto-héberger
Notre infrastructure
Notre homelab utilise Docker Compose avec nginx-proxy pour le reverse proxy et Let's Encrypt pour les certificats SSL. La configuration complète est disponible sur GitHub.
Installation de Plausible
1. Configuration DNS
Ajoutez un enregistrement DNS pour votre sous-domaine analytics. Dans notre cas, nous utilisons plausible.votredomaine.org :
python3 scripts/ovh-dns.py add plausible --type A --ip VOTRE_IP
python3 scripts/ovh-dns.py add plausible --type AAAA --ip VOTRE_IPV6
2. Fichier Docker Compose
Créez le fichier services/plausible.yml :
services:
plausible:
image: ghcr.io/plausible/community-edition:v3.1.0
container_name: plausible
command: /entrypoint.sh run
healthcheck:
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:8000/api/health || exit 1"]
start_period: 2m
interval: 30s
environment:
- BASE_URL=https://plausible.${DOMAIN}
- SECRET_KEY_BASE=${PLAUSIBLE_SECRET_KEY}
- TOTP_VAULT_KEY=${PLAUSIBLE_TOTP_KEY}
- DISABLE_REGISTRATION=invite_only
- DATABASE_URL=postgres://plausible:${PLAUSIBLE_DB_PASSWORD}@plausible-db:5432/plausible
- CLICKHOUSE_DATABASE_URL=http://plausible-events-db:8123/plausible_events_db
- VIRTUAL_HOST=plausible.${DOMAIN}
- VIRTUAL_PORT=8000
- LETSENCRYPT_HOST=plausible.${DOMAIN}
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
volumes:
- plausible-data:/var/lib/plausible
networks:
- proxy-tier
- plausible-internal
depends_on:
plausible-db:
condition: service_healthy
plausible-events-db:
condition: service_healthy
plausible-db:
image: postgres:16-alpine
container_name: plausible-db
environment:
- POSTGRES_USER=plausible
- POSTGRES_PASSWORD=${PLAUSIBLE_DB_PASSWORD}
- POSTGRES_DB=plausible
volumes:
- /data/plausible-db:/var/lib/postgresql/data
networks:
- plausible-internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U plausible -d plausible"]
start_period: 1m
interval: 10s
plausible-events-db:
image: clickhouse/clickhouse-server:24.12-alpine
container_name: plausible-events-db
environment:
- CLICKHOUSE_SKIP_USER_SETUP=1
volumes:
- /data/plausible-events-db:/var/lib/clickhouse
- /data/plausible-clickhouse-config/listen.xml:/etc/clickhouse-server/config.d/listen.xml:ro
networks:
- plausible-internal
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://127.0.0.1:8123/ping || exit 1"]
start_period: 1m
interval: 10s
networks:
proxy-tier:
external: true
plausible-internal:
driver: bridge
volumes:
plausible-data:
3. Configuration ClickHouse pour IPv4
ClickHouse écoute par défaut sur IPv6. Si votre réseau Docker n'a pas IPv6, créez ce fichier :
sudo mkdir -p /data/plausible-clickhouse-config
sudo tee /data/plausible-clickhouse-config/listen.xml << 'EOF'
<clickhouse>
<listen_host>0.0.0.0</listen_host>
</clickhouse>
EOF
4. Variables d'environnement
Ajoutez ces variables à votre fichier .env :
PLAUSIBLE_SECRET_KEY=$(openssl rand -base64 48)
PLAUSIBLE_TOTP_KEY=$(openssl rand -base64 32)
PLAUSIBLE_DB_PASSWORD=$(openssl rand -base64 24)
5. Démarrage
docker compose -f docker-compose.yml -f services/plausible.yml up -d
Le premier démarrage peut prendre 1-2 minutes. Vérifiez que tout est healthy :
docker ps | grep plausible
6. Création du compte admin
Rendez-vous sur https://plausible.votredomaine.org et créez votre compte administrateur.
Intégration avec PeerTube
Ajouter le site dans Plausible
- Connectez-vous à votre instance Plausible
- Cliquez sur “Add a website”
- Entrez le domaine de votre PeerTube (ex:
video.ut0pia.org)
Injecter le script dans PeerTube
Dans PeerTube, allez dans Administration → Configuration → Advanced → Custom JavaScript et ajoutez :
var script = document.createElement('script');
script.defer = true;
script.dataset.domain = 'video.votredomaine.org';
script.src = 'https://plausible.votredomaine.org/js/script.js';
document.head.appendChild(script);
Attention : Le champ “Custom JavaScript” attend du JavaScript pur, pas de balises HTML <script>.
Conformité RGPD
Plausible est conçu pour être conforme au RGPD sans bannière de consentement. Selon la politique de données de Plausible :
- Aucun cookie n'est utilisé
- Aucune donnée personnelle n'est collectée
- Les adresses IP sont hashées et jamais stockées
- Pas de tracking cross-site
Vous pouvez donc l'utiliser sans afficher de bannière cookie, tout en restant transparent dans votre politique de confidentialité.