Hosting
محیط اجرای VM Docker
مراحل runtime مشترک برای نصبهای Docker مبتنی بر VM مانند GCP، Hetzner و ارائهدهندگان VPS مشابه.
باینریهای موردنیاز را داخل image آماده کنید
نصب باینریها داخل container در حال اجرا یک دام است. هر چیزی که در runtime نصب شود، پس از restart از بین میرود.
همه باینریهای خارجی موردنیاز Skills باید هنگام build کردن image نصب شوند.
نمونههای زیر فقط سه باینری رایج را نشان میدهند:
gog(ازgogcli) برای دسترسی به Gmailgoplacesبرای Google Placeswacliبرای WhatsApp
اینها نمونه هستند، نه یک فهرست کامل. میتوانید با همین الگو هر تعداد باینری که نیاز دارید نصب کنید.
اگر بعدا Skills جدیدی اضافه کنید که به باینریهای بیشتری وابسته باشند، باید:
- Dockerfile را بهروزرسانی کنید
- image را دوباره build کنید
- containerها را restart کنید
نمونه Dockerfile
FROM node:24-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# Example binary 1: Gmail CLI (gogcli — installs as `gog`)
# Copy the current Linux asset URL from 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
# Example binary 2: Google Places CLI
# Copy the current Linux asset URL from 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
# Example binary 3: WhatsApp CLI
# Copy the current Linux asset URL from 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
# Add more binaries below using the same pattern
WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts
RUN corepack enable
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build
ENV NODE_ENV=production
CMD ["node","dist/index.js"]
Build و اجرا
docker compose build
docker compose up -d openclaw-gateway
اگر build هنگام pnpm install --frozen-lockfile با Killed یا exit code 137 شکست خورد، VM با کمبود حافظه مواجه است.
پیش از تلاش دوباره، از یک کلاس ماشین بزرگتر استفاده کنید.
باینریها را بررسی کنید:
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli
خروجی مورد انتظار:
/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli
Gateway را بررسی کنید:
docker compose logs -f openclaw-gateway
خروجی مورد انتظار:
[gateway] listening on ws://0.0.0.0:18789
چه چیزی کجا پایدار میماند
OpenClaw در Docker اجرا میشود، اما Docker منبع حقیقت نیست. همه stateهای بلندمدت باید پس از restart، rebuild و reboot باقی بمانند.
| مؤلفه | مکان | سازوکار پایداری | یادداشتها |
|---|---|---|---|
| پیکربندی Gateway | /home/node/.openclaw/ |
mount کردن volume میزبان | شامل openclaw.json، .env |
| پروفایلهای احراز هویت مدل | /home/node/.openclaw/agents/ |
mount کردن volume میزبان | agents/<agentId>/agent/auth-profiles.json (OAuth، کلیدهای API) |
| پیکربندیهای Skills | /home/node/.openclaw/skills/ |
mount کردن volume میزبان | state در سطح Skills |
| workspace عامل | /home/node/.openclaw/workspace/ |
mount کردن volume میزبان | کد و artifactهای عامل |
| session WhatsApp | /home/node/.openclaw/ |
mount کردن volume میزبان | ورود QR را حفظ میکند |
| keyring مربوط به Gmail | /home/node/.openclaw/ |
volume میزبان + password | به GOG_KEYRING_PASSWORD نیاز دارد |
| بستههای Plugin | /home/node/.openclaw/npm, /home/node/.openclaw/git |
mount کردن volume میزبان | ریشههای بسته Plugin قابل دانلود |
| باینریهای خارجی | /usr/local/bin/ |
Docker image | باید هنگام build داخل image آماده شوند |
| runtime مربوط به Node | filesystem مربوط به container | Docker image | با هر build کردن image دوباره ساخته میشود |
| بستههای سیستمعامل | filesystem مربوط به container | Docker image | در runtime نصب نکنید |
| container مربوط به Docker | موقتی | قابل restart | نابود کردن آن امن است |
بهروزرسانیها
برای بهروزرسانی OpenClaw روی VM:
git pull
docker compose build
docker compose up -d