Skip to content

Installation

eodia insights needs two services alongside it: a PostgreSQL database for its catalog (people, permissions, sources, questions, dashboards…) and Trino, the engine that runs every query. The repository provides two Compose files: docker-compose.yml for development, docker-compose.prod.yml for production.

Prerequisites: Node.js 22 or later, pnpm 9 and Docker.

Fenêtre de terminal
git clone https://github.com/eodia/insights.git && cd insights
docker compose up -d # catalog, Trino and two demo databases
pnpm install
pnpm --filter @eodia/api dev # the API, on port 4100 (worker included)
pnpm --filter @eodia/web dev # the interface, on port 3100

Open http://localhost:3100. On first start, a demo instance is created: an online shop on PostgreSQL, a customer service on MongoDB, questions, a dashboard and two accounts. See Getting started.

ServiceAddressRole
Interfacehttp://localhost:3100Next.js; relays /api/* to the API
APIhttp://localhost:4100REST /api/v1, authentication, OPA endpoint
Trinohttp://localhost:58080the query engine
Cataloglocalhost:55435the application’s PostgreSQL
Demo PostgreSQLlocalhost:55434the boutique database
Demo MongoDBlocalhost:57017the support database

All ports are published on 127.0.0.1 only. For the MCP server in development:

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

A single image, built by the repository’s Dockerfile, contains the API, the interface, the worker and the MCP server. docker-compose.prod.yml puts it together with PostgreSQL, Trino and Caddy, which obtains the HTTPS certificate.

Prerequisites: a server with Docker and Compose v2, a domain name pointing to it, and ports 80 and 443 open. Trino alone needs a few gigabytes of memory (a 2 GB heap in the provided configuration).

Next to docker-compose.prod.yml, create a .env file with the four required values:

Fenêtre de terminal
DOMAIN=bi.example.com
SECRET_KEY=<openssl rand -hex 32>
OPA_SECRET=<openssl rand -hex 24>
DB_PASSWORD=<a strong password>
VariableRole
DOMAINthe public domain; Caddy obtains its Let’s Encrypt certificate
SECRET_KEY64 hexadecimal characters: encrypts the source passwords
OPA_SECRETthe secret placed in the path of the OPA endpoint, which only Trino calls
DB_PASSWORDthe password of the catalog’s PostgreSQL

Optional variables — SSO, e-mail, copilot, cache… — are listed at the top of docker-compose.prod.yml and in Environment variables.

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

On first start, the API applies the catalog migrations. Then open https://bi.example.com: the first screen creates the administrator account.

PathService
/api/*the API (REST, authentication, copilot over SSE)
/mcpthe MCP server
everything elsethe interface
/internal/*nothing: Caddy responds 404

The OPA endpoint (/internal/opa/<secret>/…) is never exposed: Trino calls it directly on the Docker network.

  • Getting started: the demo, a source, a question, a dashboard.
  • Docker: the image, its roles and the production services.
  • Single sign-on: connect your OpenID Connect provider.

eodia insights is free software by Eodia.