chore: update docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md via opax-mcp
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
This commit is contained in:
parent
de22ae642a
commit
56a8fab256
|
|
@ -7,7 +7,7 @@ Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal L
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## FREMDRIFT – OPPDATERT 2026-07-25 08:15 CEST
|
## FREMDRIFT – OPPDATERT 2026-07-25 08:42 CEST
|
||||||
|
|
||||||
### ✅ FASE 0–5 — FERDIG
|
### ✅ FASE 0–5 — FERDIG
|
||||||
### ✅ FASE 6 – CPU-optimalisering — FERDIG
|
### ✅ FASE 6 – CPU-optimalisering — FERDIG
|
||||||
|
|
@ -23,17 +23,21 @@ Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal L
|
||||||
### ✅ Google OAuth2 innlogging Gitea — FERDIG 2026-07-25
|
### ✅ Google OAuth2 innlogging Gitea — FERDIG 2026-07-25
|
||||||
### ✅ SIKKERHETSHERDING – Uautoriserte brukere ryddet — FERDIG 2026-07-25
|
### ✅ SIKKERHETSHERDING – Uautoriserte brukere ryddet — FERDIG 2026-07-25
|
||||||
### ✅ VM Access Scopes – cloud-platform satt — FERDIG 2026-07-25
|
### ✅ VM Access Scopes – cloud-platform satt — FERDIG 2026-07-25
|
||||||
|
### ✅ GPG-SIGNERING – Commits verified — FERDIG 2026-07-25 08:42 CEST
|
||||||
|
### ✅ gitea-admin-password – Lagret i Secret Manager — FERDIG 2026-07-25
|
||||||
### 🟡 FASE 7 – 14B-validering utført, arkitektur justeres — PÅGÅR
|
### 🟡 FASE 7 – 14B-validering utført, arkitektur justeres — PÅGÅR
|
||||||
### ⏳ GPG-SIGNERING – Commits verified — PÅGÅR
|
### ⏳ automation-bruker i Gitea — NESTE
|
||||||
### ⏳ FASE 8 – Backup / snapshot-strategi — PLANLAGT
|
### ⏳ FASE 8 – Backup / snapshot-strategi — PLANLAGT
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## SIKKERHETSHERDING (2026-07-25)
|
## SIKKERHETSHERDING (2026-07-25)
|
||||||
- ✅ Offentlig brukerregistrering i Gitea deaktivert (`DISABLE_REGISTRATION = true`, `ALLOW_ONLY_EXTERNAL_REGISTRATION = true`, `SHOW_REGISTRATION_BUTTON = false`)
|
- ✅ Offentlig brukerregistrering i Gitea deaktivert
|
||||||
- ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og deres tokens slettet
|
- ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og tokens slettet
|
||||||
- ✅ Eksponert GITEA_TOKEN rotert — nytt token i Secret Manager, opax-mcp redeployet
|
- ✅ Eksponert GITEA_TOKEN rotert — nytt token i Secret Manager, opax-mcp redeployet
|
||||||
- ✅ VM Access Scopes oppdatert til `cloud-platform` (VM stoppet/startet 2026-07-25)
|
- ✅ VM Access Scopes oppdatert til `cloud-platform`
|
||||||
|
- ✅ GPG-nøkkel (46209B07B3352AE9) lagt til i Gitea, git konfigurert for auto-signering
|
||||||
|
- ✅ gitea-admin-password lagret i Secret Manager (secret: `gitea-admin-password`)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -50,107 +54,49 @@ Alle 6 tester grønne:
|
||||||
| E — Git-sync | ✅ | nothing to commit, working tree clean |
|
| E — Git-sync | ✅ | nothing to commit, working tree clean |
|
||||||
| F — Ollama | ✅ | 5 modeller bekreftet |
|
| F — Ollama | ✅ | 5 modeller bekreftet |
|
||||||
|
|
||||||
**Viktig:** Bruk alltid `localhost:3000` (ikke `34.67.252.59:3000`) når du jobber fra Gitea-VM selv. GCP NAT-er ikke loopback-trafikk.
|
**Viktig:** Bruk alltid `localhost:3000` fra Gitea-VM, aldri ekstern IP mot seg selv.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## git.vauco.no – FULLFØRT 2026-07-25
|
## git.vauco.no – FULLFØRT 2026-07-25
|
||||||
|
- ✅ DNS, nginx, certbot, HTTPS, Google OAuth2 — alt oppe
|
||||||
- ✅ DNS: `git.vauco.no` A-record → `34.67.252.59`
|
|
||||||
- ✅ nginx installert og konfigurert som proxy til `localhost:3000`
|
|
||||||
- ✅ Firewall-regel `allow-gitea-web` (prioritet 500) opprettet
|
|
||||||
- ✅ certbot fullført — HTTPS aktivt
|
|
||||||
- ✅ Google OAuth2 konfigurert og testet
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## SIKKERHET – ÅPNE PUNKTER
|
|
||||||
- ✅ GITEA_TOKEN rotert og fjernet fra eksponering — FERDIG 2026-07-25
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Rollen "automation" og sikkerhets-sentinel for Gitea
|
### Rollen "automation" og sikkerhets-sentinel for Gitea
|
||||||
|
|
||||||
Status per 2026-07-25:
|
Status per 2026-07-25:
|
||||||
- Gitea kjører på https://git.vauco.no med HTTPS og riktig ROOTURL.
|
- Gitea kjører på https://git.vauco.no med HTTPS.
|
||||||
- Offentlig registrering er stengt (DISABLE_REGISTRATION = true, ALLOW_ONLY_EXTERNAL_REGISTRATION = true, SHOW_REGISTRATION_BUTTON = false).
|
- Offentlig registrering stengt.
|
||||||
- To uautoriserte brukere (dev433f2c, dev1ba0ac) er deaktivert, deres tokens er slettet.
|
- Ingen av stegene under er gjennomført ennå – de beskriver målbildet.
|
||||||
- Ingen av stegene under er gjennomført ennå – de beskriver målbildet for neste iterasjon.
|
|
||||||
|
|
||||||
#### 1. Teknisk Gitea-bruker: `automation`
|
#### 1. Teknisk Gitea-bruker: `automation`
|
||||||
|
- Opprett Gitea-bruker `automation` (ikke admin)
|
||||||
|
- Gi tilgang kun til OSVauco-repo
|
||||||
|
- Generer token, lagre i Secret Manager som `gitea-automation-token`
|
||||||
|
- Konfigurer Cloud Run / OPAX MCP til å bruke dette tokenet
|
||||||
|
- Konfigurer git på Gitea-VM til å bruke `automation` for push/pull
|
||||||
|
|
||||||
Mål:
|
#### 2. Sentinel-rolle
|
||||||
- Skille menneskelig admin (`chris`) fra automatiserte operasjoner.
|
- Lokal LLM periodisk sikkerhetssjekk av Gitea
|
||||||
- Sørge for at alle automatiske commits / API-kall identifiseres som `automation`, ikke `chris`.
|
- Rapport i `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md`
|
||||||
|
- Kun lesetilgang, ingen mutasjoner uten godkjenning
|
||||||
|
|
||||||
Plan:
|
#### 3. Roller
|
||||||
- Opprett Gitea-bruker `automation` (ikke admin).
|
- `chris`: admin, godkjenner
|
||||||
- Gi `automation` kun tilgang til de repoene automasjon skal jobbe med (f.eks. OSVauco).
|
- `automation`: tekniske operasjoner via API
|
||||||
- Bruk CLI/API fra Gitea-VM til:
|
- `sentinel`: leser og rapporterer
|
||||||
- Generere ett personal access token for `automation` med begrenset scope.
|
|
||||||
- Skrive tokenet direkte til Google Cloud Secret Manager (secret `gitea-automation-token`).
|
|
||||||
- Konfigurere Cloud Run / OPAX MCP til å lese tokenet via miljøvariabel (`GITEA_TOKEN`).
|
|
||||||
- Konfigurer git på Gitea-VM til å bruke `automation` for push/pull.
|
|
||||||
|
|
||||||
Viktig:
|
|
||||||
- `automation` skal ikke være admin.
|
|
||||||
- `chris` skal ikke dele token med automasjon.
|
|
||||||
- Token-verdier lagres kun i Secret Manager og miljøvariabler, ikke i repo eller logs.
|
|
||||||
|
|
||||||
#### 2. Sentinel-rolle for lokale LLM-modeller (Gitea Security Sentinel)
|
|
||||||
|
|
||||||
Mål:
|
|
||||||
- Ha en lettvekts, lokal LLM-modell som periodisk opptrer som "cyber security sentinel" for Gitea og infrastruktur.
|
|
||||||
- Fange opp mønstre som ligner hendelsen 2026-07-11 (uautoriserte brukere, tokens laget rett etter signup, ukjente repo osv.).
|
|
||||||
|
|
||||||
Rolle: `sentinel` (kun lesing + rapport)
|
|
||||||
|
|
||||||
Input:
|
|
||||||
- Gitea-API: brukerliste, tokens, repo-oversikt
|
|
||||||
- Logger: gitea-app-logg, nginx-logg, journald
|
|
||||||
- Konfig: app.ini, firewall-regler, Secret Manager metadata
|
|
||||||
|
|
||||||
Oppførsel:
|
|
||||||
- Kjør periodisk (hver time eller natt) fra Gitea-VM.
|
|
||||||
- Produser rapport i `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md`.
|
|
||||||
- Foreta ingen direkte mutasjoner uten eksplisitt godkjenning.
|
|
||||||
|
|
||||||
Alarmsignaler:
|
|
||||||
- Nye lokale brukere som ikke matcher forventede mønstre.
|
|
||||||
- Tokens opprettet for ukjente brukere.
|
|
||||||
- Nye repo opprettet av ukjente brukere.
|
|
||||||
- app.ini endret slik at registrering åpnes igjen.
|
|
||||||
|
|
||||||
#### 3. Samspill mellom `automation`, `sentinel` og `chris`
|
|
||||||
|
|
||||||
- `chris`: Eneste Gitea-admin. Godkjenner større endringer.
|
|
||||||
- `automation`: Utfører godkjente tekniske endringer via CLI/API.
|
|
||||||
- `sentinel`: Kjører periodiske analyser, skriver rapporter, kun lesetilgang.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22)
|
## FASE 6.5 — LOKAL LLM-STACK
|
||||||
|
|
||||||
### Bekreftet drift
|
### Modeller per 2026-07-25
|
||||||
- `gitea-cpu-vm` er oppe i `us-central1-b`
|
- `gemma3:4b` — frontmodell
|
||||||
- VM kjører på `e2-highmem-4` (4 vCPU / 32 GB RAM)
|
- `qwen2.5:3b` — tool calling
|
||||||
- Statisk IP: `34.170.51.84`
|
- `qwen2.5:7b` — mellomlag
|
||||||
- Gitea svarer på port `3000`
|
- `qwen2.5-coder:7b` — kode
|
||||||
- Ollama svarer på port `11434`
|
- `qwen2.5-coder:14b` — batch/asynkron
|
||||||
|
|
||||||
### Faktisk modeller lokalt per 2026-07-25
|
|
||||||
- `gemma3:4b`
|
|
||||||
- `qwen2.5:3b`
|
|
||||||
- `qwen2.5:7b`
|
|
||||||
- `qwen2.5-coder:7b`
|
|
||||||
- `qwen2.5-coder:14b`
|
|
||||||
|
|
||||||
### Revidert anbefalt modellarkitektur
|
|
||||||
- **Frontmodell:** `gemma3:4b` — raske svar, enkel resonnering
|
|
||||||
- **Lett tool-modell:** `qwen2.5:3b` — tool calling, responsivt
|
|
||||||
- **Standard mellomlag:** `qwen2.5:7b` — kvalitet + brukbar latency
|
|
||||||
- **Kode-modell:** `qwen2.5-coder:7b` — standard for repo/kodearbeid
|
|
||||||
- **Backup coder:** `qwen2.5-coder:14b` — batch/asynkrone kodeoppgaver
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -163,71 +109,61 @@ Alarmsignaler:
|
||||||
| `EMMA_MODEL` | `gemma3:4b` |
|
| `EMMA_MODEL` | `gemma3:4b` |
|
||||||
| `EMMA_FAST_MODEL` | `gemma3:4b` |
|
| `EMMA_FAST_MODEL` | `gemma3:4b` |
|
||||||
| `EMMA_LIGHT_MODEL` | `qwen2.5:3b` |
|
| `EMMA_LIGHT_MODEL` | `qwen2.5:3b` |
|
||||||
| `OSVAUCO_AGENT_URL` | `https://osvauco-agent-357036551735.us-central1.run.app` |
|
|
||||||
|
|
||||||
Deploy verifisert: `get_connector_status` → `live`, `gitea: online`, `tool_count: 37`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## DNS – FULLFØRT 2026-07-21
|
## DNS – FULLFØRT
|
||||||
|
|
||||||
| Record | Type | Verdi |
|
| Record | Type | Verdi |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `vauco.no.` | A | `34.98.77.173` (LB) |
|
| `vauco.no.` | A | `34.98.77.173` |
|
||||||
| `www.vauco.no.` | A | `34.98.77.173` (LB) |
|
|
||||||
| `opax.vauco.no.` | A | `34.98.77.173` (LB) |
|
|
||||||
| `git.vauco.no.` | A | `34.67.252.59` |
|
| `git.vauco.no.` | A | `34.67.252.59` |
|
||||||
| MX / SPF / DKIM / DMARC | TXT/MX | Google Workspace komplett |
|
| MX/SPF/DKIM/DMARC | TXT/MX | Google Workspace komplett |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ÅPNE PUNKTER
|
## ÅPNE PUNKTER
|
||||||
1. GPG-signering — få commits verified
|
1. `automation`-bruker opprett i Gitea — **NESTE**
|
||||||
2. `automation`-bruker opprett i Gitea
|
2. Sentinel-implementering (lokal LLM periodisk sjekk)
|
||||||
3. Sentinel-implementering (lokal LLM periodisk sjekk)
|
3. Test `qwen2.5-coder:7b` på konkret kode-oppgave
|
||||||
4. Test `qwen2.5-coder:7b` på konkret kode-/repo-oppgave
|
4. Emma derivat-dokument (tilsvarende GEMINI.md)
|
||||||
5. Mål RAM/swap under modell-last
|
5. Fase 8: Snapshot-policy aktiveres
|
||||||
6. Emma derivat-dokument (tilsvarende GEMINI.md)
|
6. `opax.vauco.no` domain mapping (Cloud Run → custom domain)
|
||||||
7. Fase 8: Snapshot-policy aktiveres
|
|
||||||
8. `opax.vauco.no` domain mapping (Cloud Run → custom domain)
|
|
||||||
|
|
||||||
## FASTE SANNHETER
|
## FASTE SANNHETER
|
||||||
- Gitea er source of truth
|
- Gitea er source of truth
|
||||||
- Lokale modeller er hovedretning
|
- Lokale modeller er hovedretning
|
||||||
- Gitea-VM (`34.67.252.59`) er permanent målmaskin — alltid-på, STANDARD (ikke preemptible)
|
- Gitea-VM (`34.67.252.59`) er permanent målmaskin — alltid-på, STANDARD
|
||||||
- Bruk `localhost:3000` fra Gitea-VM, aldri ekstern IP mot seg selv
|
- Bruk `localhost:3000` fra Gitea-VM, aldri ekstern IP mot seg selv
|
||||||
- Dev-snap er ikke lenger nødvendig for kjerneflyten
|
|
||||||
- CPU er primær flaskehals for tyngre lokale modeller
|
- CPU er primær flaskehals for tyngre lokale modeller
|
||||||
|
- `gitea-admin-password` finnes i Secret Manager
|
||||||
|
|
||||||
## DEFINITION OF DONE
|
## DEFINITION OF DONE
|
||||||
- ✅ Lokale modeller lever og kan brukes lokalt
|
- ✅ Lokale modeller lever
|
||||||
- ✅ OPAX-MCP bruker lokal modellbackend korrekt
|
- ✅ OPAX-MCP korrekt konfigurert
|
||||||
- ✅ Gitea read/write tools er grønne
|
- ✅ Gitea read/write tools grønne
|
||||||
- ✅ GCP/Workspace-kjernen er fortsatt grønn
|
- ✅ Smoke-test 37 tools
|
||||||
- ✅ Smoke-test alle 37 tools — FERDIG
|
- ✅ VM oppgradert e2-highmem-4
|
||||||
- ✅ VM oppgradert til e2-highmem-4 (32 GB RAM) — FERDIG
|
- ✅ git.vauco.no HTTPS
|
||||||
- ✅ Dev-snap uavhengighet verifisert — FERDIG
|
- ✅ Google OAuth2
|
||||||
- ✅ OSVauco arbeidskopi på Gitea-VM — FERDIG
|
- ✅ GITEA_TOKEN rotert
|
||||||
- ✅ git.vauco.no live med HTTPS — FERDIG
|
- ✅ Sikkerhetsherding
|
||||||
- ✅ Google OAuth2 innlogging Gitea — FERDIG
|
- ✅ VM Access Scopes
|
||||||
- ✅ GITEA_TOKEN rotert — FERDIG
|
- ✅ GPG-signering verified
|
||||||
- ✅ Sikkerhetsherding — FERDIG
|
- ✅ gitea-admin-password i Secret Manager
|
||||||
- ✅ VM Access Scopes — FERDIG
|
- ⏳ automation-bruker — neste
|
||||||
- ⏳ GPG-signering verified — pågår
|
- ⏳ Fase 7: lokal hjerne verifisert
|
||||||
- ⏳ automation-bruker i Gitea — neste
|
- ⏳ Fase 8: snapshot-backup
|
||||||
- ⏳ Fase 7: lokal hjerne verifisert — pågår
|
|
||||||
- ⏳ Fase 8: daglig snapshot-backup — planlagt
|
|
||||||
|
|
||||||
## OPPDATERINGSLOGG
|
## OPPDATERINGSLOGG
|
||||||
| Dato | Handling |
|
| Dato | Handling |
|
||||||
|---|---|
|
|---|---|
|
||||||
| 2026-07-21 | FASE 4–6: CPU-optimalisering, boot-warming fullført |
|
| 2026-07-21 | FASE 4–6 fullført |
|
||||||
| 2026-07-21 23:44 | DNS: NS-bytte utført hos Proisp |
|
| 2026-07-21 23:44 | DNS NS-bytte |
|
||||||
| 2026-07-21 23:53 | OPAX-MCP: GITEA_URL + OLLAMA_BASE_URL → 34.67.252.59, deployed |
|
| 2026-07-21 23:53 | OPAX-MCP deployed |
|
||||||
| 2026-07-22 00:25 | Smoke-test fullført — alle kategorier grønne |
|
| 2026-07-22 00:25 | Smoke-test grønn |
|
||||||
| 2026-07-22 03:55 | Handoff oppdatert etter 14B-validering |
|
| 2026-07-22 19:25 | OSVauco klonet til VM |
|
||||||
| 2026-07-22 19:25 | OSVauco klonet til Gitea-VM via localhost:3000 |
|
| 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet |
|
||||||
| 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet — alle 6 tester grønne |
|
| 2026-07-23 22:14 | Handoff oppdatert |
|
||||||
| 2026-07-22 19:45 | nginx installert, git.vauco.no konfig opprettet, certbot blokkert av firewall |
|
| 2026-07-25 08:15 | HTTPS, token, OAuth2, sikkerhet, VM scopes ferdig |
|
||||||
| 2026-07-23 22:14 | Handoff oppdatert med full status, neste steg og sikkerhetsnotis om token |
|
| 2026-07-25 08:42 | GPG-signering ferdig, gitea-admin-password i Secret Manager |
|
||||||
| 2026-07-25 08:15 | Full synkronisering: HTTPS ferdig, token rotert, OAuth2 fikset, sikkerhetsherding dokumentert, VM scopes fikset |
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user