Files
2026-06-09 18:40:21 +02:00

6.8 KiB


title: Umami created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, web-analytics, privacy, self-hosted, analytics, nodejs, nextjs, postgresql, mysql] confidence: high contested: false sources: [https://selfh.st/apps/?tag=web-analytics]

📈 Umami

Solution d'analyse web privacy-first auto-hébergeable, alternative moderne à Google Analytics, sans cookies et conforme RGPD nativement. Source : selfh.st

📋 Métadonnées

Métadonnée Valeur
Site web umami.is
GitHub github.com/umami-software/umami
License MIT
Langage Node.js / Next.js (TypeScript)
Étoiles 7 250
Dernière MAJ 2026-05
Catégorie cat-web-analytics

📝 Description

Umami est une application d'analyse web open source conçue dès l'origine pour respecter la vie privée des visiteurs. Contrairement à Google Analytics, elle n'utilise aucun cookie, ne collecte aucune donnée personnelle identifiable (PII) et anonymise les adresses IP. L'outil fournit néanmoins des métriques essentielles : visiteurs uniques, pages vues, taux de rebond, durée des sessions, sources de trafic, appareils, pays et pages les plus consultées.

L'interface est sobre, rapide et lisible, construite avec Next.js et un design moderne. Umami supporte le suivi multi-sites depuis un seul tableau de bord, propose des événements personnalisés, des objectifs de conversion, le suivi de campagnes UTM, ainsi qu'un système de partage de dashboards en lecture seule. Les rapports peuvent être filtrés par période, pays, navigateur, système, appareil ou page.

Umami dispose également d'une offre cloud officielle (cloud.umami.is) et d'une image Docker officielle maintenue par l'équipe. C'est l'un des projets les plus populaires de l'écosystème self-hosted : la version 2 a apporté un système de teams multi-utilisateurs, des rôles et permissions granulaires, ainsi qu'une API REST complète. Pour les sites à fort trafic, Umami est capable de tenir des millions de pageviews par mois sur une instance modeste (1 vCPU, 1 Go RAM suffit pour démarrer).

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
version: '3.8'

services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-v2
    container_name: umami
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:umami@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: changez-cette-valeur-aleatoire-32-chars
    depends_on:
      db:
        condition: service_healthy
    networks:
      - umami-net
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/api/heartbeat"]
      interval: 30s
      timeout: 5s
      retries: 3

  db:
    image: postgres:16-alpine
    container_name: umami-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - umami-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U umami"]
      interval: 10s
      timeout: 5s
      retries: 5

networks:
  umami-net:
    driver: bridge

Lancement :

docker compose up -d
# Connexion par défaut : admin / umami
# Changer le mot de passe immédiatement depuis l'UI

Option 2 : Installation manuelle (Node.js)

git clone https://github.com/umami-software/umami.git
cd umami
pnpm install
# Configurer la base dans .env (DATABASE_URL, APP_SECRET)
pnpm build
pnpm start

Umami requiert Node.js 18+, pnpm, et une base PostgreSQL 12+ ou MySQL 8+. L'application écoute par défaut sur le port 3000.

⚙️ Configuration

  • APP_SECRET : clé aléatoire de 32 caractères minimum, obligatoire en production.
  • DATABASE_URL : chaîne de connexion PostgreSQL ou MySQL.
  • TRACKER_SCRIPT_NAME : nom du script de tracking (par défaut script.js).
  • COLLECT_API_ENDPOINT : endpoint de collecte, par défaut /api/send.
  • DISABLE_BOT_CHECK : à activer si vous souhaitez désactiver la détection des bots.
  • MULTI_TENANT : active le mode multi-sites (utile pour les hébergeurs).
  • Thème : clair/sombre via le menu utilisateur.
  • Internationalisation : interface traduite en FR, EN, ES, DE, JA, ZH, etc.

Pour tracker un site, ajoutez simplement le snippet suivant dans le <head> :

<script async defer data-website-id="votre-website-id"
  src="https://umami.votredomaine.fr/script.js"></script>

🔄 Alternatives

Open source :

Propriétaire (SaaS) :

  • Google Analytics 4 — leader du marché, problèmes RGPD
  • Plausible Cloud — version hébergée officielle
  • Fathom Analytics — payant, simple et RGPD
  • Simple Analytics — payant, design soigné
  • Matomo Cloud — version hébergée officielle
  • Pirsch — allemand, RGPD-friendly

🔒 Sécurité

  • Pas de cookies, pas de fingerprinting, conforme RGPD nativement (pas de bandeau requis dans la plupart des juridictions).
  • Changer le mot de passe admin par défaut avant d'exposer l'instance.
  • Mettre un reverse proxy HTTPS (Traefik, Caddy, Nginx) devant l'application.
  • Restreindre l'accès à l'interface admin via Authelia/Authentik ou un VPN si nécessaire.
  • APP_SECRET doit être unique par déploiement — ne jamais réutiliser une valeur.
  • Sauvegarder régulièrement la base PostgreSQL (volumes Docker, pg_dump).
  • Mettre à jour régulièrement (release notes suivies sur GitHub).
  • Limiter l'exposition du port 3000 au réseau interne ; ne pas publier la base PostgreSQL.

📚 Ressources

🔗 Pages Liées