Files
wiki/Catalogue-Self-Hosted/apps/app-plausible.md
T
2026-06-09 18:40:21 +02:00

7.6 KiB


title: Plausible created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, web-analytics, privacy, self-hosted, analytics, elixir, phoenix, postgresql, clickhouse] confidence: high contested: false sources: [https://selfh.st/apps/?tag=web-analytics]

🟢 Plausible

Analytics web privacy-first léger et sans cookies, écrit en Elixir/Phoenix — un script unique de moins de 1 Ko remplace Google Analytics. Source : selfh.st

📋 Métadonnées

Métadonnée Valeur
Site web plausible.io
GitHub github.com/plausible/analytics
License AGPL-3.0
Langage Elixir / Phoenix (ClickHouse optionnel)
Étoiles 1 589
Dernière MAJ 2026-05
Catégorie cat-web-analytics

📝 Description

Plausible Analytics est une solution d'analyse web éthique et légère, conçue pour concurrencer Google Analytics sans en reprendre la lourdeur ni les compromis sur la vie privée. Le script de tracking pèse moins de 1 Ko (45 fois plus léger que GA), ce qui le rend idéal pour les sites qui accordent de l'importance aux Core Web Vitals et à la performance.

L'application est écrite en Elixir (framework Phoenix LiveView) et peut fonctionner avec PostgreSQL (par défaut) ou ClickHouse (recommandé pour les sites à fort trafic). Plausible ne stocke aucune donnée personnelle, n'utilise pas de cookies, est conforme au RGPD, CCPA et ePrivacy sans nécessiter de bandeau de consentement dans la plupart des juridictions.

Fonctionnalités clés : tableau de bord unifié multi-sites, funnels de conversion, objectifs personnalisés (events), suivi des revenus e-commerce, intégrations natives (Search Console, Google Analytics import, Stripe, Slack, email…), partage public de dashboards, API ouverte, segmentation par source, pays, page, appareil. Une fonctionnalité récente permet d'importer les données historiques de Google Analytics (Universal Analytics et GA4) pour faciliter la migration.

Plausible est AGPL-3.0 pour la version self-hosted. L'éditeur propose une offre cloud (plausible.io) avec pricing par mensualité de trafic, et un modèle community (open source) ou enterprise (avec support et SSO).

🚀 Installation

Option 1 : Docker Compose (PostgreSQL)

# docker-compose.yml
version: '3.8'

services:
  plausible:
    image: plausible/analytics:v3
    container_name: plausible
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      BASE_URL: https://plausible.example.com
      SECRET_KEY_BASE: changez-cette-cle-aleatoire-64-chars
      DATABASE_URL: postgresql://plausible:plausible@db:5432/plausible
      DISABLE_AUTH: "false"
      DISABLE_REGISTRATION: "true"
    depends_on:
      db:
        condition: service_healthy
      mail:
        condition: service_started
    networks:
      - plausible-net

  db:
    image: postgres:16-alpine
    container_name: plausible-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: plausible
      POSTGRES_USER: plausible
      POSTGRES_PASSWORD: plausible
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - plausible-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U plausible"]
      interval: 10s
      timeout: 5s
      retries: 5

  mail:
    image: mailcatcher:latest
    container_name: plausible-mailcatcher
    restart: unless-stopped
    ports:
      - "1080:1080"
    networks:
      - plausible-net

networks:
  plausible-net:
    driver: bridge

⚠️ Le service mail (Mailcatcher) est uniquement pour le dev/test. En production, configurer SMTP via MAILER_EMAIL et MAILER_ADAPTER=Bamboo.MailgunAdapter (ou Postmark, SendGrid, Mailgun, SMTP).

Lancement :

docker compose up -d
# Accéder à http://localhost:8000
# Premier compte créé = admin (DISABLE_REGISTRATION: "true")

Option 2 : Installation manuelle (Elixir)

git clone https://github.com/plausible/analytics.git
cd analytics
mix deps.get
mix release
# Variables d'env obligatoires : SECRET_KEY_BASE, DATABASE_URL, BASE_URL
# Démarrage : _build/prod/rel/plausible/bin/plausible start

Plausible requiert Elixir 1.14+, OTP 25+, Node.js 18+ (pour le build des assets), PostgreSQL 14+ ou ClickHouse 23+.

⚙️ Configuration

  • SECRET_KEY_BASE : généré via openssl rand -base64 64, obligatoire en production.
  • BASE_URL : URL publique de votre instance, utilisée pour les liens et CORS.
  • DISABLE_REGISTRATION : true pour verrouiller les inscriptions (mode mono-utilisateur ou sur invitation).
  • DISABLE_AUTH : true pour un mode totalement ouvert (utile derrière un SSO).
  • DATABASE_URL : PostgreSQL ou CLICKHOUSE_DATABASE_URL pour ClickHouse.
  • MAILER_* : configuration SMTP ou provider (Mailgun, Postmark, SendGrid).
  • TELEMETRY : false pour désactiver la télémétrie anonyme.
  • Intégrations : GA_API_KEY + GOOGLE_APPLICATION_CREDENTIALS pour importer les données Google Analytics, STRIPE_API_KEY pour le suivi des revenus Stripe, etc.
  • Script de tracking :
<script defer data-domain="votresite.com"
  src="https://plausible.example.com/js/script.js"></script>
  • Hashed tracking (script.js → script-hashed.js) : pour les sites partagés (sponsor, équipe) où le data-domain peut être personnalisé.

🔄 Alternatives

Open source :

Propriétaire (SaaS) :

  • Google Analytics 4 — leader, mais RGPD problématique
  • Plausible Cloud — offre officielle hébergée (~9 $/mois)
  • Fathom Analytics — concurrent direct, même philosophie
  • Simple Analytics — néerlandais, design premium
  • Matomo Cloud — version managée de Matomo
  • Pirsch — allemand, RGPD-by-design
  • Umami Cloud — offre cloud officielle

🔒 Sécurité

  • SECRET_KEY_BASE doit être unique et jamais committé dans le repo.
  • Plausible Cloud envoie par défaut la télémétrie : à désactiver via TELEMETRY=false.
  • Mettre Plausible derrière un reverse proxy HTTPS (Caddy, Traefik, Nginx).
  • Si activée, l'inscription ouverte (DISABLE_REGISTRATION=false) expose une surface d'attaque : préférer invitations ou SSO.
  • Sauvegardes PostgreSQL : pg_dump quotidien, snapshots volumes.
  • Activer fail2ban sur le reverse proxy et l'API.
  • Mettre à jour régulièrement (sorties fréquentes — minor toutes les 2-3 semaines).
  • Rate limiting sur /api/event : Plausible dispose d'un rate limiter natif, le surveiller.
  • CORS : configurer BASE_URL strictement, sans wildcard.

📚 Ressources

🔗 Pages Liées