tva
← Analyses

Analyse de données respectueuse de la vie privée : Plausible auto-hébergé et Google Search Console

Le paysage du suivi et de l’analyse de données a considérablement évolué depuis l’entrée en vigueur du RGPD en 2018. En réalité, la plupart des organisations utilisent encore Google Analytics 4 sur leurs sites web — non pas parce que c’est le meilleur outil, mais parce que la migration semble coûteuse et les alternatives semblent réservées à des niches. Nous avons migré de Google Analytics vers Plausible CE auto-hébergé mi-2024, et les résultats méritent d’être documentés en détail.

Pourquoi nous avons quitté Google Analytics

Google Analytics 4 est une plateforme performante. La charge liée à la conformité, en revanche, est substantielle. Exploiter GA4 dans une configuration véritablement conforme au RGPD nécessite une bannière de consentement aux cookies, une plateforme de gestion du consentement, des accords de traitement des données, et une base juridique documentée pour tout transfert de données d’analyse à Google aux États-Unis. La bannière de consentement elle-même introduit un déficit systématique dans vos données : chaque visiteur qui refuse le consentement est absent des données, et cette part peut être substantielle selon la conception de la bannière et l’audience, créant un angle mort dans chaque indicateur collecté.

Le problème est que cela crée un compromis insoluble. Soit vous acceptez des données incomplètes pour les visiteurs ayant donné leur consentement, soit vous exécutez GA4 sans consentement et acceptez un risque juridique. Aucune de ces options n’est une solution satisfaisante pour une organisation qui prend au sérieux à la fois la qualité des données et la conformité.

Plausible CE est conçu sur un principe différent. Le script de suivi est sans cookie par défaut, ne stocke aucune information permettant d’identifier une personne et est conçu pour fonctionner sans bannière de consentement. Cette conception repose sur des choix techniques précis. Plausible ne pose aucun cookie, ne génère aucun identifiant utilisateur persistant entre les sessions, et ne transmet aucune donnée à des serveurs tiers lorsqu’il est auto-hébergé. La directive sur la vie privée et les communications électroniques (PECR au Royaume-Uni) exige un consentement pour stocker des informations sur l’appareil d’un utilisateur ou y accéder, une règle qu’un script sans cookie est conçu pour ne pas déclencher. Les lignes directrices 2/2023 de l’EDPB interprètent cette règle comme couvrant aussi certaines techniques sans cookie, notamment le suivi par pixel ou par adresse IP. Vérifiez donc cette évaluation pour votre propre déploiement.

L’architecture : ClickHouse comme moteur d’analyse de données

Plausible CE est livré avec deux bases de données : ClickHouse pour le stockage des événements et PostgreSQL pour la configuration. ClickHouse est une base de données orientée colonnes conçue pour les traitements analytiques — le même moteur que Yandex a construit pour son infrastructure analytique à grande échelle. Pour un site recevant des dizaines de milliers de pages vues mensuelles, l’avantage de performance par rapport à une base de données orientée lignes est imperceptible. Mais cette architecture permet à Plausible de gérer des sites avec des centaines de millions d’événements sans changements de schéma ni refonte de l’infrastructure, ce qui compte si vous anticipez une croissance.

La configuration Docker Compose est simple. Plausible fournit une configuration officielle avec tous les services requis. Notre déploiement tourne aux côtés de Traefik sur une instance Hetzner CX21 (2 vCPU, 4 Go de RAM) à Helsinki :

services:
  plausible_db:
    image: postgres:16-alpine
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}

  plausible_events_db:
    image: clickhouse/clickhouse-server:24.3.3.102-alpine
    restart: always
    volumes:
      - event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

  plausible:
    image: ghcr.io/plausible/community-edition:v2.1.4
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
    environment:
      - BASE_URL=https://plausible.yourdomain.com
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@plausible_db:5432/plausible_db
      - CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
      - DISABLE_REGISTRATION=true
      - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
      - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.plausible.rule=Host(`plausible.yourdomain.com`)"
      - "traefik.http.routers.plausible.entrypoints=websecure"
      - "traefik.http.routers.plausible.tls.certresolver=letsencrypt"
      - "traefik.http.services.plausible.loadbalancer.server.port=8000"

volumes:
  db-data:
  event-data:

Définissez explicitement DISABLE_REGISTRATION. Avec true, les inscriptions sont fermées après la création de votre compte initial ; avec false, quiconque trouve l’URL d’une instance accessible au public peut s’inscrire. La documentation actuelle de Plausible CE indique invite_only comme valeur par défaut. Générez SECRET_KEY_BASE avec openssl rand -base64 64 et conservez-le dans un fichier .env hors du contrôle de version.

Les deux fichiers de configuration XML ClickHouse référencés dans la section volumes contrôlent la verbosité des journaux. Sans eux, ClickHouse journalise à un niveau qui remplit le disque sur une petite instance en quelques jours. Le dépôt de Plausible inclut ces fichiers ; copiez-les dans un sous-répertoire clickhouse/ à côté de votre docker-compose.yml avant de démarrer la pile logicielle.

Déployer le script de suivi

Une fois la pile logicielle en marche, ajouter le suivi à n’importe quel site se réduit à une seule balise dans le <head> HTML :

<script defer data-domain="yourdomain.com"
  src="https://plausible.yourdomain.com/js/script.js"></script>

Plausible est livré avec des extensions de script facultatives qui se regroupent en une seule requête. Nous utilisons la variante qui inclut le suivi des téléchargements de fichiers, la prise en charge du routage fondé sur le fragment d’URL pour les applications monopages, le suivi des liens sortants, les propriétés de page vue personnalisées, le suivi des revenus et les événements balisés :

<script defer data-domain="yourdomain.com"
  src="https://plausible.yourdomain.com/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>

Le script combiné pèse environ 2,4 Ko non compressé. Le script Google Analytics 4 pèse environ 45 Ko. Ce n’est pas une différence marginale — c’est environ 20 fois moins de JavaScript à télécharger à chaque chargement de page, et moins de code à analyser et à exécuter peut améliorer les Core Web Vitals sur les appareils peu puissants et les connexions lentes.

Intégration avec Google Search Console

L’argument le plus fort pour conserver GA4 est sa connexion à Google Search Console, qui vous permet de corréler les données de requêtes de recherche organique avec le comportement sur le site. Plausible prend en charge cette intégration nativement, et c’est la fonctionnalité qui rend le passage viable pour les sites axés sur le contenu.

La configuration nécessite une propriété Search Console vérifiée et une autorisation OAuth dans les paramètres du site de Plausible. Sur une instance auto-hébergée, elle nécessite aussi un client OAuth Google Cloud avec l’API Search Console activée, transmis à Plausible via GOOGLE_CLIENT_ID et GOOGLE_CLIENT_SECRET (déjà prévus dans le fichier Compose ci-dessus). Une fois la connexion établie, les requêtes de recherche apparaissent dans Sources lorsque vous sélectionnez Google, avec les clics et, dans la vue détaillée, les impressions, le taux de clics et la position moyenne. Seules les requêtes ayant généré au moins un clic sont affichées.

Un détail de configuration qui cause systématiquement des problèmes : la propriété GSC choisie doit effectivement couvrir le domaine suivi par Plausible. Une propriété GSC vérifiée comme https://www.yourdomain.com en utilisant la méthode de préfixe d’URL ne se connectera pas à un site Plausible qui suit yourdomain.com sans le sous-domaine. Utilisez le type de propriété Domaine dans GSC dans la mesure du possible — il couvre tous les sous-domaines et protocoles et simplifie la connexion Plausible.

Les données GSC dans Plausible ne sont pas disponibles en temps réel : Plausible documente un décalage d’environ 24 à 36 heures, comme dans Search Console, et conseille de consulter les données d’il y a deux jours. C’est une contrainte de Google, pas une limitation de Plausible. Pour la revue opérationnelle des données d’analyse, c’est rarement un obstacle pratique.

Conformité RGPD sans bannières de cookies

La situation au regard de la conformité mérite d’être énoncée avec précision. En vertu de la directive vie privée et communications électroniques, le consentement est requis lorsque vous stockez des informations sur l’appareil d’un utilisateur ou y accédez. Les cookies et localStorage déclenchent tous deux cette exigence. Plausible ne stocke rien sur l’appareil de l’utilisateur : pas de cookies, pas d’entrées localStorage, pas d’écritures IndexedDB.

Plausible ne génère pas non plus d’identifiant utilisateur persistant entre les sessions. Chaque page vue est traitée indépendamment. L’approximation la plus proche d’un identifiant utilisateur est une empreinte quotidienne dérivée de l’adresse IP du visiteur, de la chaîne de l’agent utilisateur, du domaine du site web et d’un sel côté serveur renouvelé et supprimé toutes les 24 heures. Les adresses IP et les agents utilisateurs bruts ne sont pas stockés. Plausible affirme que cela signifie qu’il ne collecte aucune donnée personnelle ; puisque l’adresse IP est tout de même brièvement traitée pour calculer l’empreinte, déterminer si cela échappe à la notion de données personnelles au sens de l’article 4(1) du RGPD relève d’une évaluation juridique, et non d’une garantie technique. Il s’agit de notre appréciation pour le déploiement propre de tva, et non d’un conseil juridique ; vérifiez-la auprès de votre conseiller en protection des données.

Le résultat pratique, selon cette évaluation : pas de bannière de consentement, pas de plateforme de gestion du consentement, pas d’optimisation du taux de consentement, et pas de lacune dans vos données due au refus de consentement. Les données analytiques que vous voyez reflètent bien mieux votre audience que le sous-ensemble disposé à accepter le suivi, même si les visiteurs qui bloquent le script ne sont toujours pas comptabilisés.

Notre politique de confidentialité nécessite désormais un seul paragraphe concis sur l’analyse de données, décrivant avec précision ce que Plausible collecte et où les données résident. La section équivalente pour GA4 s’étendait auparavant sur plusieurs paragraphes et nécessitait des références spécifiques aux clauses contractuelles types de Google et aux conditions de traitement des données. La réduction de la charge juridique est significative pour une petite organisation.

Charge de l’infrastructure et comparaison des performances

Exécuter les deux outils en parallèle pendant 60 jours avant l’abandon de GA4 a fourni une comparaison directe. Le nombre de pages vues différait de moins de 3 %.

La différence plus instructive concernait le nombre de visiteurs uniques. Plausible a enregistré environ 12 % de visiteurs uniques de plus que GA4 avec consentement sur la même période. C’est le résultat attendu : le sous-ensemble d’utilisateurs GA4 ayant donné leur consentement surreprésente les visiteurs plus engagés qui sont moins susceptibles d’utiliser des bloqueurs de publicités ou des navigateurs axés sur la vie privée. Plausible, en suivant les visiteurs sans obstacle lié au consentement, donne une image plus précise de la portée totale, même si les visiteurs qui bloquent son script ne sont toujours pas comptabilisés. GA4 avec consentement donne un portrait comportemental de vos utilisateurs les plus engagés. Ni l’un ni l’autre n’est faux — ils répondent à des questions légèrement différentes.

Les besoins en infrastructure sont modestes. ClickHouse consomme environ 400 Mo de RAM en régime permanent. PostgreSQL ajoute environ 80 Mo. L’utilisation du CPU est négligeable en fonctionnement normal et brièvement élevée uniquement lors des importations massives de données historiques. Pour les organisations qui exploitent déjà un serveur Hetzner avec de la capacité disponible, le coût marginal d’ajouter Plausible à une pile logicielle existante est effectivement nul.

Mais en réalité, la décision de basculer ne concerne pas principalement le coût d’infrastructure ou la parité des fonctionnalités. Elle concerne le type de données sur lesquelles vous êtes disposé à fonder vos décisions. L’analyse de données qui nécessite un consentement produit un échantillon systématiquement biaisé. L’analyse de données sans cookie et sans consentement produit une image bien plus complète avec moins de détails par visiteur. Pour un site marketing où la question principale est « quelles pages et sources génèrent des demandes de renseignements », l’image plus complète est plus utile que le portrait détaillé d’un sous-ensemble qui s’est lui-même sélectionné.

Articles connexes

Pour aller plus loin