Skip to content

Distribuer Lumi

Lumi kjøres på din egen infrastruktur. Denne guiden hjelper DevOps-ansvarlig å sette opp Lumi API, dashboard og database — og opprette en organisasjon klar for bruk.

Forutsetninger

KravMinimum
Kubernetes (for Helm) eller Docker (for Compose)
PostgreSQL15+
OIDC-providerEntra ID, Keycloak, Auth0, o.l.
Docker-imageghcr.io/asorheim/lumi-analytics/lumi-api og ghcr.io/asorheim/lumi-analytics/lumi-dashboard

Lokal testing

Du kan kjøre Lumi uten OIDC-provider ved å sette AUTH_PROVIDER=local. Anbefales kun for utvikling.

Miljøvariabler

VariabelPåkrevdBeskrivelse
LUMI_ENVNei (default: development)Sett til production i produksjonsmiljøer
AUTH_PROVIDERJa (prod)oidc eller local
OIDC_ISSUER_URLJa (når AUTH_PROVIDER=oidc)OIDC issuer URL, f.eks. https://login.microsoftonline.com/{tenant}/v2.0
OIDC_AUDIENCEJa (når AUTH_PROVIDER=oidc)Forventet audience i JWT-tokenet
LUMI_DASHBOARD_CLIENT_IDJa (prod)OIDC client ID for dashboard-appen
DATABASE_URLJaPostgreSQL-tilkobling, f.eks. jdbc:postgresql://db:5432/lumi
LUMI_ADMIN_GROUPNeiOIDC-gruppe-ID som gir tilgang til admin-funksjonalitet

Installer med Helm

Chartet publiseres som OCI-artefakt til ghcr.io:

sh
helm install lumi oci://ghcr.io/asorheim/lumi-analytics/charts/lumi \
  --version 0.1.0 \
  --namespace lumi \
  --create-namespace \
  --set postgresql.auth.password=<sikkert-passord> \
  --set valkey.auth.password=<sikkert-passord> \
  --set api.env.oidcIssuerUrl=https://login.microsoftonline.com/{tenant}/v2.0 \
  --set api.env.oidcAudience=api://{client-id} \
  --set api.env.dashboardClientId={dashboard-client-id} \
  --set dashboard.env.oidcIssuerUrl=https://login.microsoftonline.com/{tenant}/v2.0 \
  --set dashboard.env.oidcClientId={dashboard-client-id} \
  --set dashboard.env.oidcRedirectUri=https://lumi.din-bedrift.no/auth/callback \
  --set dashboard.secret.oidcClientSecret={client-secret} \
  --set dashboard.secret.sessionSecret=$(openssl rand -base64 32) \
  --set ingress.host=lumi.din-bedrift.no

Chartet inkluderer PostgreSQL og Valkey (stats-cache) som subcharts. Bruk --set postgresql.enabled=false med api.externalDatabase.* for ekstern database.

Se referansen for miljøvariabler ovenfor for de mest brukte verdiene. Helm-chartet eksponerer flere alternativer som er dokumentert i kommentarfeltet av values.yaml i din lokale klone av chartet.


Installer med Docker Compose

yaml
# docker-compose.yml
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: lumi
      POSTGRES_USER: lumi
      POSTGRES_PASSWORD: lumi
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U lumi"]
      interval: 5s
      retries: 5

  api:
    image: ghcr.io/asorheim/lumi-analytics/lumi-api:0.1.0
    depends_on:
      db:
        condition: service_healthy
    environment:
      LUMI_ENV: production
      AUTH_PROVIDER: oidc
      OIDC_ISSUER_URL: https://login.microsoftonline.com/{tenant}/v2.0
      OIDC_AUDIENCE: api://{client-id}
      DATABASE_URL: jdbc:postgresql://db:5432/lumi
      LUMI_DASHBOARD_CLIENT_ID: "{dashboard-client-id}"
      LUMI_ADMIN_GROUP: "{entra-group-id}"
    ports:
      - "8080:8080"

  dashboard:
    image: ghcr.io/asorheim/lumi-analytics/lumi-dashboard:0.1.0
    environment:
      LUMI_API_URL: http://api:8080
    ports:
      - "3000:3000"

volumes:
  pgdata:

Start med:

sh
docker compose up -d

Opprett organisasjon

Etter at tjenestene er oppe, må du opprette en organisasjon. Dette gjøres én gang.

Via dashboard-veiviseren (anbefalt)

  1. Åpne dashboardet i nettleseren (standard: http://localhost:3000)
  2. Logg inn med din OIDC-konto
  3. Veiviseren starter automatisk første gang — ingen eksisterende organisasjon finnes
  4. Følg stegene: organisasjonsnavn → opprett admin-team → ferdig

Via CLI (alternativ)

Alle setup-endepunkter krever OIDC Bearer-token. Hent et token fra din OIDC-provider først.

sh
# Sjekk at setup ikke er gjort ennå
curl https://lumi.din-bedrift.no/api/v1/setup/status \
  -H "Authorization: Bearer <jwt>"

# Svar: { "orgExists": false, "hasApiKeys": false, "orgName": null }

# Opprett organisasjon
curl -X POST https://lumi.din-bedrift.no/api/v1/setup \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Din Bedrift AS"}'

# Svar: 201 Created
# { "org": { "slug": "din-bedrift-as", "name": "Din Bedrift AS" },
#   "team": { "slug": "default", "name": "Default" } }

# Generer API-nøkler
curl -X POST https://lumi.din-bedrift.no/api/v1/setup/keys \
  -H "Authorization: Bearer <jwt>"

# Svar: 201 Created
# { "secretKey": "lumi_sk_live_...", "publishableKey": "lumi_pk_live_..." }

API-nøkler opprettes av utviklerne

Etter at organisasjonen er opprettet, kan teammedlemmer selv opprette pk_-nøkler fra Innstillinger → API-nøkler i dashboardet. Ingen admin-handling nødvendig.


Neste steg

Lumi Analytics — bygget på navikt/lumi (MIT-lisens)