# 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*