Hosting
وقت تشغيل الجهاز الافتراضي لـ Docker
خطوات تشغيل مشتركة لعمليات تثبيت Docker المعتمدة على الأجهزة الافتراضية، مثل GCP وHetzner ومزوّدي VPS المشابهين.
تضمين الملفات التنفيذية المطلوبة في الصورة
يُعد تثبيت الملفات التنفيذية داخل حاوية قيد التشغيل فخًا: فأي شيء يُثبَّت في وقت التشغيل يُفقد عند إعادة التشغيل. ضمّن كل ملف تنفيذي خارجي تحتاج إليه إحدى Skills في الصورة وقت البناء.
لا تغطي الأمثلة أدناه سوى ثلاثة ملفات تنفيذية، مرتبة أبجديًا:
gog(منgogcli) للوصول إلى Gmailgoplacesللوصول إلى Google Placeswacliللوصول إلى WhatsApp
هذه أمثلة وليست قائمة كاملة. ثبّت عدد الملفات التنفيذية الذي تحتاج إليه Skills لديك باستخدام النمط نفسه. وعندما تضيف Skill تحتاج إلى ملف تنفيذي جديد لاحقًا:
- حدّث Dockerfile.
- أعد بناء الصورة.
- أعد تشغيل الحاويات.
مثال على 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/releasesRUN 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/releasesRUN 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/releasesRUN 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 /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إذا فشل البناء برسالة Killed أو برمز الخروج 137 أثناء pnpm install --frozen-lockfile، فهذا يعني أن ذاكرة الجهاز الافتراضي قد نفدت. استخدم فئة جهاز أكبر قبل إعادة المحاولة.
تحقق من الملفات التنفيذية:
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يؤكد إرجاع /healthz لاستجابة 200 أن عملية 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 |
| إعدادات Skills | /home/node/.openclaw/skills/ |
تركيب وحدة تخزين المضيف | حالة على مستوى Skill |
| مساحة عمل الوكيل | /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