From 91ccf4b270ac8d44c78a5932de196b6ba6ffffee Mon Sep 17 00:00:00 2001 From: vegard Date: Tue, 17 Mar 2026 18:29:45 +0000 Subject: [PATCH] Oppdater docs til server-only utviklingsmodell MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- CLAUDE.md | 18 +++++++----------- docs/setup/lokal.md | 8 ++++++-- docs/setup/produksjon.md | 20 +++++++++----------- ops/README.md | 2 +- ops/drift-sjekk.md | 27 ++++++++++++--------------- ops/ryddejobb.md | 14 +++++++------- 6 files changed, 42 insertions(+), 47 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 99b4322..1458ef4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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) diff --git a/docs/setup/lokal.md b/docs/setup/lokal.md index 5a7d972..d16f661 100644 --- a/docs/setup/lokal.md +++ b/docs/setup/lokal.md @@ -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 diff --git a/docs/setup/produksjon.md b/docs/setup/produksjon.md index 2a5b30d..6f3eadd 100644 --- a/docs/setup/produksjon.md +++ b/docs/setup/produksjon.md @@ -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 && git commit -m "beskrivelse" git push forgejo main -# SSH inn til server: -ssh sidelinja@ +# Bygg og deploy tjeneste (krever godkjenning fra Vegard) cd /srv/synops -git pull docker compose build --no-cache docker compose up -d ``` @@ -437,14 +438,11 @@ 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): +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) diff --git a/ops/README.md b/ops/README.md index 84ca53a..c002956 100644 --- a/ops/README.md +++ b/ops/README.md @@ -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 diff --git a/ops/drift-sjekk.md b/ops/drift-sjekk.md index 010f2cb..beb1f06 100644 --- a/ops/drift-sjekk.md +++ b/ops/drift-sjekk.md @@ -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 diff --git a/ops/ryddejobb.md b/ops/ryddejobb.md index 4d98172..f251408 100644 --- a/ops/ryddejobb.md +++ b/ops/ryddejobb.md @@ -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