OpenClaw su GCP Compute Engine (Docker, guida VPS di produzione)
Obiettivo
Eseguire un Gateway OpenClaw persistente su una VM GCP Compute Engine con Docker, stato durevole, binari incorporati e comportamento sicuro al riavvio.
Se vuoi “OpenClaw 24/7 per ~$5-12/mese”, questo e un setup affidabile su Google Cloud. I prezzi variano in base al tipo di macchina e alla regione; scegli la VM piu piccola adatta al tuo carico di lavoro e scala verso l’alto se riscontri OOM.
Cosa stiamo facendo (in termini semplici)?
- Creare un progetto GCP e abilitare la fatturazione
- Creare una VM Compute Engine
- Installare Docker (runtime isolato per le app)
- Avviare il Gateway OpenClaw in Docker
- Persistere
~/.openclaw+~/.openclaw/workspacesull’host (sopravvive a riavvii/rebuild) - Accedere alla Control UI dal portatile tramite tunnel SSH
Il Gateway e accessibile tramite:
- Port forwarding SSH dal portatile
- Esposizione diretta della porta se gestisci firewall e token autonomamente
Questa guida usa Debian su GCP Compute Engine. Ubuntu funziona ugualmente; adatta i pacchetti di conseguenza. Per il flusso Docker generico, vedi Docker.
Percorso rapido (operatori esperti)
- Crea un progetto GCP + abilita l’API Compute Engine
- Crea una VM Compute Engine (e2-small, Debian 12, 20GB)
- Connettiti alla VM via SSH
- Installa Docker
- Clona il repository OpenClaw
- Crea le directory host persistenti
- Configura
.envedocker-compose.yml - Incorpora i binari necessari, compila e avvia
Cosa ti serve
- Account GCP (il piano gratuito e idoneo per e2-micro)
- gcloud CLI installato (oppure usa la Cloud Console)
- Accesso SSH dal portatile
- Dimestichezza con SSH + copia/incolla
- ~20-30 minuti
- Docker e Docker Compose
- Credenziali di autenticazione del modello
- Credenziali provider opzionali
- QR WhatsApp
- Token bot Telegram
- OAuth Gmail
1) Installa gcloud CLI (o usa la Console)
Opzione A: gcloud CLI (consigliata per l’automazione)
Installa da https://cloud.google.com/sdk/docs/install
Inizializza e autenticati:
gcloud init
gcloud auth login
Opzione B: Cloud Console
Tutti i passaggi possono essere eseguiti tramite l’interfaccia web su https://console.cloud.google.com
2) Crea un progetto GCP
CLI:
gcloud projects create my-openclaw-project --name="OpenClaw Gateway"
gcloud config set project my-openclaw-project
Abilita la fatturazione su https://console.cloud.google.com/billing (necessaria per Compute Engine).
Abilita l’API Compute Engine:
gcloud services enable compute.googleapis.com
Console:
- Vai su IAM e Admin > Crea Progetto
- Assegna un nome e crea
- Abilita la fatturazione per il progetto
- Vai su API e Servizi > Abilita API > cerca “Compute Engine API” > Abilita
3) Crea la VM
Tipi di macchina:
| Tipo | Specifiche | Costo | Note |
|---|---|---|---|
| e2-medium | 2 vCPU, 4GB RAM | ~$25/mese | Il piu affidabile per build Docker locali |
| e2-small | 2 vCPU, 2GB RAM | ~$12/mese | Minimo consigliato per la build Docker |
| e2-micro | 2 vCPU (condivise), 1GB RAM | Piano gratuito idoneo | Spesso fallisce con OOM nella build Docker (exit 137) |
CLI:
gcloud compute instances create openclaw-gateway \
--zone=us-central1-a \
--machine-type=e2-small \
--boot-disk-size=20GB \
--image-family=debian-12 \
--image-project=debian-cloud
Console:
- Vai su Compute Engine > Istanze VM > Crea istanza
- Nome:
openclaw-gateway - Regione:
us-central1, Zona:us-central1-a - Tipo di macchina:
e2-small - Disco di avvio: Debian 12, 20GB
- Crea
4) Connettiti alla VM via SSH
CLI:
gcloud compute ssh openclaw-gateway --zone=us-central1-a
Console:
Clicca il pulsante “SSH” accanto alla tua VM nella dashboard di Compute Engine.
Nota: la propagazione delle chiavi SSH puo richiedere 1-2 minuti dopo la creazione della VM. Se la connessione viene rifiutata, attendi e riprova.
5) Installa Docker (sulla VM)
sudo apt-get update
sudo apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
Disconnettiti e riconnettiti per rendere effettivo il cambio di gruppo:
exit
Poi riconnettiti via SSH:
gcloud compute ssh openclaw-gateway --zone=us-central1-a
Verifica:
docker --version
docker compose version
6) Clona il repository OpenClaw
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Questa guida presuppone che compilerai un’immagine personalizzata per garantire la persistenza dei binari.
7) Crea le directory host persistenti
I container Docker sono effimeri. Tutto lo stato a lunga durata deve risiedere sull’host.
mkdir -p ~/.openclaw
mkdir -p ~/.openclaw/workspace
8) Configura le variabili d’ambiente
Crea .env nella root del repository.
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw
OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace
GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw
Genera segreti robusti:
openssl rand -hex 32
Non committare questo file.
9) Configurazione Docker Compose
Crea o aggiorna docker-compose.yml.
services:
openclaw-gateway:
image: ${OPENCLAW_IMAGE}
build: .
restart: unless-stopped
env_file:
- .env
environment:
- HOME=/home/node
- NODE_ENV=production
- TERM=xterm-256color
- OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
- OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
- XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
- PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
ports:
# Consigliato: mantieni il Gateway solo in loopback sulla VM; accedi tramite tunnel SSH.
# Per esporlo pubblicamente, rimuovi il prefisso `127.0.0.1:` e configura il firewall di conseguenza.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
]
10) Passaggi comuni del runtime Docker su VM
Usa la guida del runtime condiviso per il flusso Docker host comune:
11) Note specifiche per GCP
Su GCP, se la build fallisce con Killed o exit code 137 durante pnpm install --frozen-lockfile, la VM e a corto di memoria. Usa almeno e2-small, o e2-medium per prime build piu affidabili.
Quando fai il bind sulla LAN (OPENCLAW_GATEWAY_BIND=lan), configura un’origine browser attendibile prima di continuare:
docker compose run --rm openclaw-cli config set gateway.controlUi.allowedOrigins '["http://127.0.0.1:18789"]' --strict-json
Se hai cambiato la porta del gateway, sostituisci 18789 con la porta configurata.
12) Accesso dal portatile
Crea un tunnel SSH per inoltrare la porta del Gateway:
gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789
Apri nel browser:
http://127.0.0.1:18789/
Recupera un link dashboard tokenizzato:
docker compose run --rm openclaw-cli dashboard --no-open
Incolla il token da quell’URL.
Se la Control UI mostra unauthorized o disconnected (1008): pairing required, approva il dispositivo browser:
docker compose run --rm openclaw-cli devices list
docker compose run --rm openclaw-cli devices approve <requestId>
Serve di nuovo il riferimento alla persistenza e agli aggiornamenti? Vedi Runtime Docker su VM e Aggiornamenti del runtime Docker su VM.
Risoluzione problemi
Connessione SSH rifiutata
La propagazione delle chiavi SSH puo richiedere 1-2 minuti dopo la creazione della VM. Attendi e riprova.
Problemi con OS Login
Controlla il tuo profilo OS Login:
gcloud compute os-login describe-profile
Assicurati che il tuo account abbia i permessi IAM necessari (Compute OS Login o Compute OS Admin Login).
Memoria insufficiente (OOM)
Se la build Docker fallisce con Killed ed exit code 137, la VM ha subito un OOM-kill. Passa ad e2-small (minimo) o e2-medium (consigliato per build locali affidabili):
# Prima ferma la VM
gcloud compute instances stop openclaw-gateway --zone=us-central1-a
# Cambia il tipo di macchina
gcloud compute instances set-machine-type openclaw-gateway \
--zone=us-central1-a \
--machine-type=e2-small
# Avvia la VM
gcloud compute instances start openclaw-gateway --zone=us-central1-a
Account di servizio (best practice di sicurezza)
Per uso personale, il tuo account utente predefinito va benissimo.
Per automazione o pipeline CI/CD, crea un account di servizio dedicato con permessi minimi:
-
Crea un account di servizio:
gcloud iam service-accounts create openclaw-deploy \ --display-name="OpenClaw Deployment" -
Assegna il ruolo Compute Instance Admin (o un ruolo personalizzato piu restrittivo):
gcloud projects add-iam-policy-binding my-openclaw-project \ --member="serviceAccount:[email protected]" \ --role="roles/compute.instanceAdmin.v1"
Evita di usare il ruolo Owner per l’automazione. Usa il principio del privilegio minimo.
Vedi https://cloud.google.com/iam/docs/understanding-roles per i dettagli sui ruoli IAM.
Passi successivi
- Configura i canali di messaggistica: Canali
- Associa dispositivi locali come nodi: Nodi
- Configura il Gateway: Configurazione del Gateway