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 :

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

  1. Connectez-vous à votre instance Plausible
  2. Cliquez sur “Add a website”
  3. 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 :

Vous pouvez donc l'utiliser sans afficher de bannière cookie, tout en restant transparent dans votre politique de confidentialité.

Ressources