Matomo vs Umami Analytics – et déploiement sur Docker avec PostgreSQL
Comparatif simple entre Matomo et Umami, puis tutoriel pas à pas pour déployer Umami Analytics avec Docker et PostgreSQL, adapté à un développeur junior.
Introduction
Quand on cherche une alternative à Google Analytics, deux noms reviennent souvent : Matomo et Umami.
Les deux outils permettent de suivre le trafic d’un site web, mais avec des approches différentes :
- Matomo : très complet, proche d’un “Google Analytics auto‑hébergé”.
- Umami : minimaliste, moderne, très orienté privacy by design.
Dans cet article, on va :
- Comparer rapidement Matomo et Umami dans un langage accessible à un développeur junior.
- Voir comment déployer Umami avec Docker et PostgreSQL, étape par étape.
L’objectif : que tu puisses, seul, mettre en place ton propre outil d’analytics auto‑hébergé pour ton portfolio ou tes projets.
Matomo vs Umami – vue d’ensemble
Matomo en quelques mots
Matomo est une plateforme d’analytics très riche :
- Beaucoup de rapports détaillés (comportement, acquisition, campagnes, etc.).
- Nombreux plugins (heatmaps, A/B testing, e‑commerce…).
- Stockage des données chez toi (self‑host), utile pour la conformité RGPD.
- Stack historique plutôt orientée PHP + base de données type MySQL/MariaDB.
En contrepartie :
- Interface parfois plus lourde.
- Courbe d’apprentissage un peu plus longue.
- Plus de ressources serveur nécessaires.
Umami en quelques mots
Umami se démarque par :
- Une interface très simple : vues, pages, sources de trafic… l’essentiel, sans superflu.
- Pas de cookies, pas de profilage agressif : idéal pour les sites qui veulent respecter la vie privée.
- Une stack moderne (Node/Next côté app, PostgreSQL côté base).
- Un déploiement très facile en Docker.
En contrepartie :
- Moins de rapports avancés que Matomo.
- Pas (ou peu) de fonctionnalités e‑commerce très poussées.
Quand choisir l’un ou l’autre ?
- Tu veux tout contrôler, avec des rapports très complets et de nombreux modules → Matomo.
- Tu veux des stats claires, rapides à lire, pour un blog, un portfolio ou des petits sites → Umami.
Dans ce tutoriel, on va se concentrer sur Umami + PostgreSQL avec Docker, car c’est une excellente base pour un développeur junior qui veut apprendre à auto‑héberger un service web.
Pré‑requis pour suivre le tutoriel
Pour suivre ce tutoriel, tu auras besoin de :
- Docker et Docker Compose installés sur ta machine (ou ton serveur).
- Des bases en ligne de commande (
cd,ls, etc.). - Un éditeur de texte (VS Code, par exemple).
On va faire simple, en supposant que tu travailles dans un dossier dédié, par exemple :
mkdir analytics-umami
cd analytics-umami
Étape 1 – Créer le fichier .env
On va commencer par créer un fichier .env pour stocker les secrets utilisés par Docker :
touch .env
Ensuite, ajoute ce contenu dans .env (en adaptant les valeurs) :
POSTGRES_PASSWORD=mot-de-passe-tres-solide
APP_SECRET=chaine-secrete-tres-longue-et-random
POSTGRES_PASSWORD: mot de passe de l’utilisateur PostgreSQLumami.APP_SECRET: clé secrète utilisée par Umami (génération de tokens, sécurité, etc.).
Tu peux générer une chaîne aléatoire avec par exemple :
openssl rand -hex 32
et la coller dans APP_SECRET.
Étape 2 – Créer le docker-compose.yml
Toujours dans le même dossier, crée un fichier docker-compose.yml :
touch docker-compose.yml
Puis colle ce contenu :
version: "3.8"
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
container_name: umami
restart: unless-stopped
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@umami-postgres:5432/umami
APP_SECRET: ${APP_SECRET}
DISABLE_TELEMETRY: 1
depends_on:
umami-postgres:
condition: service_healthy
umami-postgres:
image: postgres:16-alpine
container_name: umami-postgres
restart: unless-stopped
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- umami-postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U umami"]
interval: 10s
timeout: 5s
retries: 5
volumes:
umami-postgres-data:
Quelques points importants pour bien comprendre, même en tant que junior :
- On définit deux services :
umami: l’application web (interface d’admin, API, scripts de tracking).umami-postgres: la base de données PostgreSQL.
- Les variables d’environnement (
environment) récupèrent les valeurs du fichier.env. - Le volume
umami-postgres-datasert à garder les données même si tu supprimes le conteneur.
Étape 3 – Lancer Umami avec Docker
Dans ton dossier analytics-umami, lance :
docker compose up -d
-dsignifie “detached” : les services tournent en arrière‑plan.- Docker va télécharger les images nécessaires et créer les conteneurs.
Tu peux vérifier que tout tourne bien avec :
docker ps
Tu devrais voir au moins :
- un conteneur
umami - un conteneur
umami-postgres
Étape 4 – Première connexion à l’interface Umami
Ouvre ton navigateur et va sur :
http://localhost:3000
Par défaut, les identifiants sont souvent :
- Utilisateur :
admin - Mot de passe :
umami
(vérifie la documentation officielle d’Umami si ces identifiants changent dans le temps).
Une fois connecté :
- Change immédiatement le mot de passe de l’admin.
- Crée un site (par exemple :
Mon Portfolio). - Umami va te proposer un petit script
<script>à coller dans le<head>de ton site.
Étape 5 – Ajouter le script de tracking sur ton site
Sur ton site (par exemple ton portfolio Laravel), tu dois ajouter le script Umami pour commencer à recevoir des statistiques.
Dans ton layout Blade principal, tu peux ajouter quelque chose comme :
<script
async
defer
data-website-id="TON_WEBSITE_ID"
src="https://ton-domaine-ou-ip/umami.js"
></script>
data-website-id: l’identifiant du site que tu as créé dans Umami.src: l’URL publique où Umami est accessible (http://localhost:3000/umami.jsen local, ou ton domaine en prod).
Après ça, chaque visite sur ton site sera remontée dans ton dashboard Umami.
Conclusion
Pour résumer :
- Matomo est une solution très complète, idéale pour des besoins avancés en analytics.
- Umami est léger, simple et parfait pour un développeur junior qui veut un outil moderne, auto‑hébergé et respectueux de la vie privée.
- Avec Docker + PostgreSQL, tu peux déployer Umami en quelques fichiers (
.env+docker-compose.yml) et commencer à tracker ton portfolio ou tes projets personnels.
Une fois à l’aise avec Umami, tu pourras aller plus loin :
- sécuriser l’accès avec un reverse proxy (Nginx, Traefik),
- ajouter un nom de domaine et du HTTPS,
- ou même comparer les données avec un autre outil comme Matomo.