Caddy-config: reverse proxy for alle Synops-domener (oppgave 1.4)

Oppretter Caddyfile med:
- auth.sidelinja.org → Authentik SSO
- sidelinja.org → SpacetimeDB (/spacetime/*), media (/media/*), SvelteKit (placeholder)
- api.sidelinja.org → maskinrommet (placeholder, 503 til fase 2)
- git.sidelinja.org → Forgejo
- vegard.info → placeholder

Auto-TLS via Let's Encrypt. Tjenester som ikke er deployet ennå bruker
respond-placeholders — kommentert reverse_proxy aktiveres når containerne
er klare. Verifisert på server: alle domener svarer med korrekt status.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-17 12:11:22 +01:00
parent 2b54498d04
commit f1e9634117
3 changed files with 77 additions and 21 deletions

53
config/caddy/Caddyfile Normal file
View file

@ -0,0 +1,53 @@
# Synops — Caddyfile
#
# Eneste tjeneste med eksponerte porter (80/443).
# Alt annet rutes internt via Docker-nettverket sidelinja-net.
# Auto-TLS via Let's Encrypt for alle domener.
# === SSO ===
auth.sidelinja.org {
reverse_proxy authentik-server:9000
}
# === Sidelinja (hovedapplikasjon) ===
sidelinja.org {
# SpacetimeDB (WebSocket)
handle_path /spacetime/* {
reverse_proxy spacetimedb:3000
}
# Podcast media (statiske filer med byte-range support)
handle_path /media/* {
root * /srv/media
file_server {
browse
}
}
# SvelteKit (frontend + SSR API)
# Aktiveres når SvelteKit-containeren er klar (fase 3)
# reverse_proxy sveltekit:3000
# Placeholder til SvelteKit er deployet
respond "sidelinja.org — Synops v2 under utvikling" 200
}
# === Maskinrommet API ===
api.sidelinja.org {
# Rust/axum backend (fase 2)
# Aktiveres når maskinrommet-containeren er klar
# reverse_proxy maskinrommet:3001
# Placeholder til maskinrommet er deployet
respond "api.sidelinja.org — ikke tilgjengelig ennå" 503
}
# === Forgejo (Git) ===
git.sidelinja.org {
reverse_proxy forgejo:3000
}
# === Vegard.info ===
vegard.info {
respond "vegard.info — under construction" 200
}

View file

@ -177,37 +177,37 @@ services:
## 7. Caddy (Caddyfile grunnstruktur) ## 7. Caddy (Caddyfile grunnstruktur)
```caddyfile ```caddyfile
# === SSO (felles for alle domener) === # === SSO ===
auth.sidelinja.org { auth.sidelinja.org {
reverse_proxy authentik:9000 reverse_proxy authentik-server:9000
} }
# === Sidelinja (hovedapplikasjon) === # === Sidelinja (hovedapplikasjon) ===
sidelinja.org { sidelinja.org {
# SvelteKit (frontend + API) # SpacetimeDB (WebSocket) — handle_path stripper prefix
reverse_proxy sveltekit:3000
# LiveKit (WebSocket upgrade)
handle_path /livekit/* {
reverse_proxy livekit:7880
}
# SpacetimeDB (WebSocket)
handle_path /spacetime/* { handle_path /spacetime/* {
reverse_proxy spacetimedb:3000 reverse_proxy spacetimedb:3000
} }
# LiveKit (WebSocket upgrade) — aktiveres i fase 11
# handle_path /livekit/* {
# reverse_proxy livekit:7880
# }
# Podcast media (statiske filer med byte-range support) # Podcast media (statiske filer med byte-range support)
handle_path /media/* { handle_path /media/* {
root * /srv/synops/media root * /srv/media
file_server file_server
} }
# Podcast access log (kun media-forespørsler) # SvelteKit (frontend + SSR API) — aktiveres i fase 3
log { # reverse_proxy sveltekit:3000
output file /srv/synops/logs/caddy/podcast_access.log }
format json
} # === Maskinrommet API ===
api.sidelinja.org {
# Rust/axum backend — aktiveres i fase 2
# reverse_proxy maskinrommet:3001
} }
# === Forgejo (Git) === # === Forgejo (Git) ===
@ -217,11 +217,15 @@ git.sidelinja.org {
# === Vegard.info === # === Vegard.info ===
vegard.info { vegard.info {
# Konfigureres når innhold er klart respond "vegard.info — under construction" 200
respond "Under construction" 200
} }
``` ```
**Merk:** Tjenester som ikke er deployet ennå er kommentert ut. Faktisk Caddyfile
ligger i `config/caddy/Caddyfile` i repoet og synkes til `/srv/synops/config/caddy/Caddyfile`
på serveren. Caddy bruker placeholders (`respond`) for tjenester som ikke er klare.
Mediefiler i Caddy-containeren er montert som `/srv/synops/media:/srv/media:ro`.
## 8. PostgreSQL: Initielle databaser ## 8. PostgreSQL: Initielle databaser
Ved første oppstart må det opprettes separate databaser og brukere for Authentik og Forgejo: Ved første oppstart må det opprettes separate databaser og brukere for Authentik og Forgejo:

View file

@ -46,8 +46,7 @@ Uavhengige faser kan fortsatt plukkes.
- [x] 1.1 PostgreSQL schema: opprett database `synops`, enums (`visibility`, `access_level`), tabeller (`nodes`, `edges`, `node_access`, `auth_identities`) med indekser. Kjør på server via SSH. Ref: `docs/primitiver/nodes.md`, `docs/primitiver/edges.md`, `docs/retninger/bruker_ikke_workspace.md`. - [x] 1.1 PostgreSQL schema: opprett database `synops`, enums (`visibility`, `access_level`), tabeller (`nodes`, `edges`, `node_access`, `auth_identities`) med indekser. Kjør på server via SSH. Ref: `docs/primitiver/nodes.md`, `docs/primitiver/edges.md`, `docs/retninger/bruker_ikke_workspace.md`.
- [x] 1.2 Seed-data: opprett Vegards brukernode (`node_kind='person'`, `title='Vegard'`) og `auth_identities`-rad. Opprett Sidelinja samlings-node og `owner`-edge fra Vegard. - [x] 1.2 Seed-data: opprett Vegards brukernode (`node_kind='person'`, `title='Vegard'`) og `auth_identities`-rad. Opprett Sidelinja samlings-node og `owner`-edge fra Vegard.
- [x] 1.3 SpacetimeDB modul: opprett Rust-modul med `nodes` og `edges`-tabeller som speiler PG-skjema. Grunnleggende reducers for CRUD. Deploy til server. Ref: `docs/retninger/datalaget.md`, `docs/erfaringer/spacetimedb_integrasjon.md`. - [x] 1.3 SpacetimeDB modul: opprett Rust-modul med `nodes` og `edges`-tabeller som speiler PG-skjema. Grunnleggende reducers for CRUD. Deploy til server. Ref: `docs/retninger/datalaget.md`, `docs/erfaringer/spacetimedb_integrasjon.md`.
- [~] 1.4 Caddy-config: reverse proxy for maskinrommet (api.sidelinja.org), SpacetimeDB, og SvelteKit. Auto-TLS. Ref: `docs/setup/produksjon.md`. - [x] 1.4 Caddy-config: reverse proxy for maskinrommet (api.sidelinja.org), SpacetimeDB, og SvelteKit. Auto-TLS. Ref: `docs/setup/produksjon.md`.
> Påbegynt: 2026-03-17T12:06
- [ ] 1.5 Authentik: opprett OIDC-provider og applikasjon for Synops. Konfigurer redirect URIs. Ref: `docs/erfaringer/authentik_oppsett.md`. - [ ] 1.5 Authentik: opprett OIDC-provider og applikasjon for Synops. Konfigurer redirect URIs. Ref: `docs/erfaringer/authentik_oppsett.md`.
## Fase 2: Maskinrommet — skjelett ## Fase 2: Maskinrommet — skjelett