Prise en main

Démarrage rapide

POC local, entièrement auto-hébergé. Rien ne démarre par défaut : chaque service s'active par son profil.

Prérequis

  • Docker et docker-compose (v1.29 suffit ; le plugin v2 est détecté s'il est présent)
  • Node 22 et pnpm 10
  • Environ 2,5 Gio de RAM et 2 Gio de disque pour les quatre services

Les quatre services

TerminalCode
pnpm install # Observabilité seule (OpenObserve + collecteur OTLP) pnpm telemetry:up node infra/analytics/scripts/openobserve-auth.mjs # calcule l'en-tête Basic pnpm telemetry:up # recharge le collecteur avec le jeton # Analytics, à la carte pnpm analytics:up:umami && node infra/analytics/scripts/provision-umami.mjs pnpm analytics:up:matomo && node infra/analytics/scripts/provision-matomo.mjs pnpm analytics:up:rybbit && node infra/analytics/scripts/provision-rybbit.mjs # Ou tout d'un coup pnpm analytics:up:all

Les scripts de provisionnement créent les comptes, les sites et les jetons, puis écrivent les identifiants dans infra/analytics/compose/.env.

Vérifier

TerminalCode
pnpm telemetry:test

Le test échoue si une donnée émise n'est pas retrouvable chez le fournisseur. Un service absent est signalé « ignoré » et ne fait pas échouer les autres.

Résultat obtenu le 26/10/2026 avec les quatre services : 15 réussites, 0 échec, 0 ignoré.

Depuis le site, et pas seulement depuis les paquets

pnpm telemetry:test exerce les paquets en Node. Il ne dit rien de l'application réelle : les adaptateurs peuvent très bien fonctionner en Node et échouer dans un navigateur. Le second test pilote un vrai Chromium sur le site construit.

TerminalCode
rm -rf .next-saclay NEXT_PUBLIC_SITE_URL=http://localhost:3005 PORT=3005 \ NEXT_PUBLIC_ANALYTICS_ENV=poc NEXT_PUBLIC_ANALYTICS_DEBUG=true \ NEXT_PUBLIC_ANALYTICS_UMAMI_ENABLED=true NEXT_PUBLIC_UMAMI_URL=http://localhost:3001 \ NEXT_PUBLIC_UMAMI_WEBSITE_ID=<id> \ NEXT_PUBLIC_ANALYTICS_RYBBIT_ENABLED=true NEXT_PUBLIC_RYBBIT_URL=http://localhost:3003 \ NEXT_PUBLIC_RYBBIT_SITE_ID=1 \ pnpm build:saclay PORT=3005 pnpm start:saclay & pnpm telemetry:test:app http://localhost:3005

Les identifiants sont ceux écrits par les scripts de provisionnement dans infra/analytics/compose/.env. Résultat obtenu le 26/10/2026 : 6 réussites, 0 échec.

Le test accorde le consentement en écrivant lui-même dans localStorage : l'application n'a pas de bannière (revue.md).

Interfaces

ServiceAdresseIdentifiants par défaut
OpenObservehttp://localhost:5080admin@example.com / Complexpass#123
Umamihttp://localhost:3001admin / umami
Matomohttp://localhost:8081admin / MatomoLocal!2026
Rybbithttp://localhost:3004admin@example.com / RybbitLocal!2026

Tous les ports sont liés à 127.0.0.1. Ces identifiants sont ceux d'un POC local : ils ne doivent jamais servir ailleurs.

Arrêter et nettoyer

TerminalCode
pnpm telemetry:status # état des conteneurs pnpm telemetry:logs # 50 dernières lignes pnpm telemetry:down # arrêt, volumes conservés pnpm telemetry:reset # arrêt et suppression des volumes

Empreinte mesurée

Mesure réelle, les quatre services démarrés et au repos (docker stats, 25/10/2026) :

ServiceMémoire
ClickHouse (Rybbit)614 Mio
OpenObserve480 Mio
Matomo313 Mio
Rybbit backend229 Mio
Umami202 Mio
MariaDB (Matomo)122 Mio
Rybbit client63 Mio
PostgreSQL (Rybbit)45 Mio
PostgreSQL (Umami)39 Mio
Collecteur OTLP37 Mio
Redis (Rybbit)10 Mio
Total≈ 2,1 Gio

Volumes Docker après le POC : environ 1,8 Gio. Au repos, le CPU reste sous 8 % sur un cœur, surtout imputable à ClickHouse.

Rybbit à lui seul représente 5 conteneurs et près de la moitié de la mémoire. Si une seule solution d'analytics est retenue, c'est la plus coûteuse à exploiter.