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

View file

@ -420,16 +420,17 @@ docker compose up -d forgejo
``` ```
## 12. Deploy-workflow (etter initial setup) ## 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 ```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 git push forgejo main
# SSH inn til server: # Bygg og deploy tjeneste (krever godkjenning fra Vegard)
ssh sidelinja@<server-ip>
cd /srv/synops cd /srv/synops
git pull
docker compose build --no-cache <tjeneste> docker compose build --no-cache <tjeneste>
docker compose up -d <tjeneste> docker compose up -d <tjeneste>
``` ```
@ -437,14 +438,11 @@ docker compose up -d <tjeneste>
### Maskinrommet (Rust API) ### Maskinrommet (Rust API)
Maskinrommet bygges som Docker-image fra `maskinrommet/Dockerfile` og kjører 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 ```bash
# Kopier kildekode til server (eller clone repo)
rsync -avz --exclude='target/' maskinrommet/ server:/path/to/maskinrommet/
# Bygg image # Bygg image
cd /path/to/maskinrommet && docker build -t maskinrommet:latest . cd /home/vegard/synops/maskinrommet && docker build -t maskinrommet:latest .
# Start/restart service # Start/restart service
cd /srv/synops && docker compose up -d maskinrommet 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://auth.sidelinja.org` viser Authentik login
- [ ] `https://git.sidelinja.org` viser Forgejo, innlogging via Authentik fungerer - [ ] `https://git.sidelinja.org` viser Forgejo, innlogging via Authentik fungerer
- [ ] PostgreSQL: `docker compose exec postgres pg_isready` returnerer OK - [ ] 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 ### 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/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 | | 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 | | 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 ## Konvensjoner

View file

@ -1,42 +1,39 @@
# Drift-sjekk — Prod vs lokal vs docs # Drift-sjekk — Repo vs deploy vs docs
## Hva ## 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 Fanger opp tilfeller der noe er deployet men ikke dokumentert, eller dokumentert
men ikke implementert. men ikke implementert.
## Når ## Når
- Før og etter deploy til produksjon - Før og etter deploy til produksjon
- Når noe oppfører seg annerledes i prod vs lokalt
- Ved mistanke om drift - Ved mistanke om drift
## Sjekkliste ## Sjekkliste
### 1. Git-status ### 1. Git-status
- [ ] Er prod-server på siste commit? (`ssh vegard@157.180.81.26 'cd /srv/synops/app && git log -1'`) - [ ] Er repo oppdatert? (`git status`, `git log -3`)
- [ ] Er det ucommittede endringer lokalt som burde vært pushet? - [ ] Er det ucommittede endringer som burde vært pushet?
- [ ] Er det commits på Forgejo som ikke er deployet til prod? - [ ] Er det commits i repo som ikke er deployet til Docker-tjenestene?
### 2. Database-migrasjoner ### 2. Database-migrasjoner
- [ ] Er alle lokale migrasjoner pushet til repo? - [ ] Er alle migrasjoner i repo kjørt i PG?
- [ ] Er alle migrasjoner i repo kjørt i prod? - [ ] Stemmer migrasjonsnumre?
- [ ] Stemmer migrasjonsnumre mellom miljøer?
### 3. Docker-tjenester ### 3. Docker-tjenester
- [ ] Kjører alle forventede containere i prod? (`docker compose ps`) - [ ] Kjører alle forventede containere? (`docker compose ps`)
- [ ] Er image-versjoner oppdatert? - [ ] Er image-versjoner oppdatert med siste kode?
### 4. Miljøvariabler ### 4. Miljøvariabler
- [ ] Er det nye env-vars lagt til lokalt som mangler i prod `.env`? - [ ] Er det nye env-vars i koden som mangler i `/srv/synops/.env`?
- [ ] Er det env-vars i prod som er utdaterte? - [ ] Er det env-vars i `.env` som er utdaterte?
- [ ] Er secrets rotert der de bør være? - [ ] Er secrets rotert der de bør være?
### 5. SpacetimeDB-modul ### 5. SpacetimeDB-modul
- [ ] Er SpacetimeDB-modulen publisert med siste endringer? - [ ] Er SpacetimeDB-modulen publisert med siste endringer?
- [ ] Stemmer modul-skjema mellom lokal og prod?
### 6. Caddy / reverse proxy ### 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? - [ ] Er det nye subdomener eller routes som mangler?
## Sist kjørt ## 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)? - [ ] Hva er kun planlagt (kun docs)?
- [ ] Oppdater en kort statusoversikt (kan legges i `ops/status.md` ved behov) - [ ] Oppdater en kort statusoversikt (kan legges i `ops/status.md` ved behov)
### 5. Asynkron tilstand — prod vs lokal vs docs ### 5. Synk — repo vs deploy vs docs
- [ ] Stemmer `docker-compose.dev.yml` med det som faktisk kjøres lokalt? - [ ] Er deployede Docker-images bygd fra siste kode i repo?
- [ ] Er prod-server oppdatert med siste push? - [ ] Er alle migrasjoner i repo kjørt i PG?
- [ ] Er det migrasjoner som er kjørt lokalt men ikke i prod (eller omvendt)? - [ ] Er miljøvariabler i `/srv/synops/.env` oppdatert?
- [ ] Er miljøvariabler (.env) synkronisert mellom miljøer?
### 6. CLAUDE.md minne ### 6. CLAUDE.md minne
- [ ] Gå gjennom `~/.claude/projects/-home-vegard-server/memory/MEMORY.md` - [ ] 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? - [ ] Er eksisterende erfaringsdokumenter fortsatt relevante og korrekte?
### 8. Utviklermiljø ### 8. Utviklermiljø
- [ ] Fungerer lokal utvikling mot server (SvelteKit HMR, Rust build)? - [ ] Kompilerer Rust (`cargo build` i maskinrommet/)?
- [ ] Er `docs/setup/lokal.md` oppdatert med eventuelle nye steg? - [ ] Bygger frontend (`npm run build` i frontend/)?
- [ ] Er `~/.claude/CLAUDE.md` (server-instrukser) oppdatert?
## Sist kjørt ## Sist kjørt