diff --git a/docs/setup/produksjon.md b/docs/setup/produksjon.md index c1ea6b6..fa317dc 100644 --- a/docs/setup/produksjon.md +++ b/docs/setup/produksjon.md @@ -119,11 +119,15 @@ LIVEKIT_API_SECRET= OPENROUTER_API_KEY= # === Maskinrommet === -DATABASE_URL=postgres://sidelinja:@postgres:5432/synops AUTHENTIK_ISSUER=https://auth.sidelinja.org/application/o/sidelinja/ AUTHENTIK_CLIENT_ID= AUTHENTIK_CLIENT_SECRET= +# === SpacetimeDB === +SPACETIMEDB_URL=http://spacetimedb:3000 +SPACETIMEDB_DATABASE=synops +SPACETIMEDB_TOKEN= + # === Intern === # Ingen porter eksponeres utenom 80/443. Alt rutes internt via Docker-nettverket. EOF @@ -175,6 +179,7 @@ services: authentik: # SSO for alle domener, på auth.sidelinja.org forgejo: # data:/srv/synops/data/forgejo, på git.sidelinja.org spacetimedb: # data:/srv/synops/data/spacetimedb + maskinrommet: # Rust/axum API, intern port 3100, proxyet via Caddy livekit: # Intern port, proxyet via Caddy sveltekit: # Intern port, proxyet via Caddy workers: # Rust job workers, ingen porter @@ -212,8 +217,7 @@ sidelinja.org { # === Maskinrommet API === api.sidelinja.org { - # Rust/axum backend — aktiveres i fase 2 - # reverse_proxy maskinrommet:3001 + reverse_proxy maskinrommet:3100 } # === Forgejo (Git) === @@ -415,6 +419,26 @@ docker compose build --no-cache docker compose up -d ``` +### Maskinrommet (Rust API) + +Maskinrommet bygges som Docker-image fra `maskinrommet/Dockerfile` og kjører +som service i docker-compose. Imaget bygges lokalt på serveren (ikke registry): + +```bash +# Kopier kildekode til server (eller clone repo) +rsync -avz --exclude='target/' maskinrommet/ server:/path/to/maskinrommet/ + +# Bygg image +cd /path/to/maskinrommet && docker build -t maskinrommet:latest . + +# Start/restart service +cd /srv/synops && docker compose up -d maskinrommet +``` + +Maskinrommet kobler til PG og SpacetimeDB via Docker-nettverket `sidelinja-net` +(hostname `postgres` og `spacetimedb`). Ved oppstart laster den hele grafen +fra PG inn i STDB (warmup). Caddy proxyer `api.sidelinja.org` til port 3100. + ## 13. Verifisering etter oppsett ### Lag A (minimum fungerende server) @@ -424,6 +448,8 @@ docker compose up -d - [ ] SSH-push fra lokal WSL2 til Forgejo fungerer ### Lag B-C +- [x] `https://api.sidelinja.org/health` returnerer `{"status":"ok"}` med PG og STDB tilkoblet (verifisert 2026-03-17) +- [x] `https://api.sidelinja.org/me` returnerer 401 uten token (verifisert 2026-03-17) - [x] `https://sidelinja.org` laster SvelteKit-appen (deployet 2025-03-15) - [x] `https://sidelinja.org/api/health` returnerer 200 - [x] Authentik OIDC-innlogging fungerer fra nettleser (verifisert 2025-03-15) diff --git a/tasks.md b/tasks.md index 233a292..fe3ba0a 100644 --- a/tasks.md +++ b/tasks.md @@ -56,8 +56,7 @@ Uavhengige faser kan fortsatt plukkes. - [x] 2.3 SpacetimeDB-klient i maskinrommet: koble til STDB, skriv noder og edges via reducers. - [x] 2.4 Skrivestien: `POST /intentions/create_node` — valider, skriv STDB (instant), spawn async PG-skriving. Returner node_id umiddelbart. - [x] 2.5 Flere intensjoner: `create_edge`, `update_node`, `delete_node`. Validering av tilgang (created_by eller owner/admin-edge). -- [~] 2.6 Docker Compose: legg maskinrommet inn i server-stacken. Intern nettverkstilgang til PG og STDB. - > Påbegynt: 2026-03-17T13:26 +- [x] 2.6 Docker Compose: legg maskinrommet inn i server-stacken. Intern nettverkstilgang til PG og STDB. ## Fase 3: Frontend — skjelett