---
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](https://selfh.st/apps/?tag=web-analytics)

## 📋 Métadonnées

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [umami.is](https://umami.is/) |
| **GitHub** | [github.com/umami-software/umami](https://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é)

```yaml
# 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 :

```bash
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)

```bash
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>` :

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

## 🔄 Alternatives

**Open source** :
- [[app-plausible]] — autre référence privacy-first, plus simple
- [[app-matomo]] — analytics open source très complet (PHP, on-prem ou cloud)
- [[app-ackee]] — minimaliste, base MongoDB
- [[app-goatcounter]] — ultra-léger, single binary Go
- [[app-open-web-analytics]] — fork PHP, plus traditionnel
- [[app-rybbit]] — concurrent moderne TypeScript
- [[app-litlyx]] — alternative simple avec dashboard
- [[app-swetrix]] — fork open source de Plausible, complet
- [[app-vince]] — analytics Go minimaliste

**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

- [Documentation officielle](https://umami.is/docs)
- [GitHub umami-software/umami](https://github.com/umami-software/umami)
- [Demo live](https://app.umami.is/share/8rmKa0zZ/umami.is)
- [Docker Hub — ghcr.io/umami-software](https://github.com/orgs/umami-software/packages)
- [Awesome Umami](https://github.com/umami-software/awesome-umami)

## 🔗 Pages Liées

- [[cat-web-analytics]]
- [[recettes-docker-compose]]
- [[app-plausible]]
- [[app-matomo]]
- [[app-ackee]]
- [[app-goatcounter]]
