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 :

  1. Comparer rapidement Matomo et Umami dans un langage accessible à un développeur junior.
  2. 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 PostgreSQL umami.
  • 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-data sert à 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
  • -d signifie “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é :

  1. Change immédiatement le mot de passe de l’admin.
  2. Crée un site (par exemple : Mon Portfolio).
  3. 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.js en 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.

Geoffrey Duplessi

Développeur Web PHP / Laravel

J'ai développé une forte expérience dans la création de sites web. Ma maitrise PHP et de sont éco-système me permet de concevoir des solutions performantes et adaptées aux besoins de mes clients. J'accorde une grande importance à la qualité du code et au respect des bonnes pratiques en développement web. Je suis toujours à la recherche de nouveaux défis et opportunités pour continuer à apprendre et à évoluer dans ce domaine en constante évolution.