Éliminer les bannières de cookies: Exécutez Plausible Analytics sur Azure Kubernetes

Jeroen Bach

Jeroen Bach · Linkedin

7 min read ·

Depuis un certain temps, je cherche des moyens de collecter des analyses de site web sans afficher ces bannières de consentement ennuyeuses. Si vous avez déjà voulu des analyses de site web sans compromettre la confidentialité ou l'expérience utilisateur, cet article est pour vous.

Dans ce guide, je vais vous présenter Plausible Analytics - une alternative légère, open-source et axée sur la confidentialité à Google Analytics - et vous guider à travers sa configuration sur un cluster Kubernetes abordable dans Azure.

Mise à jour (août 2025): Azure a retiré le SKU Basic Load Balancer. Si vous suivez ce guide, assurez-vous d'utiliser le Standard Load Balancer à la place. Le SKU Standard ajoute environ 18 € par mois à votre coût, mais c'est maintenant la seule option prise en charge pour les clusters AKS.

Qu'est-ce que Plausible.io?

Plausible.io est un outil d'analyse simple mais puissant conçu avec la confidentialité à l'esprit. Contrairement à Google Analytics, Plausible n'utilise pas de cookies et ne collecte pas d'informations personnellement identifiables. En conséquence, vous pouvez complètement ignorer la bannière de consentement aux cookies et rester conforme au RGPD et à d'autres lois sur la confidentialité.

C'est une excellente option pour les sites web qui se soucient de l'utilisabilité, de la performance et du respect de la confidentialité des visiteurs.

La meilleure partie? Vous pouvez l'exécuter vous-même. Vous pouvez commencer avec leur version cloud hébergée, qui est accompagnée d'un essai gratuit - parfait si vous voulez le tester sans tracas de configuration. Si vous aimez ce que vous voyez, vous pouvez soit rester avec leur abonnement, soit prendre le contrôle total en l'auto-hébergeant.

Auto-hébergement vs. Solution hébergée

L'auto-hébergement est idéal si vous êtes un développeur comme moi et que vous avez des crédits Azure supplémentaires qui traînent. Il vous donne un contrôle total et peut être assez rentable. Mais si ce n'est pas votre situation, la solution hébergée est probablement le choix le plus économique et sans tracas.

Quoi qu'il en soit, Plausible facilite le démarrage - et dans cet article, je vais vous montrer comment le configurer vous-même en utilisant Docker et Kubernetes sur Azure.

Hébergement Plausible.io abordable avec Azure Kubernetes

Dans cet article, je vais vous montrer la façon la moins chère d'héberger Plausible.io sur Azure Kubernetes Service (AKS).

Pour vous donner une idée de ce à quoi vous attendre: l'exécution de cette configuration pendant un mois complet me coûte environ 35 € et cela inclut des sauvegardes incrémentielles quotidiennes.

Mise à jour (août 2025): En raison des coûts du Standard Load Balancer, cela sera maintenant d'environ 53 €.

Coûts Azure Kubernetes pour Plausible.io
Coûts Azure Kubernetes pour Plausible.io

Cette configuration comprend les composants clés suivants:

  • cert-manager - pour gérer automatiquement les certificats SSL/TLS
  • Let's Encrypt - pour émettre des certificats SSL gratuits et fiables
  • NGINX Ingress Controller - pour gérer le routage et exposer Plausible à Internet
  • Plausible.io - la plateforme d'analyse respectueuse de la confidentialité que nous déployons

Conseil de stockage: Utilisez des disques éphémères pour économiser

Lors de la création d'un cluster AKS, l'un des principaux coûts supplémentaires provient du disque OS persistant créé par défaut pour chaque nœud.

Pour réduire les coûts, vous pouvez utiliser des disques OS éphémères à la place. Ceux-ci sont stockés directement sur le stockage local de la VM et sont fournis sans coût supplémentaire. Ils sont idéaux pour les charges de travail sans état ou les configurations où le stockage persistant est géré séparément - comme dans ce cas, où nous stockons les données de Plausible sur un volume attaché.

Si vous optez pour cette voie, assurez-vous de vérifier la taille maximale du disque autorisée pour la taille de VM sélectionnée. Par exemple, la taille de VM Standard_B2s prend en charge jusqu'à 30 Go de stockage éphémère - ce qui est plus que suffisant pour stocker les images Docker nécessaires.

Dans le guide étape par étape ci-dessous, vous pouvez exécuter les commandes directement dans Azure Cloud Shell.

Créer le cluster
#bash
RESOURCEGROUP=rg-plausible-westeu-prod
CLUSTERNAME=aks-plausible-westeu-prod
LOCATION=westeurope
VMSIZE=Standard_B2s
VMDISKSIZE=30 # Gardez ceci à la taille maximale que la VM permet (c'est le maximum de Standard_B2s)

# Créer le groupe de ressources
az group create --name $RESOURCEGROUP --location $LOCATION

# Créer le cluster AKS - avec le Loadbalancer Standard
az aks create --resource-group $RESOURCEGROUP --name $CLUSTERNAME \
  --node-vm-size $VMSIZE \
  --node-count 1 \
  --node-resource-group ${RESOURCEGROUP}-nodes \
  --load-balancer-sku standard \
  --generate-ssh-keys \
  --location $LOCATION \
  --node-osdisk-type Ephemeral \
  --node-osdisk-size $VMDISKSIZE

# Obtenir les informations d'identification pour le cluster AKS (pour les étapes suivantes)
az aks get-credentials --resource-group $RESOURCEGROUP --name $CLUSTERNAME

Avec le cluster opérationnel, l'étape suivante consiste à créer un ClusterIssuer, qui automatisera l'émission de certificats TLS en utilisant Let's Encrypt et à configurer un Ingress qui gérera le trafic externe et le routera vers le service correct dans le cluster.

Configurer Ingress et certificats TLS
#bash
LETSENCRYPTEMAIL=[email protected] # <--- Changez ceci à votre adresse e-mail

# Créer les émetteurs de cluster letsencrypt
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --set crds.enabled=true
kubectl create -f - <<EOF
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-production
  namespace: cert-manager
spec:
  acme:
    # L'URL du serveur ACME
    server: https://acme-v02.api.letsencrypt.org/directory
    # Adresse e-mail utilisée pour l'enregistrement ACME
    email: ${LETSENCRYPTEMAIL}
    # Nom d'un secret utilisé pour stocker la clé privée du compte ACME
    privateKeySecretRef:
      name: letsencrypt-production
    # Activer le fournisseur de défi HTTP-01
    solvers:
    - http01:
        ingress:
          class: nginx
EOF

# Installer le contrôleur d'ingress nginx
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm upgrade --install \
  ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --set controller.service.type=LoadBalancer \
  --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
  --set controller.service.externalTrafficPolicy=Local \
  --create-namespace

echo "En attente que l'IP externe soit attribuée au contrôleur d'ingress, une fois disponible vous pouvez arrêter ce script"
kubectl get service --namespace ingress-nginx ingress-nginx-controller --output wide --watch

Attendez que l'IP externe devienne disponible. Une fois qu'elle apparaît, vous pouvez arrêter le script - votre cluster est maintenant entièrement configuré pour exécuter des services et les exposer via cette adresse IP publique.

Ensuite, rendez-vous chez votre fournisseur DNS et créez un enregistrement DNS pointant vers cette IP. Par exemple, vous pourriez créer un sous-domaine comme plausible.votredomaine.com.

Maintenant, nous allons installer Plausible sur le cluster. Dans la configuration ci-dessous, vous verrez que nous:

  • Persistons le stockage pour PostgreSQL et ClickHouse - c'est là que toutes vos données d'analyse seront stockées. De cette façon, vous pouvez facilement sauvegarder vos données et les restaurer si nécessaire. Cela permet également de gérer les conteneurs sans perdre de données.
  • Annotons l'Ingress avec le ClusterIssuer que nous avons créé précédemment, afin qu'il puisse automatiquement demander et renouveler les certificats TLS pour nous.
  • Connectons Plausible à l'Ingress, et spécifions le nom DNS pour l'accès public.
CloudShell
#bash
PLAUSIBLE_DNS=plausible.votredomaine.com

# Déployer Plausible Analytics en utilisant Helm
helm repo add imio https://imio.github.io/helm-charts
helm repo update
helm upgrade --install plausible-analytics imio/plausible-analytics \
  --namespace plausible-analytics \
  --create-namespace \
  --version 0.4.2 \
  --set baseURL="http://${PLAUSIBLE_DNS}" \
  --set postgresql.primary.persistence.enabled=true \
  --set postgresql.primary.persistence.size=1Gi \
  --set clickhouse.persistence.enabled=true \
  --set clickhouse.persistence.size=8Gi \
  --set ingress.enabled=true \
  --set ingress.annotations."cert-manager\.io/cluster-issuer"="letsencrypt-production" \
  --set ingress.annotations."kubernetes\.io/ingress\.class"=nginx \
  --set ingress.annotations."kubernetes\.io/tls-acme"="\"true\"" \
  --set ingress.className=nginx \
  --set ingress.hosts[0]=${PLAUSIBLE_DNS} \
  --set ingress.paths.path=/ \
  --set ingress.tls[0].secretName=letsencrypt-production \
  --set ingress.tls[0].hosts[0]=${PLAUSIBLE_DNS}

# Surveiller la progression du déploiement
echo "Surveillance de la progression du déploiement..."
kubectl get pods -n plausible-analytics -w

Après la fin du script, vous devriez pouvoir accéder à Plausible au nom DNS que vous avez configuré - par exemple, plausible.votredomaine.com.

Écran de configuration de la communauté Plausible.io
Écran de configuration de la communauté Plausible.io

Conclusion

Dans cet article, nous avons configuré une solution d'analyse rentable et respectueuse de la confidentialité en utilisant Plausible.io sur Azure Kubernetes Service (AKS). En tirant parti de Kubernetes, nous sommes en mesure de faire évoluer, gérer et sécuriser notre plateforme d'analyse tout en restant conforme aux réglementations sur la confidentialité - le tout sans bannières de consentement aux cookies ennuyeuses.

Vous avez appris à:

  • Configurer le cluster AKS le moins cher possible en utilisant vos crédits Azure
  • Configurer Ingress et l'automatisation des certificats TLS en utilisant cert-manager et Let's Encrypt
  • Déployer et exécuter Plausible.io avec un stockage persistant pour PostgreSQL et ClickHouse

Cette configuration fournit des informations précieuses sur le trafic du site web, respecte la confidentialité des utilisateurs, et vous donne un contrôle total sur vos données - le tout à un coût mensuel faible.

Si vous recherchez une alternative légère et open-source à Google Analytics, Plausible.io vaut vraiment la peine d'être considéré.

Si vous avez des questions ou besoin d'aide en cours de route, n'hésitez pas à me contacter.

Bon suivi!

À propos de Jeroen Bach

Je suis un ingénieur logiciel et chef d'équipe avec plus de 15 ans d'expérience professionnelle. Je suis passionné par la résolution de problèmes complexes à travers des solutions simples et élégantes. Ce blog est l'endroit où je partage des techniques et des perspectives pour créer d'excellents logiciels, inspirés par des projets réels.

Jeroen Bach

Conçu dans Figma et construit avec Vue.js, Nuxt.js et Tailwind CSS. Déployé via Azure Static Web App et Azure Functions. Les analyses du site web sont alimentées par Plausible Analytics, déployé en utilisant Azure Kubernetes Service.