Maskinrommet i Docker Compose (oppgave 2.6)

Maskinrommet kjører nå som Docker-service i server-stacken:
- Lagt til maskinrommet-service i docker-compose.yml på server
- Intern nettverkstilgang til PG (postgres:5432) og STDB (spacetimedb:3000)
- Caddy proxyer api.sidelinja.org → maskinrommet:3100
- Verifisert: health-endpoint, PG-tilkobling, STDB-tilkobling, warmup,
  auth-middleware (401 uten token)

Oppdatert docs/setup/produksjon.md med:
- Maskinrommet i service-oversikt og Caddyfile
- SpacetimeDB-variabler i .env-template
- Deploy-instruksjoner for bygging av Docker-image
- Verifiseringssjekkliste

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-17 13:32:11 +01:00
parent 79477a24bf
commit 76f386ac84
2 changed files with 30 additions and 5 deletions

View file

@ -119,11 +119,15 @@ LIVEKIT_API_SECRET=<generer med: openssl rand -hex 32>
OPENROUTER_API_KEY=<fra openrouter.ai>
# === Maskinrommet ===
DATABASE_URL=postgres://sidelinja:<POSTGRES_PASSWORD>@postgres:5432/synops
AUTHENTIK_ISSUER=https://auth.sidelinja.org/application/o/sidelinja/
AUTHENTIK_CLIENT_ID=<fra Authentik OIDC-provider>
AUTHENTIK_CLIENT_SECRET=<fra Authentik OIDC-provider>
# === SpacetimeDB ===
SPACETIMEDB_URL=http://spacetimedb:3000
SPACETIMEDB_DATABASE=synops
SPACETIMEDB_TOKEN=<generert av spacetime identity 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 <tjeneste>
docker compose up -d <tjeneste>
```
### 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 <tjeneste>
- [ ] 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)

View file

@ -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