Oppdater docs til server-only utviklingsmodell

Fjerner alle referanser til lokal WSL2-instans og to-instans-modellen.
All utvikling skjer nå direkte på produksjonsserveren via Claude Code.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-17 18:29:45 +00:00
parent f81c8a96e0
commit 91ccf4b270
6 changed files with 42 additions and 47 deletions

View file

@ -12,14 +12,11 @@ plattformkode og infrastruktur er skilt fra tenant-data og -innhold.
- **Standard arbeidsmodus:** Start i planleggingsmodus. Lag en grundig plan,
få godkjenning, deretter implementer. Jobbene er ment å kunne kjøre
lenge autonomt uten input underveis.
- **Utvikling mot server.** Ingen lokale databaser eller tjenester.
Frontend (SvelteKit) utvikles lokalt med HMR mot server-API.
Rust bygges lokalt, deployes til server for integrasjonstest.
- **Alt skjer på serveren.** Claude Code kjører direkte på produksjonsserveren
(`/home/vegard/synops/`). Rust, Node.js og Docker er tilgjengelig.
Bygging, testing og deploy skjer her. Vegard kobler til via SSH/tmux.
- **Browser-testing:** Claude har ikke tilgang til browser. Visuell testing
gjøres av Vegard. Claude verifiserer backend (kompilering, API, DB-state).
- **Server-side Claude Code:** Claude Code er installert på serveren med repo
i `/home/vegard/synops/`. Brukes for vedlikehold, feilretting og oppgavekjøring
direkte på serveren (f.eks. via tmux fra telefon). Rust og Node.js tilgjengelig.
- **Commit og push:** Bruk egen vurdering. Trygt og reverserbart.
- **Deploy til produksjon:** Krever alltid eksplisitt godkjenning fra Vegard.
- **Diskusjon:** Forklar og diskuter før arkitekturendringer.
@ -52,7 +49,7 @@ CLAUDE.md er eneste startdokument. Alt annet ligger under `docs/`:
- `docs/proposals/` — Idébank med 32+ uimplementerte forslag (se README.md)
- `docs/setup/` — Oppsett og drift:
- `produksjon.md` — Steg-for-steg oppsett av Hetzner VPS fra scratch
- `lokal.md`Lokalt utviklingsmiljø (WSL2, mot server)
- `lokal.md`Historisk: lokalt utviklingsmiljø (WSL2). Utdatert — all utvikling skjer nå på serveren.
- `migration_safety.md` — Sjekkliste for PostgreSQL-migrasjoner (v1 workspace-RLS, trenger omskriving til node_access)
- `docs/infra/` — Infrastruktur og drift:
- `ai_gateway.md` — LiteLLM som sentralisert AI-ruter (BYOK + fallback)
@ -64,8 +61,8 @@ CLAUDE.md er eneste startdokument. Alt annet ligger under `docs/`:
- `ops/` — Repeterbare vedlikeholdsjobber (ryddejobb, doc-audit, drift-sjekk)
## Aktører
- **Vegard** — serveradmin, utvikler, bruker. SSH: `vegard@157.180.81.26`
- **Claude** — AI-agent, utvikler. SSH: `claude@157.180.81.26`
- **Vegard** — serveradmin, utvikler, bruker. Kobler til via SSH/tmux.
- **Claude** — AI-agent, utvikler. Kjører direkte på serveren (`/home/vegard/synops/`).
- Begge har sudo + docker-tilgang på serveren.
## Stack
@ -79,9 +76,8 @@ CLAUDE.md er eneste startdokument. Alt annet ligger under `docs/`:
## Produksjonsserver
- **IP:** 157.180.81.26
- **SSH:** `ssh vegard@157.180.81.26` / `ssh claude@157.180.81.26`
- **SSH:** `ssh vegard@157.180.81.26`
- **Root-login:** Deaktivert
- **SSH-nøkkel (lokal WSL2):** `/home/vegard/.ssh/id_ed25519`
- **Server-filer:** `/srv/synops/` (docker-compose.yml, .env, config/, data/)
- **Domener:**
- `sidelinja.org` — Tenant-app (Sidelinja podcastredaksjonen)

View file

@ -1,7 +1,11 @@
# Oppsett: Lokalt Utviklingsmiljø (WSL2)
# Oppsett: Lokalt Utviklingsmiljø (WSL2) — UTDATERT
**Filsti:** `docs/setup/lokal.md`
Det lokale miljøet er et **utviklingsmiljø for kode**. Frontend (SvelteKit) kjøres lokalt med HMR, Rust bygges lokalt. Alle tjenester (PG, SpacetimeDB, AI Gateway, etc.) kjører på produksjonsserveren — ingen lokal Docker-replika.
> **MERK:** Denne guiden er utdatert. All utvikling skjer nå direkte på
> produksjonsserveren via Claude Code. Dokumentet beholdes som referanse
> i tilfelle lokalt utviklingsmiljø gjeninnføres.
Det lokale miljøet var et **utviklingsmiljø for kode**. Frontend (SvelteKit) ble kjørt lokalt med HMR, Rust ble bygd lokalt. Alle tjenester (PG, SpacetimeDB, AI Gateway, etc.) kjørte på produksjonsserveren — ingen lokal Docker-replika.
## Hva som gjøres hvor

View file

@ -420,16 +420,17 @@ docker compose up -d forgejo
```
## 12. Deploy-workflow (etter initial setup)
Etter at serveren er satt opp, er dette den daglige deploy-flyten:
All utvikling og deploy skjer direkte på serveren. Claude Code kjører i
`/home/vegard/synops/` og har direkte tilgang til Docker og alle tjenester.
```bash
# Fra lokal maskin (WSL2):
# Commit og push til Forgejo
cd /home/vegard/synops
git add <filer> && git commit -m "beskrivelse"
git push forgejo main
# SSH inn til server:
ssh sidelinja@<server-ip>
# Bygg og deploy tjeneste (krever godkjenning fra Vegard)
cd /srv/synops
git pull
docker compose build --no-cache <tjeneste>
docker compose up -d <tjeneste>
```
@ -437,14 +438,11 @@ 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):
som service i docker-compose. Imaget bygges 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 .
cd /home/vegard/synops/maskinrommet && docker build -t maskinrommet:latest .
# Start/restart service
cd /srv/synops && docker compose up -d maskinrommet
@ -460,7 +458,7 @@ fra PG inn i STDB (warmup). Caddy proxyer `api.sidelinja.org` til port 3100.
- [ ] `https://auth.sidelinja.org` viser Authentik login
- [ ] `https://git.sidelinja.org` viser Forgejo, innlogging via Authentik fungerer
- [ ] PostgreSQL: `docker compose exec postgres pg_isready` returnerer OK
- [ ] SSH-push fra lokal WSL2 til Forgejo fungerer
- [ ] Git push til Forgejo fungerer
### Lag B-C
- [x] `https://api.sidelinja.org/health` returnerer `{"status":"ok"}` med PG og STDB tilkoblet (verifisert 2026-03-17)

View file

@ -10,7 +10,7 @@ kjøres av Claude eller manuelt.
|------|-----|----------|-------------|
| Ryddejobb | [ryddejobb.md](ryddejobb.md) | Annenhver uke / ved behov | Full revisjon av prosjektet — docs, kode, drift, fremdrift |
| Doc-audit | [doc-audit.md](doc-audit.md) | Månedlig / etter store endringer | Sjekk at docs/ stemmer med faktisk kode |
| Drift-sjekk | [drift-sjekk.md](drift-sjekk.md) | Ved deploy / ved behov | Asynkron tilstand mellom prod, lokal og docs |
| Drift-sjekk | [drift-sjekk.md](drift-sjekk.md) | Ved deploy / ved behov | Synk mellom repo, deploy og docs |
## Konvensjoner

View file

@ -1,42 +1,39 @@
# Drift-sjekk — Prod vs lokal vs docs
# Drift-sjekk — Repo vs deploy vs docs
## Hva
Verifiser at produksjonsserveren, lokalt utviklermiljø og dokumentasjon er i synk.
Verifiser at repo, deployede tjenester og dokumentasjon er i synk.
Fanger opp tilfeller der noe er deployet men ikke dokumentert, eller dokumentert
men ikke implementert.
## Når
- Før og etter deploy til produksjon
- Når noe oppfører seg annerledes i prod vs lokalt
- Ved mistanke om drift
## Sjekkliste
### 1. Git-status
- [ ] Er prod-server på siste commit? (`ssh vegard@157.180.81.26 'cd /srv/synops/app && git log -1'`)
- [ ] Er det ucommittede endringer lokalt som burde vært pushet?
- [ ] Er det commits på Forgejo som ikke er deployet til prod?
- [ ] Er repo oppdatert? (`git status`, `git log -3`)
- [ ] Er det ucommittede endringer som burde vært pushet?
- [ ] Er det commits i repo som ikke er deployet til Docker-tjenestene?
### 2. Database-migrasjoner
- [ ] Er alle lokale migrasjoner pushet til repo?
- [ ] Er alle migrasjoner i repo kjørt i prod?
- [ ] Stemmer migrasjonsnumre mellom miljøer?
- [ ] Er alle migrasjoner i repo kjørt i PG?
- [ ] Stemmer migrasjonsnumre?
### 3. Docker-tjenester
- [ ] Kjører alle forventede containere i prod? (`docker compose ps`)
- [ ] Er image-versjoner oppdatert?
- [ ] Kjører alle forventede containere? (`docker compose ps`)
- [ ] Er image-versjoner oppdatert med siste kode?
### 4. Miljøvariabler
- [ ] Er det nye env-vars lagt til lokalt som mangler i prod `.env`?
- [ ] Er det env-vars i prod som er utdaterte?
- [ ] Er det nye env-vars i koden som mangler i `/srv/synops/.env`?
- [ ] Er det env-vars i `.env` som er utdaterte?
- [ ] Er secrets rotert der de bør være?
### 5. SpacetimeDB-modul
- [ ] Er SpacetimeDB-modulen publisert med siste endringer?
- [ ] Stemmer modul-skjema mellom lokal og prod?
### 6. Caddy / reverse proxy
- [ ] Er Caddyfile i repo synk med prod?
- [ ] Er Caddyfile i repo synk med `/srv/synops/config/caddy/Caddyfile`?
- [ ] Er det nye subdomener eller routes som mangler?
## Sist kjørt

View file

@ -39,11 +39,10 @@ fjerne utdaterte referanser, og sikre at dokumentasjon stemmer med virkeligheten
- [ ] Hva er kun planlagt (kun docs)?
- [ ] Oppdater en kort statusoversikt (kan legges i `ops/status.md` ved behov)
### 5. Asynkron tilstand — prod vs lokal vs docs
- [ ] Stemmer `docker-compose.dev.yml` med det som faktisk kjøres lokalt?
- [ ] Er prod-server oppdatert med siste push?
- [ ] Er det migrasjoner som er kjørt lokalt men ikke i prod (eller omvendt)?
- [ ] Er miljøvariabler (.env) synkronisert mellom miljøer?
### 5. Synk — repo vs deploy vs docs
- [ ] Er deployede Docker-images bygd fra siste kode i repo?
- [ ] Er alle migrasjoner i repo kjørt i PG?
- [ ] Er miljøvariabler i `/srv/synops/.env` oppdatert?
### 6. CLAUDE.md minne
- [ ] Gå gjennom `~/.claude/projects/-home-vegard-server/memory/MEMORY.md`
@ -56,8 +55,9 @@ fjerne utdaterte referanser, og sikre at dokumentasjon stemmer med virkeligheten
- [ ] Er eksisterende erfaringsdokumenter fortsatt relevante og korrekte?
### 8. Utviklermiljø
- [ ] Fungerer lokal utvikling mot server (SvelteKit HMR, Rust build)?
- [ ] Er `docs/setup/lokal.md` oppdatert med eventuelle nye steg?
- [ ] Kompilerer Rust (`cargo build` i maskinrommet/)?
- [ ] Bygger frontend (`npm run build` i frontend/)?
- [ ] Er `~/.claude/CLAUDE.md` (server-instrukser) oppdatert?
## Sist kjørt