Aller au contenu

Installation

eodia insights a besoin de deux services à côté de lui : une base PostgreSQL pour son catalogue (personnes, droits, sources, questions, tableaux de bord…) et Trino, le moteur qui exécute toutes les requêtes. Le dépôt fournit deux fichiers Compose : docker-compose.yml pour développer, docker-compose.prod.yml pour la production.

Prérequis : Node.js 22 ou plus, pnpm 9 et Docker.

Fenêtre de terminal
git clone https://github.com/eodia/insights.git && cd insights
docker compose up -d # catalogue, Trino et deux bases de démonstration
pnpm install
pnpm --filter @eodia/api dev # l’API, sur le port 4100 (worker inclus)
pnpm --filter @eodia/web dev # l’interface, sur le port 3100

Ouvrez http://localhost:3100. Au premier démarrage, une instance de démonstration est créée : une boutique en ligne sur PostgreSQL, un service client sur MongoDB, des questions, un tableau de bord et deux comptes. Voir Premiers pas.

ServiceAdresseRôle
Interfacehttp://localhost:3100Next.js ; relaie /api/* vers l’API
APIhttp://localhost:4100REST /api/v1, authentification, endpoint OPA
Trinohttp://localhost:58080le moteur de requêtes
Cataloguelocalhost:55435PostgreSQL de l’application
Démo PostgreSQLlocalhost:55434la base boutique
Démo MongoDBlocalhost:57017la base support

Tous les ports sont publiés sur 127.0.0.1 seulement. Pour le serveur MCP en développement :

Fenêtre de terminal
pnpm --filter @eodia/mcp dev # http://localhost:4200/mcp

Une image unique, construite par le Dockerfile du dépôt, contient l’API, l’interface, le worker et le serveur MCP. docker-compose.prod.yml l’assemble avec PostgreSQL, Trino 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. Trino demande à lui seul quelques gigaoctets de mémoire (2 Go de tas dans la configuration fournie).

À côté de docker-compose.prod.yml, créez un fichier .env avec les quatre valeurs obligatoires :

Fenêtre de terminal
DOMAIN=bi.exemple.fr
SECRET_KEY=<openssl rand -hex 32>
OPA_SECRET=<openssl rand -hex 24>
DB_PASSWORD=<un mot de passe fort>
VariableRôle
DOMAINle domaine public ; Caddy obtient son certificat Let’s Encrypt
SECRET_KEY64 caractères hexadécimaux : chiffre les mots de passe des sources
OPA_SECRETle secret placé dans le chemin de l’endpoint OPA, que seul Trino appelle
DB_PASSWORDle mot de passe du PostgreSQL du catalogue

Les variables facultatives — SSO, e-mails, copilot, cache… — sont listées en tête de docker-compose.prod.yml et dans Variables d’environnement.

Fenêtre de terminal
docker compose -f docker-compose.prod.yml up -d --build

Au premier démarrage, l’API applique les migrations du catalogue. Ouvrez ensuite https://bi.exemple.fr : le premier écran crée le compte administrateur.

CheminService
/api/*l’API (REST, authentification, copilot en SSE)
/mcple serveur MCP
tout le restel’interface
/internal/*rien : Caddy répond 404

L’endpoint OPA (/internal/opa/<secret>/…) n’est jamais exposé : Trino l’appelle directement sur le réseau Docker.

eodia insights est un logiciel libre d’Eodia.