1. บทนำ
ภาพรวม
ใน Lab นี้ คุณจะได้ติดตั้งใช้งานอินสแตนซ์ OpenClaw ที่ปลอดภัยและคงอยู่ตลอดเวลา ซึ่งเป็นเฟรมเวิร์ก AI Agent แบบโอเพนซอร์สในอินสแตนซ์ Cloud Run คุณจะโต้ตอบกับ AI Agent ได้โดยตรงโดยใช้ Web UI ในตัวของ OpenClaw (พร้อมตัวเลือกในการเชื่อมต่อช่องทางการรับส่งข้อความ เช่น Telegram หรือ WhatsApp) ซึ่งจะเชื่อมต่อกับพื้นที่ทำงานหลักด้วย Google Cloud Storage และจัดการข้อมูลเข้าสู่ระบบ API อย่างปลอดภัยโดยใช้ Google Cloud Secret Manager
ก่อนเริ่มต้นใช้งาน คุณสามารถดูเอกสารประกอบของ OpenClaw เพื่อทำความคุ้นเคยกับสถาปัตยกรรม เครื่องมือ และเวิร์กโฟลว์ของตัวแทนของ OpenClaw
สิ่งที่คุณต้องทำ
- เปิดใช้ Google Cloud API ที่จำเป็นและสร้างบัญชีบริการเฉพาะที่มีสิทธิ์ IAM ที่จำเป็น
- จัดเก็บคีย์ API และรหัสผ่านของเกตเวย์อย่างปลอดภัยใน Secret Manager
- เตรียม
openclaw.jsonไฟล์การกำหนดค่าที่มีการตั้งค่าโมเดล Gemini และเปิดใช้ UI ของเกตเวย์ - เตรียม Bucket ของ Cloud Storage เพื่อคงสถานะของคอนเทนเนอร์
- ทําให้ OpenClaw ใช้งานได้โดยใช้
gcloud beta run instances deploy - โต้ตอบกับ AI Agent ของ OpenClaw โดยตรงโดยใช้เว็บ UI ในตัว
- (ไม่บังคับ) กำหนดค่าช่องทางการรับส่งข้อความ (Telegram หรือ WhatsApp)
- (ไม่บังคับ) ขยายความสามารถของ Agent โดยการเพิ่มทักษะที่กำหนดเองไปยัง Cloud Storage
สิ่งที่คุณจะได้เรียนรู้
- วิธีทำให้ OpenClaw ใช้งานได้กับอินสแตนซ์ Cloud Run ด้วยเว็บ UI ควบคุมในตัว
- วิธีติดตั้งที่เก็บข้อมูล Cloud Storage กับอินสแตนซ์ Cloud Run
- วิธีแทรกข้อมูลลับของ Secret Manager เป็นตัวแปรสภาพแวดล้อมลงใน Cloud Run อย่างปลอดภัย
- วิธีเรียกใช้ภาระงานของ Agent ที่ทำงานเป็นเวลานานและต่อเนื่องในอินสแตนซ์ Cloud Run
- วิธีกำหนดค่าและอัปโหลดทักษะของตัวแทนที่กำหนดเองไปยัง Cloud Storage
2. การตั้งค่าและข้อกำหนด
การตั้งค่าโปรเจ็กต์ GCP
- ลงชื่อเข้าใช้ คอนโซล Google Cloud
- สร้างหรือเลือกโปรเจ็กต์ Google Cloud
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud แล้ว
เปิด Cloud Shell
เปิดใช้งาน Google Cloud Shell จากแถบเครื่องมือด้านบนของ Cloud Console
ตั้งค่าโปรเจ็กต์และติดตั้ง gcloud รุ่นเบต้า
ก่อนอื่น ให้ตั้งค่าโปรเจ็กต์และภูมิภาคเป็นตัวแปรสภาพแวดล้อม
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
ตอนนี้ให้สร้างโปรเจ็กต์และยืนยัน
gcloud config set project $PROJECT_ID
gcloud config get project
ตรวจสอบว่าได้ติดตั้งคอมโพเนนต์ beta สำหรับ gcloud beta run instances แล้ว
gcloud components install beta --quiet
และตรวจสอบว่า gcloud เป็นเวอร์ชันล่าสุด
gcloud components update
เปิดใช้ Google Cloud APIs ที่จำเป็น
ใน Cloud Shell ให้เปิดใช้ Cloud Run, Secret Manager, Cloud Storage และ Gemini API โดยทำดังนี้
gcloud services enable \
run.googleapis.com \
secretmanager.googleapis.com \
storage.googleapis.com \
generativelanguage.googleapis.com \
compute.googleapis.com
3. (ไม่บังคับ) ตั้งค่าการผสานรวมการรับส่งข้อความ (Telegram หรือ WhatsApp)
คุณเชื่อมต่อ OpenClaw กับ Telegram หรือ WhatsApp ได้ เลือกตัวเลือก ก หรือตัวเลือก ข ด้านล่าง
ตัวเลือก ก: การตั้งค่าบ็อต Telegram
- เปิด Telegram แล้วค้นหา
@BotFather - ส่ง
/newbotคำสั่งและทำตามข้อความแจ้งเพื่อระบุชื่อบ็อตและชื่อผู้ใช้ - คัดลอก HTTP API Token ที่สร้างขึ้น (เช่น
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ) - ค้นหา
@userinfobotใน Telegram ส่ง/startและคัดลอกรหัสผู้ใช้ที่เป็นตัวเลข (เช่น8035936176)
ตัวเลือก ข: การตั้งค่า WhatsApp
- รับหมายเลขโทรศัพท์ WhatsApp ส่วนตัวในรูปแบบระหว่างประเทศโดยไม่มีช่องว่างหรือสัญลักษณ์ (เช่น
+15551234567) - OpenClaw เชื่อมต่อผ่านนโยบายรายการที่อนุญาตของช่อง WhatsApp
4. สร้างบัญชีบริการเฉพาะ
หากต้องการปฏิบัติตามหลักการให้สิทธิ์ขั้นต่ำที่สุด ให้สร้างบัญชีบริการ IAM เฉพาะสำหรับ 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. จัดเก็บข้อมูลเข้าสู่ระบบใน Secret Manager
เราจะจัดเก็บข้อมูลเข้าสู่ระบบ API ที่ละเอียดอ่อนไว้ใน Google Cloud Secret Manager เพื่อให้ Cloud Run สามารถแทรกข้อมูลดังกล่าวลงในคอนเทนเนอร์ได้อย่างปลอดภัยในเวลาที่บูต
1. รับและจัดเก็บคีย์ Gemini API
- ไปที่ Google AI Studio แล้วลงชื่อเข้าใช้ด้วยบัญชี Google
- คลิกสร้างคีย์ API แล้วเลือกโปรเจ็กต์ Google Cloud (
${PROJECT_ID}) - คัดลอกคีย์ API ที่สร้างขึ้น
จัดเก็บคีย์ API ใน Secret Manager และให้สิทธิ์เข้าถึงบัญชีบริการ ดังนี้
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. สร้างและจัดเก็บรหัสผ่านเกตเวย์
หากต้องการปกป้องอินสแตนซ์ OpenClaw ที่เข้าถึงได้แบบสาธารณะ ให้สร้างรหัสผ่านแบบสุ่มที่ปลอดภัยและจัดเก็บไว้ใน 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. (ไม่บังคับ) สร้างข้อมูลลับของช่อง (Telegram หรือ WhatsApp)
- สำหรับ 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" - สำหรับ 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. เตรียม Bucket ของ Cloud Storage และการกำหนดค่า openclaw.json
OpenClaw ต้องใช้ไฟล์การกำหนดค่าชื่อ openclaw.json ที่ /home/node/.openclaw/openclaw.json
- สร้าง Bucket ของ Cloud Storage และให้สิทธิ์เข้าถึง:
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" - สร้าง
openclaw.json: สร้างไฟล์ชื่อopenclaw.jsonใน Cloud Shell อัปเดตchannelsส่วนให้ตรงกับช่องที่คุณเลือก (Telegram หรือ 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 } } } } - อัปโหลด
openclaw.jsonไปยังรูทของ Bucket ใน Cloud Storage: ยืนยันเลย์เอาต์ของ Cloud Storage Bucket: ตรวจสอบว่าโครงสร้าง Bucket มีgcloud storage cp openclaw.json gs://${BUCKET_NAME}/openclaw.jsonopenclaw.jsonที่รูทgs://${BUCKET_NAME}/ └── openclaw.json
7. ติดตั้งใช้งาน OpenClaw ในอินสแตนซ์ Cloud Run
ทําให้ OpenClaw ใช้งานได้โดยใช้ 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}
รายละเอียดพารามิเตอร์สำคัญ
--image ghcr.io/openclaw/openclaw:2026.7.1: อิมเมจคอนเทนเนอร์ OpenClaw (ปักหมุดไว้ที่2026.7.1ซึ่งเป็นรุ่น 1.x ที่เสถียรล่าสุด)--service-account ...: แนบบัญชีบริการopenclaw-saโดยเฉพาะ--add-volume ...: เมานต์ Bucket ใน Cloud Storage ไปยัง/home/node/.openclawโดยตรง การใช้file-mode=0700;dir-mode=0700ช่วยให้มั่นใจได้ว่า OpenClaw มีสิทธิ์ที่เหมาะสม--set-secrets ...: แทรกข้อมูลเข้าสู่ระบบจาก Secret Manager ลงในตัวแปรสภาพแวดล้อมโดยตรง (ไม่บังคับ: หากคุณกำหนดค่า Telegram ในขั้นตอนที่ไม่บังคับ ให้ต่อท้าย,TELEGRAM_BOT_TOKEN=telegram-bot-token:latestไปยัง--set-secrets)--public: อนุญาตให้เข้าถึง URL แบบสาธารณะ
8. โต้ตอบโดยตรงผ่าน UI ทางเว็บของ OpenClaw
OpenClaw มี UI เว็บควบคุมในตัวที่ช่วยให้คุณจัดการและแชทกับ AI Agent ได้โดยตรงจากเบราว์เซอร์
- ดึงข้อมูล URL ของอินสแตนซ์ Cloud Run: เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell
gcloud beta run instances describe openclaw-instance \ --region ${REGION} \ --format="value(status.urls[0])" - เข้าถึง UI ของการควบคุม OpenClaw
- เปิด URL เอาต์พุตในเว็บเบราว์เซอร์
- เมื่อระบบแจ้งให้ตรวจสอบสิทธิ์ใน UI ของ OpenClaw Control ให้ทำดังนี้
- ป้อนรหัสผ่านของเกตเวย์ที่สร้างขึ้น (
${OPENCLAW_GATEWAY_PASSWORD}) จาก Secret Manager - หากโมดอลเข้าสู่ระบบแสดงช่องชื่อผู้ใช้และรหัสผ่านแยกกัน ให้เว้นช่องชื่อผู้ใช้ว่างไว้ (หรือป้อน
admin) แล้วป้อน${OPENCLAW_GATEWAY_PASSWORD}ในช่องรหัสผ่าน
- ป้อนรหัสผ่านของเกตเวย์ที่สร้างขึ้น (
- พรอมต์เอเจนต์ (อินสแตนซ์ในการดำเนินการ):
- เมื่อตรวจสอบสิทธิ์แล้ว คุณจะเห็นแดชบอร์ดควบคุม OpenClaw
- ทดสอบเอเจนต์ OpenClaw โดยส่งพรอมต์ใน UI แชท เช่น "สวัสดี"
- หากต้องการทดสอบวงจรที่มีอายุการใช้งานยาวนานของอินสแตนซ์ Cloud Run คุณสามารถแจ้งให้ตัวแทน OpenClaw ทำงานที่ซับซ้อนและมีอายุการใช้งานยาวนานขึ้นได้ ตัวอย่างเช่น คุณสามารถให้เครื่องมือติดตามฟีดข่าวหรือตลาดหุ้น และสร้างรายงานได้ดังนี้
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. - จากนั้นเอเจนต์ควรทำงานนี้ภายใน 24 ชั่วโมงถัดไป
9. (ไม่บังคับ) ยืนยันการผสานรวมช่องทางการรับส่งข้อความ
หากกำหนดค่า Telegram หรือ WhatsApp ในขั้นตอนการตั้งค่าที่ไม่บังคับด้านบน คุณจะยืนยันการนำส่งข้อความได้โดยทำดังนี้
- ตรวจสอบบันทึกอินสแตนซ์ใน Cloud Shell โดยทำดังนี้
gcloud run instances logs read openclaw-instance --region ${REGION} --limit 20 - เปิด Telegram (หรือ WhatsApp) แล้วส่งข้อความ (เช่น
/startหรือHello OpenClaw!) - บ็อตจะตรวจสอบสิทธิ์รหัสผู้ใช้ของคุณกับรายการที่อนุญาตใน
openclaw.jsonและตอบกลับโดยใช้ Gemini
10. ตรวจสอบและตรวจสอบบันทึกอินสแตนซ์
อินสแตนซ์ Cloud Run จะบันทึก stdout และ stderr จากคอนเทนเนอร์ แล้วสตรีมไปยัง Google Cloud Logging โดยตรง คุณใช้ Cloud Shell หรือ Cloud Console เพื่อตรวจสอบการรับส่งข้อมูลของเกตเวย์และตรวจสอบการเรียกใช้เครื่องมือของตัวแทนได้แบบเรียลไทม์
1. อ่านบันทึกล่าสุดของอินสแตนซ์
วิธีดึงข้อมูลบันทึกล่าสุดจากอินสแตนซ์ใน Cloud Shell
gcloud beta run instances logs read openclaw-instance \
--region ${REGION} \
--limit 50
2. ลายเซ็นบันทึกที่สำคัญที่ควรสังเกต
เมื่อสังเกตการณ์เอเจนต์ที่กําลังทํางาน ให้มองหาเหตุการณ์ในบันทึกรันไทม์ที่สําคัญต่อไปนี้
[gateway] ready: ยืนยันว่าเกตเวย์ HTTP และ WebSocket ของ OpenClaw ได้รับการเริ่มต้นและกำลังรับฟังในพอร์ต 18789[gateway] agent model: ...: แสดงโมเดล Gemini ที่ใช้งานอยู่ (เช่นgoogle/gemini-3.1-pro-previewหรือgoogle/gemini-3.5-flash)[agents/tool-policy]: แสดงเครื่องมือที่อนุญาตหรือถูกจำกัดภายใต้นโยบายของคุณ[agent/embedded]: ติดตามการดำเนินการและการเรียกใช้เครื่องมือโดยเอเจนต์
3. ตรวจสอบบันทึกในคอนโซล Google Cloud
นอกจากนี้ คุณยังดูและกรองบันทึกได้โดยใช้ Logs Explorer ใน Cloud Console ดังนี้
resource.type="cloud_run_instance"
resource.labels.instance_name="openclaw-instance"
11. (ไม่บังคับ) ขยายความสามารถของเอเจนต์ด้วยทักษะ
OpenClaw รองรับทักษะ ซึ่งเป็นแพ็กเกจความสามารถแบบโมดูลที่สอนเวิร์กโฟลว์ที่เฉพาะเจาะจง เครื่องมือ CLI เฉพาะทาง และวิธีการที่เฉพาะเจาะจงของโดเมนให้แก่เอเจนต์
วิธีการทำงานของทักษะ
ทักษะทุกอย่างคือไดเรกทอรีที่มีไฟล์ SKILL.md โดยจะเริ่มต้นด้วย Frontmatter ของ YAML ที่ระบุข้อมูลเมตา (name และ description) ตามด้วยวิธีการมาร์กดาวน์
---
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: ตัวระบุทักษะ (เรียกใช้เป็นคำสั่งเครื่องหมายทับได้โดยตรงด้วย เช่น/summarize-logs)description: บอกโมเดลของ OpenClaw เมื่อจะเรียกใช้ทักษะนี้โดยอัตโนมัติในการสนทนาที่เป็นธรรมชาติ
เพิ่มทักษะที่กำหนดเองลงใน Bucket ของ Cloud Storage
เนื่องจากมีการติดตั้ง Bucket ของ Cloud Storage โดยตรงกับ /home/node/.openclaw ระบบจะโหลดทักษะที่อยู่ภายใต้ gs://${BUCKET_NAME}/skills/ โดยอัตโนมัติเมื่อบูตและคงอยู่เมื่อรีสตาร์ทอินสแตนซ์
- สร้างไดเรกทอรีทักษะในพื้นที่
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 - อัปโหลดทักษะไปยัง Cloud Storage:
gcloud storage cp -r my-skill gs://${BUCKET_NAME}/skills/ - ใช้ทักษะในแชท
- กลับไปที่เว็บ UI ของการควบคุม OpenClaw
- ตอนนี้คุณสามารถแจ้ง Agent โดยใช้
/summarize-logsหรือถามคำถามด้วยภาษาที่เป็นธรรมชาติซึ่งตรงกับคำอธิบายทักษะได้แล้ว
12. ล้าง
โปรดดำเนินการดังนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ใน Codelab นี้
- ลบอินสแตนซ์ Cloud Run
gcloud beta run instances delete openclaw-instance --region ${REGION} --quiet - ลบข้อมูลลับใน Secret Manager:
gcloud secrets delete gemini-api-key --quiet gcloud secrets delete telegram-bot-token --quiet gcloud secrets delete openclaw-gateway-password --quiet - ลบที่เก็บข้อมูล Cloud Storage:
gcloud storage rm -r gs://${BUCKET_NAME} - ลบบัญชีบริการเฉพาะ
gcloud iam service-accounts delete ${SERVICE_ACCOUNT} --quiet
13. บทสรุป
ยินดีด้วย คุณได้ติดตั้งใช้งานอินสแตนซ์ OpenClaw ที่ปลอดภัยและคงอยู่ถาวรอย่างสมบูรณ์บนอินสแตนซ์ Cloud Run ที่ได้รับการสนับสนุนจาก Cloud Storage, Secret Manager และช่องทางการรับส่งข้อความที่คุณต้องการเรียบร้อยแล้ว