Niveau requis : être à l'aise avec SSH et Docker. Si tu ne sais pas ce qu'est un conteneur, commence par un article d'introduction avant de te lancer.
Introduction
Tu as un site, un blog ou un projet, et tu veux savoir combien de personnes le visitent. Le réflexe, c'est Google Analytics. Mais entre le bandeau de cookies, les questions RGPD et le sentiment de donner tes statistiques à une régie publicitaire, ça coince.
Il existe une autre voie : faire des analytics sans Google, sur ton propre serveur. Umami est l'un des outils les plus simples pour ça. Dans cet article, tu vois ce qu'il fait, ce que dit la CNIL sur la mesure d'audience, comment l'installer avec Docker Compose et ce qu'il ne sait pas faire.
Pourquoi chercher une alternative à Google Analytics ?
En France, la règle est simple dans son principe. Un traceur peut se passer de consentement seulement s'il est strictement nécessaire au service demandé. Pour la mesure d'audience, la CNIL fixe des conditions précises : une finalité limitée à la mesure d'audience du site, pour le compte exclusif de l'éditeur, des données statistiques anonymes, aucun suivi d'une personne d'un site à l'autre et aucun recoupement avec d'autres traitements.
La CNIL précise aussi que les offres qui réutilisent les données pour leur propre compte sortent de l'exemption. C'est la limite des grandes plateformes d'analytics : pour respecter ces conditions, mieux vaut un outil qui garde la donnée chez toi.
Umami, c'est quoi ?
Umami est une plateforme d'analytics open source, sous licence MIT, qui se présente comme respectueuse de la vie privée. Elle fonctionne sans cookies, s'installe sur ton serveur et stocke ses données dans PostgreSQL. Le dépôt GitHub d'Umami dépasse les 39 000 étoiles.
Pourquoi je l'aime bien :
- Léger et simple : un conteneur pour l'application, un autre pour la base.
- Sans cookie : d'après sa documentation, aucun cookie n'est posé et aucune donnée personnelle identifiable n'est collectée.
- Une version 3 plus riche : sortie en novembre 2025, elle a apporté des tableaux de bord personnalisables, la mesure des Core Web Vitals et un rejeu de sessions (Session Replay) dans la version 3.1.
Le projet se pilote aussi en ligne de commande et par API, avec une authentification à deux facteurs activable.

Umami est-il conforme au RGPD ?
Prudence : aucun outil n'est conforme par magie. La CNIL ne publie pas de liste officielle d'outils exemptés. Umami est cité parmi les solutions qui peuvent entrer dans l'exemption, à condition d'être correctement configurées (selon l'agence Scroll). La conformité dépend de ta configuration et de tes usages.
Voici les points à vérifier :
- Information : mentionne l'outil de mesure dans ta politique de confidentialité.
- Durée des traceurs : la CNIL recommande 13 mois maximum, sans prolongation automatique. Umami n'utilise pas de cookie, ce point est donc réglé côté script.
- Conservation : 25 mois maximum pour les données collectées, avec un réexamen régulier. En auto-hébergement, la documentation indique que les données restent indéfiniment, sauf suppression manuelle. Il faut donc prévoir toi-même une purge. Je n'ai pas vérifié si Umami propose une purge automatique.
- Pas de rejeu de sessions : si ta version propose le Session Replay, ne l'active pas pour de la simple mesure d'audience. Il enregistre clics, défilement et saisies, ce qui sort du cadre des statistiques anonymes. Dans le guide de configuration de la CNIL pour Matomo, ces fonctions sont désactivées.
- Finalité : ne mélange pas ces statistiques avec d'autres traitements et ne les partage pas.
Ce n'est pas un avis juridique. En cas de doute, garde une capture de ta configuration et passe par ton DPO ou un juriste.
Pour comprendre pourquoi certaines données n'ont rien à faire dans un navigateur, lis aussi Données sensibles et RGPD : pourquoi elles n'ont rien à faire dans ton front ?.
Comment installer Umami avec Docker Compose ?
Ce qu'il te faut
- Un serveur Linux avec Docker et Docker Compose (si ce n'est pas fait, suis l'étape Docker de mon article Comment créer sa seedbox avec Docker et Ubuntu Server).
- Un nom de domaine, par exemple
stats.example.com, qui pointe vers ton serveur. - Un reverse proxy pour servir Umami en HTTPS.
1. Créer le dossier du projet
mkdir -p ~/umami && cd ~/umami
2. Générer les secrets
Le fichier officiel contient des valeurs d'exemple à remplacer. Plutôt que de les inventer à la main, on les génère :
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 16)
APP_SECRET=$(openssl rand -hex 32)
TWO_FACTOR_ENCRYPTION_KEY=$(openssl rand -hex 32)
EOF
chmod 600 .env
3. Écrire le docker-compose.yml
Il s'inspire du fichier du dépôt officiel d'Umami, avec les secrets sortis dans le .env :
services:
umami:
image: ghcr.io/umami-software/umami:latest
ports:
- "127.0.0.1:3000:3000"
environment:
DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
APP_SECRET: ${APP_SECRET}
TWO_FACTOR_ENCRYPTION_KEY: ${TWO_FACTOR_ENCRYPTION_KEY}
depends_on:
db:
condition: service_healthy
init: true
restart: always
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
interval: 5s
timeout: 5s
retries: 5
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami-db-data:
Le port est limité à 127.0.0.1 : Umami n'est accessible que depuis la machine, c'est le reverse proxy qui l'expose.
4. Lancer le service
docker compose up -d
docker compose ps
curl http://127.0.0.1:3000/api/heartbeat
Les deux conteneurs doivent passer à l'état healthy. Si le curl répond, l'application tourne.
5. Exposer Umami en HTTPS
Avec Caddy, deux lignes suffisent. Ajoute ce bloc à ton Caddyfile :
stats.example.com {
reverse_proxy 127.0.0.1:3000
}
Puis recharge Caddy :
sudo systemctl reload caddy
Caddy obtient et renouvelle le certificat tout seul. Si tu utilises Nginx, Traefik ou HAProxy, le principe est le même : un proxy HTTPS vers 127.0.0.1:3000. De mon côté, je fais tourner Umami dans un conteneur LXC derrière HAProxy, et ça ne change rien à la configuration d'Umami.
6. Sécuriser la connexion et ajouter ton site
Ouvre https://stats.example.com. D'après la documentation, l'identifiant par défaut est admin et le mot de passe umami. Change-le tout de suite depuis ton profil, avant de faire quoi que ce soit d'autre. Tant que ce mot de passe par défaut existe, n'importe qui peut prendre le contrôle de ton instance.
Ensuite, dans les paramètres, ajoute ton site : donne-lui un nom et son domaine. Umami te fournit un identifiant de site (Website ID), à copier pour l'étape suivante.

7. Installer le script de suivi
Colle cette balise dans le <head> de ton site :
<script
defer
src="https://stats.example.com/script.js"
data-website-id="TON-WEBSITE-ID"
data-domains="example.com"
data-exclude-search="true"
data-do-not-track="true"
></script>
Les attributs utiles :
data-domains: n'envoie des données que depuis ce domaine, ce qui évite de polluer tes statistiques depuis un environnement de test.data-exclude-search: retire les paramètres d'URL, qui peuvent contenir des informations que tu ne veux pas stocker.data-do-not-track: respecte le signal « Do Not Track » du navigateur.
Charge une page de ton site, puis retourne dans Umami. Ta visite doit apparaître dans les statistiques en temps réel.
8. Mettre à jour et sauvegarder
Pour mettre à jour :
cd ~/umami
docker compose pull
docker compose up -d
Le tag latest suit la dernière version. Avant une mise à jour, lis les notes de version du projet. Si tu préfères la stabilité, remplace latest par un numéro de version précis dans le fichier Compose.
Pour sauvegarder la base :
docker compose exec -T db pg_dump -U umami umami > umami-backup.sql
Et pour restaurer sur une instance neuve :
docker compose exec -T db psql -U umami umami < umami-backup.sql
Automatise la sauvegarde avec une tâche cron et copie le fichier hors du serveur. Une sauvegarde qui reste sur la même machine ne protège pas d'une panne de disque.
Pour savoir si ton instance répond, surveille-la avec Uptime Kuma. J'explique comment l'installer dans Comment j'ai adopté Uptime Kuma ?.
Quelles sont les limites d'Umami ?
Umami n'est pas parfait, et mieux vaut le savoir avant de migrer.
- Tu gères tout : mises à jour, sauvegardes, certificat, disponibilité. Si ton serveur tombe, tu perds les visites pendant la panne.
- Pas de purge vérifiée : la documentation indique que les données restent indéfiniment en auto-hébergement. Prévois une suppression manuelle ou planifiée pour respecter la durée de conservation évoquée plus haut.
- Les bloqueurs de publicité : certains bloquent les scripts d'analytics, même sans cookie. Deux variables d'environnement aident :
TRACKER_SCRIPT_NAMEpour renommer le script etDISABLE_TELEMETRYpour couper la télémétrie. Vérifie leur nom exact dans la documentation de ta version avant de les utiliser. - Un autre périmètre que Google : Umami mesure l'audience. Il ne remplace pas les outils publicitaires ni les intégrations de l'écosystème Google.
Mon retour
Ce que je retiens, c'est la simplicité. Deux conteneurs, un fichier Compose, un script de quelques lignes : l'installation tient dans une soirée. Le tableau de bord est lisible, sans les dizaines de menus que je n'ai jamais utilisés dans Google Analytics.
La contrepartie, c'est que la responsabilité est à toi. Si tu veux zéro maintenance, ce n'est pas le bon choix. Si tu héberges déjà d'autres services chez toi, Umami s'intègre sans effort.
Conclusion
Les analytics sans Google sont à portée de main : Umami s'installe en quelques commandes, ne pose pas de cookie et garde tes statistiques sur ton serveur. Il ne rend pas ton site conforme à lui seul, mais il te place du bon côté de la règle, à condition de soigner la configuration, l'information des visiteurs et la durée de conservation.
Mon conseil : installe-le sur un site secondaire, compare ses chiffres avec ton outil actuel pendant quelques semaines, puis décide.
Pour aller plus loin
- Comment j'ai adopté Uptime Kuma ? : surveiller tes services, Umami compris.
- Comment créer sa seedbox avec Docker et Ubuntu Server : installer Docker et structurer tes dossiers.
- Données sensibles et RGPD : pourquoi elles n'ont rien à faire dans ton front ? : ce que ton API ne doit jamais renvoyer.
FAQ
Umami a-t-il besoin d'un bandeau de cookies ?
Umami ne pose pas de cookie. Mais l'exemption de consentement dépend aussi de ta configuration et de tes usages : finalité limitée à la mesure d'audience, données anonymes, aucun recoupement. Vérifie les conditions de la CNIL et mentionne l'outil dans ta politique de confidentialité.
Umami est-il gratuit ?
Oui, la version auto-hébergée est open source sous licence MIT. Tu paies uniquement ton serveur et ton nom de domaine.
Quelle base de données utilise Umami ?
PostgreSQL. C'est ce que prévoit le fichier Docker Compose officiel, repris dans cet article.
Comment sauvegarder mes données Umami ?
Avec pg_dump sur le conteneur de la base, comme dans l'étape 8. Copie ensuite le fichier hors du serveur.

Commentaires
Connectez-vous en un clic pour rejoindre la discussion.