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/workspace sull’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)

  1. Crea un progetto GCP + abilita l’API Compute Engine
  2. Crea una VM Compute Engine (e2-small, Debian 12, 20GB)
  3. Connettiti alla VM via SSH
  4. Installa Docker
  5. Clona il repository OpenClaw
  6. Crea le directory host persistenti
  7. Configura .env e docker-compose.yml
  8. 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:

  1. Vai su IAM e Admin > Crea Progetto
  2. Assegna un nome e crea
  3. Abilita la fatturazione per il progetto
  4. Vai su API e Servizi > Abilita API > cerca “Compute Engine API” > Abilita

3) Crea la VM

Tipi di macchina:

TipoSpecificheCostoNote
e2-medium2 vCPU, 4GB RAM~$25/meseIl piu affidabile per build Docker locali
e2-small2 vCPU, 2GB RAM~$12/meseMinimo consigliato per la build Docker
e2-micro2 vCPU (condivise), 1GB RAMPiano gratuito idoneoSpesso 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:

  1. Vai su Compute Engine > Istanze VM > Crea istanza
  2. Nome: openclaw-gateway
  3. Regione: us-central1, Zona: us-central1-a
  4. Tipo di macchina: e2-small
  5. Disco di avvio: Debian 12, 20GB
  6. 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:

  1. Crea un account di servizio:

    gcloud iam service-accounts create openclaw-deploy \
      --display-name="OpenClaw Deployment"
  2. 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