Appearance
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
| Krav | Minimum |
|---|---|
| Kubernetes (for Helm) eller Docker (for Compose) | — |
| PostgreSQL | 15+ |
| OIDC-provider | Entra ID, Keycloak, Auth0, o.l. |
| Docker-image | ghcr.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
| Variabel | Påkrevd | Beskrivelse |
|---|---|---|
LUMI_ENV | Nei (default: development) | Sett til production i produksjonsmiljøer |
AUTH_PROVIDER | Ja (prod) | oidc eller local |
OIDC_ISSUER_URL | Ja (når AUTH_PROVIDER=oidc) | OIDC issuer URL, f.eks. https://login.microsoftonline.com/{tenant}/v2.0 |
OIDC_AUDIENCE | Ja (når AUTH_PROVIDER=oidc) | Forventet audience i JWT-tokenet |
LUMI_DASHBOARD_CLIENT_ID | Ja (prod) | OIDC client ID for dashboard-appen |
DATABASE_URL | Ja | PostgreSQL-tilkobling, f.eks. jdbc:postgresql://db:5432/lumi |
LUMI_ADMIN_GROUP | Nei | OIDC-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.noChartet 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 -dOpprett organisasjon
Etter at tjenestene er oppe, må du opprette en organisasjon. Dette gjøres én gang.
Via dashboard-veiviseren (anbefalt)
- Åpne dashboardet i nettleseren (standard:
http://localhost:3000) - Logg inn med din OIDC-konto
- Veiviseren starter automatisk første gang — ingen eksisterende organisasjon finnes
- 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
- Rask start (5 min) — embed widgeten i appen din
- Produksjonsherdning — origin-validering, rate limiting og nøkkelrotasjon
- Oppgradering — oppgrader Lumi, rollback og backup
