איך פורסים את OpenClaw במכונות של Cloud Run

1. מבוא

סקירה כללית

בשיעור ה-Lab הזה תפרסו ב-Cloud Run Instances מופע מאובטח של OpenClaw – פלטפורמת קוד פתוח לסוכני AI – עם נתונים שנשמרים באופן מלא. תוכלו לקיים אינטראקציה ישירה עם סוכן ה-AI באמצעות ממשק המשתמש המובנה באינטרנט של OpenClaw (עם אפשרות לחבר ערוצי העברת הודעות כמו Telegram או WhatsApp), לגבות את סביבת העבודה הראשית שלו באמצעות Google Cloud Storage ולנהל את פרטי הכניסה ל-API בצורה מאובטחת באמצעות Google Cloud Secret Manager.

לפני שמתחילים, אפשר לעיין במסמכי התיעוד של OpenClaw כדי להכיר את הארכיטקטורה, הכלים ותהליכי העבודה של הסוכן ב-OpenClaw.

הפעולות שתבצעו:

  • מפעילים את ממשקי Google Cloud API הנדרשים ויוצרים חשבון שירות ייעודי עם הרשאות IAM הנדרשות.
  • אחסון מאובטח של מפתחות API וסיסמאות לשער ב-Secret Manager.
  • מכינים קובץ הגדרה openclaw.json עם הגדרות של מודל Gemini וממשק שער מופעל.
  • מכינים קטגוריה של Cloud Storage כדי לשמור את מצב הקונטיינר.
  • פריסה של OpenClaw באמצעות gcloud beta run instances deploy.
  • אינטראקציה ישירה עם סוכן ה-AI של OpenClaw באמצעות ממשק המשתמש המובנה שלו באינטרנט.
  • (אופציונלי) מגדירים ערוץ להעברת הודעות (טלגרם או וואטסאפ).
  • (אופציונלי) כדי להרחיב את היכולות של הסוכן, אפשר להוסיף מיומנויות מותאמות אישית ל-Cloud Storage.

מה תלמדו

  • איך פורסים את OpenClaw למכונות Cloud Run באמצעות ממשק המשתמש המובנה שלו באינטרנט.
  • איך לטעון קטגוריות של Cloud Storage למופעים של Cloud Run.
  • איך להחדיר בצורה מאובטחת סודות מ-Secret Manager כמשתני סביבה ל-Cloud Run.
  • איך מריצים עומסי עבודה (workloads) של סוכנים למשימות מתמשכות וקבועות במכונות של Cloud Run.
  • איך מגדירים ומעלים סקילים אג'נטיים מותאמים אישית ל-Cloud Storage.

2. הגדרה ודרישות

הגדרת פרויקט GCP

  1. נכנסים למסוף Google Cloud.
  2. יוצרים פרויקט חדש ב-Google Cloud או בוחרים פרויקט קיים.
  3. מוודאים שהחיוב מופעל בפרויקט בענן שלכם ב-Google Cloud.

פתיחת Cloud Shell

מפעילים את Google Cloud Shell מסרגל הכלים העליון של Cloud Console.

הגדרת פרויקט והתקנת gcloud beta

קודם כל, מגדירים את הפרויקט והאזור כמשתני סביבה.

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 API הנדרשים

ב-Cloud Shell, מפעילים את ממשקי ה-API של Cloud Run,‏ Secret Manager,‏ Cloud Storage ו-Gemini:

gcloud services enable \
  run.googleapis.com \
  secretmanager.googleapis.com \
  storage.googleapis.com \
  generativelanguage.googleapis.com \
  compute.googleapis.com

3. (אופציונלי) הגדרת שילובים של העברת הודעות (טלגרם או וואטסאפ)

אפשר לקשר את OpenClaw ל-Telegram או ל-WhatsApp. בוחרים באחת מהאפשרויות הבאות: אפשרות א' או אפשרות ב'.

אפשרות א': הגדרת בוט לטלגרם

  1. פותחים את Telegram ומחפשים את @BotFather.
  2. שולחים את הפקודה /newbot ופועלים לפי ההנחיות כדי לציין שם וכינוי לבוט.
  3. מעתיקים את טוקן ה-HTTP API שנוצר (לדוגמה, 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ).
  4. מחפשים את @userinfobot בטלגרם, שולחים את /start ומעתיקים את מזהה המשתמש המספרי (למשל, 8035936176).

אפשרות ב': הגדרת וואטסאפ

  1. משיגים את מספר הטלפון האישי שלכם בוואטסאפ בפורמט לחיוג בינלאומי ללא רווחים או סמלים (למשל, +15551234567).
  2. החיבור של OpenClaw מתבצע דרך מדיניות רשימת ההיתרים של ערוץ וואטסאפ.

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 ב-Secret Manager של Google Cloud, כדי ש-Cloud Run יוכל להחדיר אותם בצורה מאובטחת למאגר בזמן האתחול.

1. קבלת מפתח Gemini API ואחסון שלו

  1. עוברים אל Google AI Studio ונכנסים לחשבון Google.
  2. לוחצים על Create API key (יצירת מפתח API) ובוחרים את פרויקט Google Cloud (${PROJECT_ID}).
  3. מעתיקים את מפתח ה-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:
    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"
    
  • בוואטסאפ:
    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. הכנת קטגוריה של Cloud Storage והגדרת openclaw.json

ל-OpenClaw נדרש קובץ הגדרה בשם openclaw.json בנתיב /home/node/.openclaw/openclaw.json.

  1. יצירת קטגוריה של 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"
    
  2. ‫Create openclaw.json: יצירת קובץ בשם openclaw.json ב-Cloud Shell. מעדכנים את הקטע channels בהתאם לערוץ שבחרתם (טלגרם או וואטסאפ):
    {
      "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 }
        }
      }
    }
    
  3. העלאה של openclaw.json אל שורש הקטגוריה של Cloud Storage:
    ‫
    gcloud storage cp openclaw.json gs://${BUCKET_NAME}/openclaw.json
    
    בדיקה של פריסת הקטגוריה ב-Cloud Storage:מוודאים שמבנה הקטגוריה מכיל את openclaw.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 ...: מעלה את הקטגוריה של 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. אינטראקציה ישירה דרך ממשק האינטרנט של OpenClaw

‫OpenClaw כולל ממשק משתמש מובנה באינטרנט לשליטה, שמאפשר לכם לנהל את סוכן ה-AI ולשוחח איתו ישירות מהדפדפן:

  1. מאחזרים את כתובת ה-URL של מכונת Cloud Run: ב-Cloud Shell, מריצים את הפקודה:
    gcloud beta run instances describe openclaw-instance \
      --region ${REGION} \
      --format="value(status.urls[0])"
    
  2. גישה לממשק המשתמש של OpenClaw Control:
    • פותחים את כתובת ה-URL של הפלט בדפדפן האינטרנט.
    • כשמופיעה בקשה לאימות בממשק המשתמש של OpenClaw Control:
      • מזינים את סיסמת השער שנוצרה (${OPENCLAW_GATEWAY_PASSWORD}) מ-Secret Manager.
      • אם בתיבת הדו-שיח של הכניסה מוצגים שדות נפרדים של שם משתמש וסיסמה, משאירים את שדה שם המשתמש ריק (או מזינים admin) ומזינים ${OPENCLAW_GATEWAY_PASSWORD} בשדה הסיסמה.
  3. פרומפט לסוכן (מופעים בפעולה):
    • אחרי האימות, יוצג מרכז הבקרה של OpenClaw.
    • כדי לבדוק את סוכן OpenClaw, שולחים פרומפט בממשק המשתמש של הצ'אט, למשל "שלום".
    • כדי לבדוק את מחזור החיים ארוך הטווח של מופע 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 או את וואטסאפ בשלבי ההגדרה האופציונליים שלמעלה, תוכלו לוודא שההודעות נמסרו:

  1. בודקים את יומני המכונה ב-Cloud Shell:
    gcloud run instances logs read openclaw-instance --region ${REGION} --limit 20
    
  2. פותחים את טלגרם (או וואטסאפ) ושולחים הודעה (למשל /start או Hello OpenClaw!).
  3. הבוט יאמת את מזהה המשתמש שלכם מול רשימת ההיתרים ב-openclaw.json ויענה באמצעות Gemini.

10. מעקב אחר יומנים של מופעים ובדיקתם

ב-Cloud Run Instances, הפלט הרגיל (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: מאשר שהשער OpenClaw HTTP ו-WebSocket עבר אתחול ומאזין ביציאה 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. הוא מתחיל ב-YAML frontmatter שמציין מטא-נתונים (name ו-description), ואחריו הוראות 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: מזהה המיומנות (אפשר גם להפעיל אותו ישירות כפקודה דרך שורת הפקודות, לדוגמה /summarize-logs).
  • ‫description: מציין למודל של OpenClaw מתי להפעיל את הסקיל הזה באופן אוטומטי בשיחה טבעית.

הוספת מיומנות מותאמת אישית לקטגוריה של Cloud Storage

מכיוון שהקטגוריה שלכם ב-Cloud Storage מותקנת ישירות ב-/home/node/.openclaw, מיומנויות שמוצבות ב-gs://${BUCKET_NAME}/skills/ נטענות אוטומטית בעת האתחול ונשמרות גם אחרי הפעלה מחדש של המופע:

  1. יצירת ספריית מיומנויות מקומית:
    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
    
  2. העלאת ה-Skill ל-Cloud Storage:
    gcloud storage cp -r my-skill gs://${BUCKET_NAME}/skills/
    
  3. שימוש בסקיל בצ'אט:
    • חוזרים לממשק המשתמש האינטרנטי של OpenClaw Control.
    • עכשיו אפשר להנחות את הנציג באמצעות /summarize-logs או לשאול שאלות בשפה טבעית שתואמות לתיאור המיומנות.

12. מחיקה

כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם ב-codelab הזה:

  1. מחיקת מכונת Cloud Run:
    gcloud beta run instances delete openclaw-instance --region ${REGION} --quiet
    
  2. מחיקת סודות ב-Secret Manager:
    gcloud secrets delete gemini-api-key --quiet
    gcloud secrets delete telegram-bot-token --quiet
    gcloud secrets delete openclaw-gateway-password --quiet
    
  3. מחיקת קטגוריה של Cloud Storage:
    gcloud storage rm -r gs://${BUCKET_NAME}
    
  4. מחיקת חשבון שירות ייעודי:
    gcloud iam service-accounts delete ${SERVICE_ACCOUNT} --quiet
    

13. סיכום

מעולה! הצלחתם לפרוס מופע מאובטח ומתמשך לחלוטין של OpenClaw במופעים של Cloud Run, שמגובים על ידי Cloud Storage,‏ Secret Manager וערוץ ההודעות המועדף שלכם.