OSVauco/docs/VM-BOOTSTRAP.md

173 lines
4.5 KiB
Markdown

# OSVauco — VM Bootstrap Guide
> **Denne guiden gjelder ny VM eller etter serverbytte.**
> Følg stegene i rekkefølge. Ikke hopp over noe.
---
## Forutsetninger
| Krav | Verdi |
|------|-------|
| GCP-prosjekt | `propane-will-491900-m5` |
| Cloud Run region | `us-central1` |
| Vertex AI location | `us-central1` |
| Billing account | `0171F6-057E6B-A260BA` |
| gcloud CLI | Installert på VM (`gcloud version`) |
| Git | Installert (`git --version`) |
---
## Steg 1 — SSH-nøkkel til GitHub (én gang per VM)
```bash
# Generer nøkkel
ssh-keygen -t ed25519 -C "chris.christiansen@vauco.no" -f ~/.ssh/id_ed25519 -N ""
# Vis public key — kopier hele linjen
cat ~/.ssh/id_ed25519.pub
```
Gå til [github.com/settings/keys](https://github.com/settings/keys) → **New SSH key**
Tittel: `osvauco-dev-vm` → lim inn nøkkelen → **Add SSH key**
```bash
# Test tilkobling
ssh -T git@github.com
# Forventet: Hi vauco-saas! You've successfully authenticated...
```
---
## Steg 2 — Klon repo og sett opp .env
```bash
cd ~
git clone git@github.com:vauco-saas/OSVauco.git
cd OSVauco
# Sett git-identitet
git config --global user.name "Chris Christiansen"
git config --global user.email "chris.christiansen@vauco.no"
# Opprett .env
cp .env.example .env
nano .env
```
**Fyll inn disse to feltene** (resten er ferdigutfylt):
```bash
export BILLING_ACCOUNT_ID="0171F6-057E6B-A260BA"
# ALERT_EMAIL er allerede satt til chris.christiansen@vauco.no
```
---
## Steg 3 — Autentiser med din Google-konto
> ⚠️ **Viktig:** VM-en starter med Compute Engine default service account.
> Du MÅ logge inn som deg selv — ellers feiler alle gcloud-kall.
```bash
gcloud auth login
# Følg lenken, logg inn som chris.christiansen@vauco.no
gcloud auth application-default login
# Samme prosess — nødvendig for Vertex AI / ADK
gcloud config set project propane-will-491900-m5
gcloud config set compute/region us-central1
```
Verifiser:
```bash
gcloud auth list
# Skal vise: * chris.christiansen@vauco.no
```
---
## Steg 4 — Kjør bootstrap-scriptet
```bash
source .env
bash scripts/bootstrap.sh
```
Scriptet gjør i rekkefølge:
1. Auth-sjekk
2. Bygg base Docker-image (hvis ikke finnes)
3. Verifiser at Cloud Run-agenten svarer
---
## Steg 5 — Manuell IAM-fix (kun ved nytt prosjekt / ny CI/CD)
Disse to IAM-bindingene må ligge på plass for at CI/CD skal fungere:
```bash
# Cloud Build SA kan deploye som osvauco-agent-sa
gcloud iam service-accounts add-iam-policy-binding \
osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com \
--member="serviceAccount:357036551735@cloudbuild.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser" \
--project=propane-will-491900-m5
# osvauco-agent-sa kan opptre som seg selv
gcloud iam service-accounts add-iam-policy-binding \
osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com \
--member="serviceAccount:osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser" \
--project=propane-will-491900-m5
```
---
## Hurtigtest — svar fra agenten
```bash
TOKEN=$(gcloud auth print-identity-token)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"user_id":"chris","session_id":"test-1","message":"Hei, hvem er du?"}' \
https://osvauco-agent-357036551735.us-central1.run.app/run | python3 -m json.tool
```
Forventet svar:
```json
{
"user_id": "chris",
"session_id": "test-1",
"response": "Jeg er OPAX, en OSVauco AI-agent."
}
```
---
## Kveld — teardown (OBLIGATORISK)
```bash
bash infrastructure/03-teardown.sh
```
Kjøres hver kveld for å unngå 24/7-fakturering.
---
## Feilsøking
| Feil | Årsak | Fix |
|------|-------|-----|
| `ACCESS_TOKEN_SCOPE_INSUFFICIENT` | Kjører som Compute SA | `gcloud auth login` |
| `Publisher Model ...gemini-2.0-flash(-001) was not found` | 2.0-modellene er utfaset / ikke tilgjengelige i prosjektet | Sett `GOOGLE_CLOUD_LOCATION=us-central1` og bruk `ORCHESTRATOR_MODEL=gemini-2.5-flash`, `SUBAGENT_MODEL=gemini-2.5-flash`, `REASONING_MODEL=gemini-3.5-flash` |
| `osvauco-base:latest not found` | Base-image ikke bygget | `bash scripts/bootstrap.sh` |
| `iam.serviceaccounts.actAs denied` | Mangler IAM-binding | Steg 5 over |
| `git push` krever passord | HTTPS-remote | `git remote set-url origin git@github.com:vauco-saas/OSVauco.git` |
| `fetch first` ved push | Remote har nyere commits | `git pull --rebase && git push` |
---
*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1*