Installation
eodia analytics n’a besoin que d’un service à côté de lui : PostgreSQL (17 conseillé), qui
porte à la fois le paramétrage, les données brutes et les vues lues par eodia insights. Pas de
courtier de messages, pas de base analytique à part. Le dépôt fournit deux fichiers Compose :
docker-compose.yml pour développer, docker-compose.prod.yml pour la production.
Pour développer
Section intitulée « Pour développer »Prérequis : Node.js 22 ou plus, pnpm 9 et Docker.
git clone https://github.com/eodia/analytics.git && cd analyticsdocker compose up -d # PostgreSQL, sur le port 55436pnpm installpnpm --filter @eodia-analytics/tracker dev # le script, reconstruit dans apps/tracker/dist/a.jspnpm --filter @eodia-analytics/api dev # l’API, sur le port 4600 (worker inclus)pnpm --filter @eodia-analytics/web dev # l’interface, sur le port 3600Ouvrez http://localhost:3600 et connectez-vous avec
admin@eodia.local / eodia-analytics. Au premier démarrage, une instance de démonstration
est créée : la boutique fictive Maison Arvor (en mode cookie de mesure) et le blog
d’Arvor (sans cookie). Voir Premiers pas.
| Service | Adresse | Rôle |
|---|---|---|
| Interface | http://localhost:3600 | Next.js ; relaie /api/* vers l’API |
| API | http://localhost:4600 | REST /api/v1, authentification, /a.js, /collect |
| Page d’essai | http://localhost:4600/demo | une page qui porte la balise du site de démo |
| PostgreSQL | localhost:55436 | la base analytics (schémas public, collect, analytics) |
Tous les ports sont publiés sur 127.0.0.1 seulement. Pour avoir de quoi analyser dans
insights :
pnpm demo:traffic # quelques semaines de visites, de sources, d’événements et de clicspnpm demo:traffic --live # puis quelques visites par minute, pour l’onglet VérificationEn production
Section intitulée « En production »Une image unique, construite par le Dockerfile du dépôt, contient l’API (avec le script),
l’interface et le worker. docker-compose.prod.yml l’assemble avec PostgreSQL et
Caddy, qui obtient le certificat HTTPS.
Prérequis : un serveur avec Docker et Compose v2, un nom de domaine qui pointe vers lui, et les ports 80 et 443 ouverts. La pile est légère : quelques centaines de mégaoctets de mémoire suffisent pour commencer ; c’est PostgreSQL qui grandit avec le trafic.
1. Le fichier .env
Section intitulée « 1. Le fichier .env »À côté de docker-compose.prod.yml, créez un fichier .env :
DOMAIN=stats.exemple.frSECRET_KEY=<openssl rand -hex 32>DB_PASSWORD=<un mot de passe fort>READER_PASSWORD=<le mot de passe du rôle lu par eodia insights>| Variable | Rôle |
|---|---|
DOMAIN | le domaine public ; Caddy obtient son certificat Let’s Encrypt |
SECRET_KEY | 64 caractères hexadécimaux : chiffre les secrets des sites |
DB_PASSWORD | le mot de passe du PostgreSQL de l’application |
READER_PASSWORD | facultatif : sans lui, le rôle eodia_analytics existe mais ne peut pas se connecter |
Les autres variables — adresse de collecte, branchement à insights, SSO, e-mails — sont décrites dans Variables d’environnement.
2. Démarrer
Section intitulée « 2. Démarrer »docker compose -f docker-compose.prod.yml up -d --buildAu premier démarrage, l’API applique les migrations : les trois schémas, les vues
d’analytics et leurs commentaires, le rôle de lecture. Ouvrez ensuite
https://stats.exemple.fr : le premier écran crée le compte administrateur.
Ce que Caddy publie
Section intitulée « Ce que Caddy publie »| Chemin | Service |
|---|---|
/a.js, /p.js | l’API : le script, et le dessin du mode aperçu |
/collect, /collect/* | l’API : le point de collecte public et la collecte côté serveur |
/api/* | l’API : REST et authentification |
| tout le reste | l’interface |
Caddy ne tient aucun journal d’accès : il garderait l’adresse IP des visiteurs, que l’application ne stocke jamais.
Et ensuite ?
Section intitulée « Et ensuite ? »- Premiers pas : créer un site, coller la balise, voir « Reçu ✓ ».
- Docker : l’image, ses rôles et les services de production.
- Brancher eodia insights : la source PostgreSQL et le rôle de lecture.
eodia analytics est un logiciel libre d’Eodia.