# 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

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

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

```bash
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](/analytics/bilans/revue)).

## Interfaces

| Service     | Adresse               | Identifiants par défaut                  |
| ----------- | --------------------- | ---------------------------------------- |
| OpenObserve | http://localhost:5080 | `admin@example.com` / `Complexpass#123`  |
| Umami       | http://localhost:3001 | `admin` / `umami`                        |
| Matomo      | http://localhost:8081 | `admin` / `MatomoLocal!2026`             |
| Rybbit      | http://localhost:3004 | `admin@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

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

| Service             |       Mémoire |
| ------------------- | ------------: |
| ClickHouse (Rybbit) |       614 Mio |
| OpenObserve         |       480 Mio |
| Matomo              |       313 Mio |
| Rybbit backend      |       229 Mio |
| Umami               |       202 Mio |
| MariaDB (Matomo)    |       122 Mio |
| Rybbit client       |        63 Mio |
| PostgreSQL (Rybbit) |        45 Mio |
| PostgreSQL (Umami)  |        39 Mio |
| Collecteur OTLP     |        37 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.
