1. Introduzione
Panoramica
In questo lab, eseguirai il deployment di un'istanza sicura e completamente persistente di OpenClaw, un framework di agenti AI open source, in Cloud Run Instances. Interagirai direttamente con il tuo agente AI utilizzando la UI web integrata di OpenClaw (con la possibilità di connettere canali di messaggistica come Telegram o WhatsApp), esegui il backup del suo spazio di lavoro principale con Google Cloud Storage e gestisci le credenziali API in modo sicuro utilizzando Google Cloud Secret Manager.
Prima di iniziare, puoi esplorare la documentazione di OpenClaw per familiarizzare con l'architettura, gli strumenti e i flussi di lavoro degli agenti di OpenClaw.
In questo lab proverai a:
- Abilita le API Google Cloud richieste e crea un service account dedicato con le autorizzazioni IAM richieste.
- Archivia in modo sicuro chiavi API e password del gateway in Secret Manager.
- Prepara un file di configurazione
openclaw.jsoncon le impostazioni del modello Gemini e l'interfaccia utente del gateway abilitata. - Prepara un bucket Cloud Storage per rendere persistente lo stato del container.
- Esegui il deployment di OpenClaw utilizzando
gcloud beta run instances deploy. - Interagisci direttamente con il tuo agente AI OpenClaw utilizzando la sua UI web integrata.
- (Facoltativo) Configura un canale di messaggistica (Telegram o WhatsApp).
- (Facoltativo) Estendi le funzionalità dell'agente aggiungendo skill personalizzate a Cloud Storage.
Obiettivi didattici
- Come eseguire il deployment di OpenClaw nelle istanze Cloud Run con la relativa UI web di controllo integrata.
- Come montare i bucket Cloud Storage sulle istanze Cloud Run.
- Come inserire in modo sicuro i secret di Secret Manager come variabili di ambiente in Cloud Run.
- Come eseguire carichi di lavoro degli agenti persistenti e di lunga durata sulle istanze Cloud Run.
- Come configurare e caricare skill dell'agente personalizzate su Cloud Storage.
2. Configurazione e requisiti
Configurazione del progetto Google Cloud
- Accedi alla console Google Cloud.
- Crea o seleziona un progetto Google Cloud.
- Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Apri Cloud Shell
Attiva Google Cloud Shell dalla barra degli strumenti in alto della console Google Cloud.
Imposta il progetto e installa gcloud beta
Innanzitutto, imposta il progetto e la regione come variabili di ambiente.
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
Ora imposta il progetto e conferma.
gcloud config set project $PROJECT_ID
gcloud config get project
Assicurati che il componente beta sia installato per gcloud beta run instances:
gcloud components install beta --quiet
Inoltre, assicurati che gcloud sia aggiornato.
gcloud components update
Abilita le API Google Cloud richieste
In Cloud Shell, abilita le API Cloud Run, Secret Manager, Cloud Storage e Gemini:
gcloud services enable \
run.googleapis.com \
secretmanager.googleapis.com \
storage.googleapis.com \
generativelanguage.googleapis.com \
compute.googleapis.com
3. (Facoltativo) Configurare le integrazioni di messaggistica (Telegram o WhatsApp)
Puoi connettere OpenClaw a Telegram o WhatsApp. Scegli l'opzione A o l'opzione B di seguito.
Opzione A: configurazione del bot Telegram
- Apri Telegram e cerca
@BotFather. - Invia il comando
/newbote segui le istruzioni per specificare un nome e un nome utente per il bot. - Copia il token API HTTP generato (ad es.
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ). - Cerca
@userinfobotsu Telegram, invia/starte copia il tuo ID utente numerico (ad es.8035936176).
Opzione B: configurazione di WhatsApp
- Ottieni il tuo numero di telefono WhatsApp personale in formato internazionale senza spazi o simboli (ad es.
+15551234567). - OpenClaw si connette tramite la policy della lista consentita dei canali WhatsApp.
4. Crea service account dedicato
Per rispettare il principio del privilegio minimo, crea un service account IAM dedicato per OpenClaw:
export SERVICE_ACCOUNT_NAME="openclaw-sa"
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME} \
--display-name="OpenClaw Service Account"
export SERVICE_ACCOUNT="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
5. Archivia le credenziali in Secret Manager
Archivieremo le credenziali API sensibili in Google Cloud Secret Manager in modo che Cloud Run possa inserirle in modo sicuro nel container al momento dell'avvio.
1. Ottenere e archiviare la chiave API Gemini
- Visita Google AI Studio e accedi con il tuo Account Google.
- Fai clic su Crea chiave API e seleziona il tuo progetto Google Cloud (
${PROJECT_ID}). - Copia la chiave API generata.
Archivia la chiave API in Secret Manager e concedi l'accesso al service account:
echo -n "YOUR_GEMINI_API_KEY" | gcloud secrets create gemini-api-key \
--data-file=- \
--replication-policy="automatic"
gcloud secrets add-iam-policy-binding gemini-api-key \
--member="serviceAccount:${SERVICE_ACCOUNT}" \
--role="roles/secretmanager.secretAccessor"
2. Generare e memorizzare la password del gateway
Per proteggere l'istanza OpenClaw accessibile pubblicamente, genera una password casuale sicura e archiviala in Secret Manager:
export OPENCLAW_GATEWAY_PASSWORD=$(openssl rand -hex 16)
echo "Generated Gateway Password: ${OPENCLAW_GATEWAY_PASSWORD}"
echo -n "${OPENCLAW_GATEWAY_PASSWORD}" | gcloud secrets create openclaw-gateway-password \
--data-file=- \
--replication-policy="automatic"
gcloud secrets add-iam-policy-binding openclaw-gateway-password \
--member="serviceAccount:${SERVICE_ACCOUNT}" \
--role="roles/secretmanager.secretAccessor"
3. (Facoltativo) Crea il segreto del canale (Telegram o WhatsApp)
- Per Telegram:
echo -n "YOUR_TELEGRAM_BOT_TOKEN" | gcloud secrets create telegram-bot-token \ --data-file=- \ --replication-policy="automatic" gcloud secrets add-iam-policy-binding telegram-bot-token \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/secretmanager.secretAccessor" - Per WhatsApp:
echo -n "YOUR_WHATSAPP_TOKEN_OR_KEY" | gcloud secrets create whatsapp-token \ --data-file=- \ --replication-policy="automatic" gcloud secrets add-iam-policy-binding whatsapp-token \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/secretmanager.secretAccessor"
6. Prepara il bucket Cloud Storage e la configurazione openclaw.json
OpenClaw richiede un file di configurazione denominato openclaw.json in /home/node/.openclaw/openclaw.json.
- Crea un bucket Cloud Storage e concedi l'accesso:
export BUCKET_NAME="openclaw-state-${PROJECT_ID}" gcloud storage buckets create gs://${BUCKET_NAME} --location=${REGION} gcloud storage buckets add-iam-policy-binding gs://${BUCKET_NAME} \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/storage.objectUser" - Crea
openclaw.json: crea un file denominatoopenclaw.jsonin Cloud Shell. Aggiorna la sezionechannelsin modo che corrisponda al canale scelto (Telegram o WhatsApp):{ "gateway": { "mode": "local", "port": 18789, "trustedProxies": ["0.0.0.0/0"], "bind": "lan", "auth": { "password": "${OPENCLAW_GATEWAY_PASSWORD}" }, "controlUi": { "dangerouslyDisableDeviceAuth": true, "allowedOrigins": ["*"], "enabled": true } }, "agents": { "defaults": { "model": { "primary": "google/gemini-3.1-pro-preview" }, "sandbox": { "mode": "off" } } }, "channels": { "telegram": { "enabled": true, "defaultAccount": "default", "accounts": { "default": { "enabled": true, "dmPolicy": "allowlist", "allowFrom": [ "YOUR_TELEGRAM_USER_ID" ] } } }, "whatsapp": { "enabled": false, "defaultAccount": "default", "accounts": { "default": { "enabled": false, "dmPolicy": "allowlist", "allowFrom": [ "+15551234567" ] } } } }, "plugins": { "entries": { "google": { "enabled": true }, "telegram": { "enabled": true }, "whatsapp": { "enabled": false } } } } - Carica
openclaw.jsonnella radice del bucket Cloud Storage: Verifica il layout del bucket Cloud Storage:verifica che la struttura del bucket contengagcloud storage cp openclaw.json gs://${BUCKET_NAME}/openclaw.jsonopenclaw.jsonnella radice:gs://${BUCKET_NAME}/ └── openclaw.json
7. Esegui il deployment di OpenClaw sulle istanze Cloud Run
Esegui il deployment di OpenClaw utilizzando gcloud beta run instances deploy:
gcloud beta run instances deploy openclaw-instance \
--image ghcr.io/openclaw/openclaw:2026.7.1 \
--service-account ${SERVICE_ACCOUNT} \
--port 18789 \
--cpu 4 \
--memory 4Gi \
--public \
--add-volume mount-path=/home/node/.openclaw,type=cloud-storage,mount-options="uid=1000;gid=1000;file-mode=0700;dir-mode=0700",bucket=${BUCKET_NAME} \
--set-secrets GEMINI_API_KEY=gemini-api-key:latest,OPENCLAW_GATEWAY_PASSWORD=openclaw-gateway-password:latest \
--region ${REGION}
Suddivisione dei parametri chiave:
--image ghcr.io/openclaw/openclaw:2026.7.1: immagine container OpenClaw (bloccata su2026.7.1, l'ultima release stabile 1.x).--service-account ...: collega il service accountopenclaw-sadedicato.--add-volume ...: monta il bucket Cloud Storage direttamente su/home/node/.openclaw. L'utilizzo difile-mode=0700;dir-mode=0700garantisce le autorizzazioni corrette per OpenClaw.--set-secrets ...: inserisce le credenziali direttamente da Secret Manager nelle variabili di ambiente. (Facoltativo: se hai configurato Telegram nei passaggi facoltativi, aggiungi,TELEGRAM_BOT_TOKEN=telegram-bot-token:latesta--set-secrets.)--public: Consente l'accesso pubblico all'URL.
8. Interagire direttamente tramite l'interfaccia utente web di OpenClaw
OpenClaw include una UI web di controllo integrata che ti consente di gestire e chattare con il tuo agente AI direttamente dal browser:
- Recupera l'URL dell'istanza Cloud Run: in Cloud Shell, esegui:
gcloud beta run instances describe openclaw-instance \ --region ${REGION} \ --format="value(status.urls[0])" - Accedere alla UI di controllo OpenClaw:
- Apri l'URL di output nel browser web.
- Quando ti viene chiesto di eseguire l'autenticazione nella UI di controllo di OpenClaw:
- Inserisci la password del gateway generata (
${OPENCLAW_GATEWAY_PASSWORD}) da Secret Manager. - Se la finestra modale di accesso mostra campi separati per Nome utente e Password, lascia vuoto il campo del nome utente (o inserisci
admin) e fornisci${OPENCLAW_GATEWAY_PASSWORD}nel campo della password.
- Inserisci la password del gateway generata (
- Prompt Your Agent (istanze in azione):
- Una volta autenticato, vedrai la dashboard di controllo OpenClaw.
- Prova l'agente OpenClaw inviando un prompt nella UI della chat, ad esempio "Buongiorno".
- Per testare il ciclo di vita a lunga durata dell'istanza Cloud Run, puoi chiedere all'agente OpenClaw di eseguire un'attività più sofisticata e di lunga durata. Ad esempio, puoi monitorare un feed di notizie o il mercato azionario e generare report:
Track the USD-to-EUR exchange rate every 15 minutes for the next 24 hours, while also checking for any recent news updates in the US or the EU that may have an impact on the exchange rate. Generate an end-of-day report for me in this chat that tells me what you expect tomorrow's exchange rate will be. - L'agente dovrebbe quindi eseguire questa attività nelle 24 ore successive.
9. (Facoltativo) Verifica le integrazioni dei canali di messaggistica
Se hai configurato Telegram o WhatsApp nei passaggi di configurazione facoltativi precedenti, puoi verificare la consegna dei messaggi:
- Controlla i log dell'istanza in Cloud Shell:
gcloud run instances logs read openclaw-instance --region ${REGION} --limit 20 - Apri Telegram (o WhatsApp) e invia un messaggio (ad es.
/startoHello OpenClaw!). - Il bot autenticherà il tuo ID utente rispetto alla lista consentita in
openclaw.jsone risponderà utilizzando Gemini.
10. Monitorare e ispezionare i log delle istanze
Cloud Run Instances acquisisce stdout e stderr dal container e li trasmette in streaming direttamente a Google Cloud Logging. Puoi utilizzare Cloud Shell o Cloud Console per monitorare il traffico del gateway ed esaminare le esecuzioni degli strumenti dell'agente in tempo reale.
1. Lettura dei log delle istanze recenti
Per recuperare le voci di log recenti dall'istanza in Cloud Shell:
gcloud beta run instances logs read openclaw-instance \
--region ${REGION} \
--limit 50
2. Firme dei log chiave da osservare
Quando osservi l'agente in esecuzione, cerca i seguenti eventi di log di runtime chiave:
[gateway] ready: conferma che il gateway HTTP e WebSocket OpenClaw è stato inizializzato ed è in ascolto sulla porta 18789.[gateway] agent model: ...: mostra il modello Gemini attivo (ad es.google/gemini-3.1-pro-previewogoogle/gemini-3.5-flash).[agents/tool-policy]: mostra gli strumenti consentiti o limitati ai sensi della tua policy.[agent/embedded]: traccia l'esecuzione e la chiamata allo strumento da parte dell'agente.
3. Esaminare i log nella console Google Cloud
Puoi anche visualizzare e filtrare i log utilizzando Esplora log nella console Cloud:
resource.type="cloud_run_instance"
resource.labels.instance_name="openclaw-instance"
11. (Facoltativo) Estendere l'agente con le competenze
OpenClaw supporta le skill, pacchetti di funzionalità modulari che insegnano all'agente workflow specifici, strumenti CLI specializzati e istruzioni specifiche per il dominio.
Come funzionano le skill
Ogni skill è una directory contenente un file SKILL.md. Inizia con il frontmatter YAML che specifica i metadati (name e description), seguito dalle istruzioni Markdown:
---
name: summarize-logs
description: Summarize Cloud Run error logs into actionable bullet points.
---
# Log Summarizer Skill
When asked to analyze or summarize logs:
1. Parse error stack traces and group similar errors by frequency.
2. Identify root causes such as memory limits, timeouts, or permission errors.
3. Propose concrete remediation steps.
name: l'identificatore della skill (richiamabile anche direttamente come comando slash, ad esempio/summarize-logs).description: indica al modello di OpenClaw quando richiamare automaticamente questa skill in una conversazione naturale.
Aggiungere una skill personalizzata al bucket Cloud Storage
Poiché il bucket Cloud Storage è montato direttamente su /home/node/.openclaw, le competenze inserite in gs://${BUCKET_NAME}/skills/ vengono caricate automaticamente all'avvio e mantenute durante i riavvii dell'istanza:
- Creare una directory delle skill locali:
mkdir -p my-skill cat << 'EOF' > my-skill/SKILL.md --- name: summarize-logs description: Summarize Cloud Run error logs into actionable bullet points. --- # Log Summarizer Skill When asked to analyze or summarize logs, group errors by frequency and suggest actionable fixes. EOF - Carica la skill su Cloud Storage:
gcloud storage cp -r my-skill gs://${BUCKET_NAME}/skills/ - Utilizzare la skill in Chat:
- Torna alla UI web di OpenClaw Control.
- Ora puoi richiedere al tuo agente di utilizzare
/summarize-logso porre domande in linguaggio naturale che corrispondono alla descrizione dell'abilità.
12. Elimina
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo codelab:
- Elimina l'istanza Cloud Run:
gcloud beta run instances delete openclaw-instance --region ${REGION} --quiet - Elimina i secret di Secret Manager:
gcloud secrets delete gemini-api-key --quiet gcloud secrets delete telegram-bot-token --quiet gcloud secrets delete openclaw-gateway-password --quiet - Elimina il bucket Cloud Storage:
gcloud storage rm -r gs://${BUCKET_NAME} - Elimina service account dedicato:
gcloud iam service-accounts delete ${SERVICE_ACCOUNT} --quiet
13. Conclusione
Complimenti! Hai eseguito correttamente il deployment di un'istanza sicura e completamente persistente di OpenClaw su Cloud Run Instances supportata da Cloud Storage, Secret Manager e dal tuo canale di messaggistica preferito.