Hosting
زماناجرای ماشین مجازی Docker
مراحل مشترک زمان اجرا برای نصبهای Docker مبتنی بر ماشین مجازی، مانند GCP، Hetzner و ارائهدهندگان مشابه VPS.
قراردادن باینریهای موردنیاز در ایمیج
نصب باینریها درون کانتینر در حال اجرا یک دام است: هر چیزی که در زمان اجرا نصب شود، با راهاندازی مجدد از بین میرود. هر باینری خارجی موردنیاز یک مهارت را هنگام ساخت در ایمیج قرار دهید.
مثالهای زیر فقط سه باینری را بهترتیب الفبایی پوشش میدهند:
gog(ازgogcli) برای دسترسی به Gmailgoplacesبرای Google Placeswacliبرای WhatsApp
اینها مثال هستند، نه فهرستی کامل. با استفاده از همین الگو، هر تعداد باینری که مهارتهایتان نیاز دارند نصب کنید. وقتی بعداً مهارتی اضافه میکنید که به یک باینری جدید نیاز دارد:
- Dockerfile را بهروزرسانی کنید.
- ایمیج را دوباره بسازید.
- کانتینرها را راهاندازی مجدد کنید.
نمونه Dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # باینری نمونه 1: CLI مربوط به Gmail (gogcli — با نام `gog` نصب میشود)# نشانی فعلی دارایی Linux را از https://github.com/steipete/gogcli/releases کپی کنیدRUN curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_amd64.tar.gz \ | tar -xzO gog > /usr/local/bin/gog; \ chmod +x /usr/local/bin/gog # باینری نمونه 2: CLI مربوط به Google Places# نشانی فعلی دارایی Linux را از https://github.com/steipete/goplaces/releases کپی کنیدRUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_linux_amd64.tar.gz \ | tar -xzO goplaces > /usr/local/bin/goplaces; \ chmod +x /usr/local/bin/goplaces # باینری نمونه 3: CLI مربوط به WhatsApp# نشانی فعلی دارایی Linux را از https://github.com/steipete/wacli/releases کپی کنیدRUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli-linux-amd64.tar.gz \ | tar -xzO wacli > /usr/local/bin/wacli; \ chmod +x /usr/local/bin/wacli # با استفاده از همین الگو، باینریهای بیشتری را در ادامه اضافه کنید WORKDIR /appCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./COPY ui/package.json ./ui/package.jsonCOPY scripts ./scripts RUN corepack enableRUN pnpm install --frozen-lockfile COPY . .RUN pnpm buildRUN pnpm ui:installRUN pnpm ui:build ENV NODE_ENV=production CMD ["node","dist/index.js"]ساخت و راهاندازی
docker compose builddocker compose up -d openclaw-gatewayاگر ساخت هنگام pnpm install --frozen-lockfile با Killed یا کد خروج 137 شکست خورد، حافظه ماشین مجازی تمام شده است. پیش از تلاش دوباره، از کلاس ماشین بزرگتری استفاده کنید.
باینریها را بررسی کنید:
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacliخروجی مورد انتظار:
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacliبررسی کنید که Gateway در حال اجرا است:
docker compose logs -f openclaw-gatewaycurl -fsS http://127.0.0.1:18789/healthzبازگرداندن پاسخ 200 توسط /healthz تأیید میکند که فرایند Gateway در حال گوشدادن و سالم است؛ HEALTHCHECK داخلی ایمیج نیز همین نقطه پایانی را پایش میکند.
چه چیزی کجا پایدار میماند
OpenClaw در Docker اجرا میشود، اما Docker منبع حقیقت نیست. تمام وضعیتهای بلندمدت باید پس از راهاندازیهای مجدد، ساختهای مجدد و بازراهاندازیها باقی بمانند.
| مؤلفه | مکان | سازوکار ماندگاری | یادداشتها |
|---|---|---|---|
| پیکربندی Gateway | /home/node/.openclaw/ |
اتصال ولوم میزبان | شامل openclaw.json است |
| اعتبارنامههای کانال/ارائهدهنده | /home/node/.openclaw/credentials/ |
اتصال ولوم میزبان | اطلاعات اعتبارنامه کانال و ارائهدهنده |
| پروفایلهای احراز هویت مدل | /home/node/.openclaw/agents/ |
اتصال ولوم میزبان | agents/<agentId>/agent/auth-profiles.json (OAuth، کلیدهای API) |
| فایل کلید قدیمی OAuth | /home/node/.config/openclaw/ |
اتصال ولوم میزبان | سازگاری فقطخواندنی برای فایلهای جانبی OAuth پیش از مهاجرت؛ openclaw doctor --fix آنها را به auth-profiles.json مهاجرت میدهد |
| پیکربندیهای مهارت | /home/node/.openclaw/skills/ |
اتصال ولوم میزبان | وضعیت در سطح مهارت |
| فضای کاری عامل | /home/node/.openclaw/workspace/ |
اتصال ولوم میزبان | کد و مصنوعات عامل |
| نشست WhatsApp | /home/node/.openclaw/ |
اتصال ولوم میزبان | ورود با کد QR را حفظ میکند |
| جاکلیدی Gmail | /home/node/.openclaw/ |
ولوم میزبان + گذرواژه | به GOG_KEYRING_PASSWORD نیاز دارد |
| بستههای Plugin | /home/node/.openclaw/npm, /home/node/.openclaw/git |
اتصال ولوم میزبان | ریشههای بسته Plugin قابلبارگیری |
| باینریهای خارجی | /usr/local/bin/ |
ایمیج Docker | باید هنگام ساخت در ایمیج قرار گیرند |
| زمان اجرای Node | فایلسیستم کانتینر | ایمیج Docker | با هر بار ساخت ایمیج، دوباره ساخته میشود |
| بستههای سیستمعامل | فایلسیستم کانتینر | ایمیج Docker | در زمان اجرا نصب نکنید |
| کانتینر Docker | موقتی | قابل راهاندازی مجدد | حذف آن بیخطر است |
بهروزرسانیها
برای بهروزرسانی OpenClaw روی ماشین مجازی:
git pulldocker compose builddocker compose up -d