১. ভূমিকা
সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি ক্লাউড রান ইনস্ট্যান্সে ওপেনক্ল (OpenClaw)—একটি ওপেন-সোর্স এআই এজেন্ট ফ্রেমওয়ার্ক—এর একটি সম্পূর্ণ স্থায়ী ও সুরক্ষিত ইনস্ট্যান্স স্থাপন করবেন। আপনি ওপেনক্ল-এর বিল্ট-ইন ওয়েব ইউআই (Web UI) ব্যবহার করে সরাসরি আপনার এআই এজেন্টের সাথে যোগাযোগ করবেন (যেখানে টেলিগ্রাম বা হোয়াটসঅ্যাপের মতো মেসেজিং চ্যানেল সংযোগ করার বিকল্পও থাকবে), গুগল ক্লাউড স্টোরেজ (Google Cloud Storage ) দিয়ে এর হোম ওয়ার্কস্পেসের ব্যাকআপ নেবেন এবং গুগল ক্লাউড সিক্রেট ম্যানেজার (Google Cloud Secret Manager ) ব্যবহার করে নিরাপদে এপিআই ক্রেডেনশিয়াল (API credentials) পরিচালনা করবেন।
শুরু করার আগে, আপনি OpenClaw-এর আর্কিটেকচার, টুলস এবং এজেন্ট ওয়ার্কফ্লো সম্পর্কে পরিচিত হওয়ার জন্য OpenClaw ডকুমেন্টেশনটি দেখে নিতে পারেন।
আপনি যা করবেন
- প্রয়োজনীয় গুগল ক্লাউড এপিআই (API) সক্রিয় করুন এবং প্রয়োজনীয় আইএএম (IAM) অনুমতিসহ একটি ডেডিকেটেড সার্ভিস অ্যাকাউন্ট তৈরি করুন।
- এপিআই কী এবং গেটওয়ে পাসওয়ার্ডগুলি সিক্রেট ম্যানেজারে নিরাপদে সংরক্ষণ করুন।
- জেমিনি মডেল সেটিংস এবং গেটওয়ে UI সক্রিয় করে একটি
openclaw.jsonকনফিগারেশন ফাইল প্রস্তুত করুন। - কন্টেইনারের অবস্থা সংরক্ষণের জন্য একটি ক্লাউড স্টোরেজ বাকেট প্রস্তুত করুন।
- (ঐচ্ছিক)
/usr/local/gcp/bin/sandboxএর মাধ্যমে নিরাপদ ও বিচ্ছিন্ন কোড এক্সিকিউশন সক্ষম করতে ক্লাউড রান স্যান্ডবক্স প্রোভাইডার প্লাগইনটি আপলোড করুন। -
gcloud beta run instances createব্যবহার করে OpenClaw স্থাপন করুন। - এর অন্তর্নির্মিত ওয়েব UI ব্যবহার করে আপনার OpenClaw AI এজেন্টের সাথে সরাসরি যোগাযোগ করুন।
- (ঐচ্ছিক) একটি মেসেজিং চ্যানেল কনফিগার করুন ( টেলিগ্রাম বা হোয়াটসঅ্যাপ )।
- (ঐচ্ছিক) ক্লাউড স্টোরেজে কাস্টম স্কিল যোগ করে আপনার এজেন্টের সক্ষমতা বাড়ান।
আপনি যা শিখবেন
- এর অন্তর্নির্মিত কন্ট্রোল ওয়েব UI ব্যবহার করে কীভাবে ক্লাউড রান ইনস্ট্যান্সে ওপেনক্ল স্থাপন করবেন।
- ক্লাউড রান ইনস্ট্যান্সে ক্লাউড স্টোরেজ বাকেটগুলি কীভাবে মাউন্ট করবেন
- কীভাবে নিরাপদে সিক্রেট ম্যানেজার সিক্রেটগুলোকে এনভায়রনমেন্ট ভেরিয়েবল হিসেবে ক্লাউড রানে যুক্ত করা যায়।
- ক্লাউড রান ইনস্ট্যান্সে কীভাবে দীর্ঘস্থায়ী এজেন্ট ওয়ার্কলোড চালানো যায়।
- ক্লাউড স্টোরেজে কাস্টম এজেন্ট স্কিল কীভাবে কনফিগার এবং আপলোড করবেন।
২. সেটআপ এবং প্রয়োজনীয়তা
জিসিপি প্রজেক্ট সেটআপ
- গুগল ক্লাউড কনসোলে সাইন ইন করুন।
- একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন বা নির্বাচন করুন।
- আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন।
ওপেন ক্লাউড শেল
ক্লাউড কনসোলের উপরের টুলবার থেকে গুগল ক্লাউড শেল সক্রিয় করুন।
বিটা কম্পোনেন্ট ইনস্টল করুন এবং প্রজেক্ট সেট করুন
gcloud beta run instances জন্য beta কম্পোনেন্টটি ইনস্টল করা আছে কিনা তা নিশ্চিত করুন:
gcloud components install beta --quiet
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION="us-west1"
প্রয়োজনীয় গুগল ক্লাউড এপিআই সক্রিয় করুন
ক্লাউড শেলে, ক্লাউড রান, সিক্রেট ম্যানেজার, ক্লাউড স্টোরেজ এবং জেমিনি এপিআইগুলো সক্রিয় করুন:
gcloud services enable \
run.googleapis.com \
secretmanager.googleapis.com \
storage.googleapis.com \
generativelanguage.googleapis.com \
compute.googleapis.com
৩. (ঐচ্ছিক) মেসেজিং ইন্টিগ্রেশন সেট আপ করুন (টেলিগ্রাম বা হোয়াটসঅ্যাপ)
আপনি ওপেনক্লকে টেলিগ্রাম বা হোয়াটসঅ্যাপের সাথে সংযুক্ত করতে পারেন। নিচে থেকে অপশন A অথবা অপশন B বেছে নিন।
বিকল্প A: টেলিগ্রাম বট সেটআপ
- টেলিগ্রাম খুলুন এবং
@BotFatherলিখে সার্চ করুন। -
/newbotকমান্ডটি পাঠান এবং একটি বটের নাম ও ইউজারনেম নির্দিষ্ট করতে নির্দেশাবলী অনুসরণ করুন। - তৈরি হওয়া HTTP API টোকেনটি কপি করুন (যেমন,
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ)। - টেলিগ্রামে
@userinfobotসার্চ করুন,/startলিখে পাঠান এবং আপনার সংখ্যাসূচক ইউজার আইডি (যেমন,8035936176) কপি করুন।
বিকল্প বি: হোয়াটসঅ্যাপ সেটআপ
- আপনার ব্যক্তিগত হোয়াটসঅ্যাপ ফোন নম্বরটি কোনো স্পেস বা চিহ্ন ছাড়া আন্তর্জাতিক ফরম্যাটে সংগ্রহ করুন (যেমন,
+15551234567)। - OpenClaw হোয়াটসঅ্যাপ চ্যানেল অ্যালাওলিস্ট পলিসির মাধ্যমে সংযোগ স্থাপন করে।
৪. ডেডিকেটেড সার্ভিস অ্যাকাউন্ট তৈরি করুন
ন্যূনতম বিশেষাধিকারের নীতি মেনে চলার জন্য, OpenClaw-এর জন্য একটি ডেডিকেটেড IAM সার্ভিস অ্যাকাউন্ট তৈরি করুন:
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"
৫. সিক্রেট ম্যানেজারে ক্রেডেনশিয়াল সংরক্ষণ করুন
আমরা সংবেদনশীল এপিআই ক্রেডেনশিয়ালগুলো গুগল ক্লাউড সিক্রেট ম্যানেজারে সংরক্ষণ করব, যাতে ক্লাউড রান বুট করার সময় সেগুলোকে নিরাপদে কন্টেইনারে ইনজেক্ট করতে পারে।
১. জেমিনি এপিআই কী সংগ্রহ ও সংরক্ষণ করুন
- Google AI Studio- তে যান এবং আপনার Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
- Create API key-তে ক্লিক করুন এবং আপনার Google Cloud প্রজেক্ট (
${PROJECT_ID}) নির্বাচন করুন। - তৈরি হওয়া এপিআই কী-টি কপি করুন।
এপিআই কী-টি সিক্রেট ম্যানেজারে সংরক্ষণ করুন এবং সার্ভিস অ্যাকাউন্টকে অ্যাক্সেস প্রদান করুন:
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"
২. গেটওয়ে পাসওয়ার্ড তৈরি ও সংরক্ষণ করুন
আপনার সর্বজনীনভাবে অ্যাক্সেসযোগ্য OpenClaw ইনস্ট্যান্স সুরক্ষিত রাখতে, একটি নিরাপদ র্যান্ডম পাসওয়ার্ড তৈরি করুন এবং সিক্রেট ম্যানেজারে সংরক্ষণ করুন:
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"
৩. (ঐচ্ছিক) চ্যানেল সিক্রেট তৈরি করুন (টেলিগ্রাম বা হোয়াটসঅ্যাপ)
- টেলিগ্রামের জন্য :
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"
৬. ক্লাউড স্টোরেজ বাকেট এবং openclaw.json কনফিগারেশন প্রস্তুত করুন।
OpenClaw-এর জন্য /home/node/.openclaw/openclaw.json অবস্থানে openclaw.json নামের একটি কনফিগারেশন ফাইল প্রয়োজন।
- একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন এবং অ্যাক্সেস প্রদান করুন :
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নামে একটি ফাইল তৈরি করুন। আপনার নির্বাচিত চ্যানেলের (টেলিগ্রাম বা হোয়াটসঅ্যাপ) সাথে মেলানোর জন্য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": "all", "workspaceAccess": "rw", "backend": "cloud-run-sandbox" } } }, "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": { "load": { "paths": [ "/home/node/.openclaw/plugins" ] }, "entries": { "google": { "enabled": true }, "telegram": { "enabled": true }, "whatsapp": { "enabled": false }, "cloud-run-sandbox-provider": { "enabled": true } } } }openclaw.jsonক্লাউড স্টোরেজ বাকেট রুটে আপলোড করুন :gcloud storage cp openclaw.json gs://${BUCKET_NAME}/openclaw.json- (ঐচ্ছিক) ক্লাউড রান স্যান্ডবক্স প্রোভাইডার প্লাগইন আপলোড করুন : যখন
agents.defaults.sandbox.mode"all"এ সেট করা থাকে, তখন OpenClaw ডিফল্টরূপে স্যান্ডবক্সড টুল এক্সিকিউশনের জন্য একটি স্থানীয় ডকার ডেমন চালু করার চেষ্টা করে। যেহেতু ক্লাউড রানের স্ট্যান্ডার্ড কন্টেইনার ইমেজগুলোতে ডকার চলে না, তাই আপনি ক্লাউড রান স্যান্ডবক্স প্রোভাইডার প্লাগইনটি সক্রিয় করতে পারেন। ক্লাউড রানে--sandbox-launcherফ্ল্যাগ দিয়ে ডেপ্লয় করা হলে, প্ল্যাটফর্মটি স্বয়ংক্রিয়ভাবে নেটিভ gVisor মাইক্রো-ভিএম স্যান্ডবক্স বাইনারি (/usr/local/gcp/bin/sandbox) ইনজেক্ট করে, যা প্রায় ২৫ মিলিসেকেন্ডের মধ্যে ইনস্ট্যান্সের ভিতরে নিরাপদ, বিচ্ছিন্ন কোড এক্সিকিউশন সক্ষম করে।- একটি স্থানীয় প্লাগইন ডিরেক্টরি তৈরি করুন:
mkdir -p plugins/cloud-run-sandbox-provider -
plugins/cloud-run-sandbox-provider/package.jsonতৈরি করুন:{ "name": "cloud-run-sandbox-provider", "version": "1.0.0", "description": "Cloud Run Sandbox Provider for OpenClaw", "type": "module", "main": "index.mjs", "openclaw": { "extensions": [ "./index.mjs" ] } } -
plugins/cloud-run-sandbox-provider/openclaw.plugin.jsonতৈরি করুন:{ "id": "cloud-run-sandbox-provider", "name": "Cloud Run Sandbox Provider", "entry": "./index.mjs", "kind": "tool", "activation": { "onStartup": true }, "configSchema": { "type": "object", "properties": {} } } -
plugins/cloud-run-sandbox-provider/index.mjsতৈরি করুন :import { spawn } from "node:child_process"; import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"; import { registerSandboxBackend } from "openclaw/plugin-sdk/sandbox"; const SANDBOX_BINARY_PATH = process.env.OPENCLAW_SANDBOX_BINARY_PATH || "/usr/local/gcp/bin/sandbox"; function runCommandRaw(command, args, stdin = null) { return new Promise((resolve) => { const child = spawn(command, args, { env: { ...process.env } }); let stdout = Buffer.alloc(0); let stderr = Buffer.alloc(0); child.stdout.on("data", (data) => { stdout = Buffer.concat([stdout, data]); }); child.stderr.on("data", (data) => { stderr = Buffer.concat([stderr, data]); }); child.on("error", (err) => { resolve({ code: -1, stdout, stderr: Buffer.from(err.message) }); }); child.on("close", (code) => { resolve({ code: code ?? 0, stdout, stderr }); }); if (stdin != null) { child.stdin.write(stdin); } child.stdin.end(); }); } async function ensureSandboxRunning(sandboxId, workspaceDir) { const check = await runCommandRaw(SANDBOX_BINARY_PATH, ["exec", sandboxId, "--", "/bin/true"]); if (check.code === 0) { return; } const runArgs = [ "run", "--detach", "--write", "--mount", `type=bind,source=${workspaceDir},destination=${workspaceDir}`, sandboxId ]; const start = await runCommandRaw(SANDBOX_BINARY_PATH, runArgs); if (start.code !== 0) { throw new Error(`Failed to start Cloud Run sandbox ${sandboxId}: ${start.stderr.toString("utf8")}`); } } class CloudRunSandboxHandle { constructor(params) { this.id = "cloud-run-sandbox"; this.runtimeId = params.sessionKey; this.runtimeLabel = `cloud-run-sandbox:${params.sessionKey}`; this.workdir = params.workspaceDir; this.workspaceDir = params.workspaceDir; } async buildExecSpec(params) { const { command, args, workdir, env, usePty } = params; const positional = ["sh", ...(args || [])]; const execArgs = ["exec"]; if (env) { for (const [key, val] of Object.entries(env)) { execArgs.push("-e", `${key}=${val}`); } } const activeWorkdir = workdir || this.workdir; if (activeWorkdir) { execArgs.push("--workdir", activeWorkdir); } execArgs.push( this.runtimeId, "--", "/bin/sh", "-c", command, ...positional ); return { argv: [SANDBOX_BINARY_PATH, ...execArgs], env: { ...process.env }, stdinMode: usePty ? "pipe-open" : "pipe-closed" }; } async runShellCommand(params) { await ensureSandboxRunning(this.runtimeId, this.workspaceDir); const spec = await this.buildExecSpec({ command: params.script, args: params.args, workdir: params.workdir, env: params.env, usePty: params.usePty, }); return new Promise((resolve, reject) => { const child = spawn(spec.argv[0], spec.argv.slice(1), { env: spec.env }); let stdout = Buffer.alloc(0); let stderr = Buffer.alloc(0); child.stdout.on("data", (data) => { stdout = Buffer.concat([stdout, data]); }); child.stderr.on("data", (data) => { stderr = Buffer.concat([stderr, data]); }); child.on("error", reject); child.on("close", (rawCode) => { const code = rawCode ?? 0; if (code !== 0 && !params.allowFailure) { const stderrStr = stderr.toString("utf8"); const summary = stderrStr.trim().split("\n").slice(-3).join(" | ").slice(0, 400); reject(Object.assign( new Error(`Cloud Run sandbox shell exited with code ${code}: ${summary}`), { code, stdout, stderr }, )); return; } resolve({ code, stdout, stderr }); }); if (params.stdin != null) { child.stdin.write(params.stdin); } child.stdin.end(); }); } } export const cloudRunSandboxManager = { async describeRuntime({ entry }) { const check = await runCommandRaw(SANDBOX_BINARY_PATH, ["exec", entry.containerName, "--", "/bin/true"]); return { running: check.code === 0, actualConfigLabel: "cloud-run-sandbox", configLabelMatch: true, }; }, async removeRuntime({ entry }) { await runCommandRaw(SANDBOX_BINARY_PATH, ["delete", entry.containerName, "--force"]); } }; export default definePluginEntry({ id: "cloud-run-sandbox-provider", name: "Cloud Run Sandbox", kind: "tool", register(api) { registerSandboxBackend("cloud-run-sandbox", { factory: async (params) => { const sanitizedSessionKey = params.sessionKey.replace(/[^a-zA-Z0-9-]/g, "-").toLowerCase(); await ensureSandboxRunning(sanitizedSessionKey, params.workspaceDir); return new CloudRunSandboxHandle({ ...params, sessionKey: sanitizedSessionKey }); }, manager: cloudRunSandboxManager }); } }); - প্লাগইন ফোল্ডারটি ক্লাউড স্টোরেজে আপলোড করুন:
gcloud storage cp -r plugins gs://${BUCKET_NAME}/ - ক্লাউড স্টোরেজ বাকেট লেআউট যাচাই করুন : নিশ্চিত করুন যে আপনার বাকেট কাঠামোর রুটে
openclaw.jsonএবংplugins/cloud-run-sandbox-provider/ফোল্ডারে প্লাগইন ফাইলগুলো রয়েছে।gs://${BUCKET_NAME}/ ├── openclaw.json └── plugins/ └── cloud-run-sandbox-provider/ ├── package.json ├── openclaw.plugin.json └── index.mjs
- একটি স্থানীয় প্লাগইন ডিরেক্টরি তৈরি করুন:
৭. ক্লাউড রান ইনস্ট্যান্সগুলিতে ওপেনক্ল স্থাপন করুন
gcloud beta run instances create ব্যবহার করে OpenClaw স্থাপন করুন:
gcloud beta run instances create openclaw-instance \
--image ghcr.io/openclaw/openclaw:latest \
--service-account ${SERVICE_ACCOUNT} \
--port 18789 \
--cpu 4 \
--memory 4Gi \
--public \
--sandbox-launcher \
--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:latest: OpenClaw কন্টেইনার ইমেজ। -
--service-account ...: নির্দিষ্টopenclaw-saসার্ভিস অ্যাকাউন্টটি সংযুক্ত করে। -
--sandbox-launcher: ক্লাউড রান স্যান্ডবক্স লঞ্চার সক্রিয় করে, যা নিরাপদ এবং gVisor-বিচ্ছিন্ন কোড এক্সিকিউশনের জন্য/usr/local/gcp/bin/sandboxবাইনারিটিকে কন্টেইনারের মধ্যে প্রবেশ করায়। -
--add-volume ...: ক্লাউড স্টোরেজ বাকেটটিকে সরাসরি/home/node/.openclawএ মাউন্ট করে।file-mode=0700;dir-mode=0700ব্যবহার করলে OpenClaw-এর জন্য সঠিক পারমিশন নিশ্চিত হয়। -
--set-secrets ...: সিক্রেট ম্যানেজার থেকে সরাসরি এনভায়রনমেন্ট ভেরিয়েবলে ক্রেডেনশিয়াল যুক্ত করে। (ঐচ্ছিক: যদি আপনি ঐচ্ছিক ধাপগুলিতে টেলিগ্রাম কনফিগার করে থাকেন, তাহলে--set-secretsএর সাথে,TELEGRAM_BOT_TOKEN=telegram-bot-token:latestযোগ করুন ।) -
--public: URL-টিতে সর্বজনীন প্রবেশাধিকার দেয়।
৮. ওপেনক্ল ওয়েব UI এর মাধ্যমে সরাসরি যোগাযোগ করুন
OpenClaw-এ একটি অন্তর্নির্মিত কন্ট্রোল ওয়েব UI রয়েছে, যা আপনাকে সরাসরি আপনার ব্রাউজার থেকে আপনার AI এজেন্টকে পরিচালনা করতে এবং তার সাথে চ্যাট করতে দেয়:
- আপনার ক্লাউড রান ইনস্ট্যান্স ইউআরএল পুনরুদ্ধার করুন : ক্লাউড শেলে, চালান:
gcloud beta run instances describe openclaw-instance \ --region ${REGION} \ --format="value(status.urls[0])" - OpenClaw কন্ট্রোল UI অ্যাক্সেস করুন :
- আপনার ওয়েব ব্রাউজারে আউটপুট ইউআরএলটি খুলুন।
- OpenClaw Control UI-তে প্রমাণীকরণের জন্য অনুরোধ করা হলে:
- সিক্রেট ম্যানেজার থেকে তৈরি করা গেটওয়ে পাসওয়ার্ড (
${OPENCLAW_GATEWAY_PASSWORD}) প্রবেশ করান। - যদি লগইন মডালে ইউজারনেম এবং পাসওয়ার্ডের জন্য আলাদা ফিল্ড দেখানো হয়, তাহলে ইউজারনেম ফিল্ডটি খালি রাখুন (অথবা
adminলিখুন) এবং পাসওয়ার্ড ফিল্ডে${OPENCLAW_GATEWAY_PASSWORD}দিন।
- সিক্রেট ম্যানেজার থেকে তৈরি করা গেটওয়ে পাসওয়ার্ড (
- আপনার এজেন্টকে প্রম্পট করা শুরু করুন :
- একবার প্রমাণীকরণ সম্পন্ন হলে, আপনি ওপেনক্ল কন্ট্রোল ড্যাশবোর্ডটি দেখতে পাবেন।
- আপনি চ্যাট ইন্টারফেস থেকে সরাসরি জেমিনিকে নির্দেশ দিতে, সক্রিয় এজেন্ট সেশন দেখতে, স্থায়ী ওয়ার্কস্পেস ফাইল পরিদর্শন করতে এবং টুলস পরিচালনা করতে পারেন!
৯. (ঐচ্ছিক) মেসেজিং চ্যানেল ইন্টিগ্রেশন যাচাই করুন
যদি আপনি উপরের ঐচ্ছিক সেটআপ ধাপগুলিতে টেলিগ্রাম বা হোয়াটসঅ্যাপ কনফিগার করে থাকেন, তাহলে আপনি মেসেজ ডেলিভারি যাচাই করতে পারেন:
- ক্লাউড শেলে ইনস্ট্যান্স লগ চেক করুন:
gcloud run instances logs read openclaw-instance --region ${REGION} --limit 20 - টেলিগ্রাম (বা হোয়াটসঅ্যাপ) খুলুন এবং একটি বার্তা পাঠান (যেমন
/startবাHello OpenClaw!)। - বটটি
openclaw.jsonএ থাকা allowlist-এর সাথে আপনার ইউজার আইডি যাচাই করে নেবে এবং Gemini ব্যবহার করে উত্তর দেবে!
১০. (ঐচ্ছিক) দক্ষতার মাধ্যমে আপনার এজেন্টের সক্ষমতা বৃদ্ধি করুন
OpenClaw স্কিলস সমর্থন করে — যা হলো মডিউলার সক্ষমতা প্যাকেজ, যা আপনার এজেন্টকে নির্দিষ্ট ওয়ার্কফ্লো, বিশেষায়িত CLI টুল এবং ডোমেন-নির্দিষ্ট নির্দেশাবলী শেখায়।
দক্ষতা কীভাবে কাজ করে
প্রতিটি স্কিল হলো একটি ডিরেক্টরি, যার মধ্যে একটি SKILL.md ফাইল থাকে। এটি মেটাডেটা ( name এবং description ) নির্দিষ্ট করে এমন YAML ফ্রন্টম্যাটার দিয়ে শুরু হয়, যার পরে মার্কডাউন নির্দেশাবলী থাকে:
---
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-এর মডেলকে জানিয়ে দেয়।
আপনার ক্লাউড স্টোরেজ বাকেটে একটি কাস্টম স্কিল যোগ করুন
যেহেতু আপনার ক্লাউড স্টোরেজ বাকেটটি সরাসরি /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 - দক্ষতাটি ক্লাউড স্টোরেজে আপলোড করুন :
gcloud storage cp -r my-skill gs://${BUCKET_NAME}/skills/ - চ্যাটে দক্ষতাটি ব্যবহার করুন :
- ওপেনক্ল কন্ট্রোল ওয়েব UI-তে ফিরে যান।
- এখন আপনি
/summarize-logsব্যবহার করে আপনার এজেন্টকে নির্দেশ দিতে পারেন অথবা দক্ষতার বিবরণের সাথে মেলে এমন স্বাভাবিক ভাষার প্রশ্ন জিজ্ঞাসা করতে পারেন!
১১. পরিষ্কার করা
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে:
- ক্লাউড রান ইনস্ট্যান্সটি মুছে ফেলুন :
gcloud beta run instances delete openclaw-instance --region ${REGION} --quiet - সিক্রেট ম্যানেজারের গোপনীয় তথ্য মুছে ফেলুন :
gcloud secrets delete gemini-api-key --quiet gcloud secrets delete telegram-bot-token --quiet gcloud secrets delete openclaw-gateway-password --quiet - ক্লাউড স্টোরেজ বাকেট মুছুন :
gcloud storage rm -r gs://${BUCKET_NAME} - ডেডিকেটেড সার্ভিস অ্যাকাউন্ট মুছুন :
gcloud iam service-accounts delete ${SERVICE_ACCOUNT} --quiet
১২. উপসংহার
অভিনন্দন! আপনি ক্লাউড স্টোরেজ, সিক্রেট ম্যানেজার এবং আপনার পছন্দের মেসেজিং চ্যানেল দ্বারা সমর্থিত ক্লাউড রান ইনস্ট্যান্সে ওপেনক্ল-এর একটি সুরক্ষিত ও সম্পূর্ণ স্থায়ী ইনস্ট্যান্স সফলভাবে স্থাপন করেছেন!