Docker (اختياري)
Docker اختياري. استخدمه فقط إذا كنت تريد Gateway داخل حاوية أو تريد التحقق من تدفق Docker.هل Docker مناسب لي؟
- نعم: إذا كنت تريد بيئة Gateway معزولة ومؤقتة أو تريد تشغيل OpenClaw على مضيف من دون عمليات تثبيت محلية.
- لا: إذا كنت تعمل على جهازك الخاص وتريد فقط أسرع حلقة تطوير. استخدم تدفق التثبيت العادي بدلًا من ذلك.
- ملاحظة حول العزل: تستخدم الواجهة الخلفية الافتراضية للعزل Docker عندما يكون العزل مفعّلًا، لكن العزل يكون معطّلًا افتراضيًا ولا يتطلب تشغيل Gateway بالكامل داخل Docker. كما تتوفر أيضًا الواجهات الخلفية للعزل SSH وOpenShell. راجع العزل.
المتطلبات المسبقة
- Docker Desktop (أو Docker Engine) + Docker Compose v2
- ذاكرة RAM لا تقل عن 2 غيغابايت لبناء الصورة (
pnpm installقد يتم إنهاؤه بسبب OOM على المضيفين ذوي 1 غيغابايت مع رمز الخروج 137) - مساحة قرص كافية للصور والسجلات
- إذا كنت تشغّله على VPS/مضيف عام، فراجع
تقوية الأمان عند التعرض للشبكة،
وخاصة سياسة جدار الحماية Docker
DOCKER-USER.
Gateway داخل حاوية
بناء الصورة
من جذر المستودع، شغّل سكربت الإعداد:يؤدي هذا إلى بناء صورة Gateway محليًا. لاستخدام صورة مبنية مسبقًا بدلًا من ذلك:تُنشر الصور المبنية مسبقًا في
GitHub Container Registry.
الوسوم الشائعة:
main وlatest و<version> (مثل 2026.2.26).إكمال التهيئة الأولية
يشغّل سكربت الإعداد التهيئة الأولية تلقائيًا. وسيقوم بما يلي:
- طلب مفاتيح API الخاصة بالمزوّد
- إنشاء رمز Gateway وكتابته إلى
.env - تشغيل Gateway عبر Docker Compose
openclaw-gateway مباشرةً. ويُستخدم openclaw-cli للأوامر التي تشغّلها بعد
وجود حاوية Gateway بالفعل.فتح Control UI
افتح
http://127.0.0.1:18789/ في متصفحك والصق السر المشترك
المضبوط داخل Settings. يكتب سكربت الإعداد رمزًا إلى .env
افتراضيًا؛ وإذا بدّلت إعدادات الحاوية إلى مصادقة بكلمة مرور، فاستخدم تلك
الكلمة بدلًا من ذلك.هل تحتاج الرابط مرة أخرى؟التدفق اليدوي
إذا كنت تفضّل تشغيل كل خطوة بنفسك بدلًا من استخدام سكربت الإعداد:شغّل
docker compose من جذر المستودع. إذا كنت قد فعّلت OPENCLAW_EXTRA_MOUNTS
أو OPENCLAW_HOME_VOLUME، فإن سكربت الإعداد يكتب docker-compose.extra.yml؛
قم بتضمينه باستخدام -f docker-compose.yml -f docker-compose.extra.yml.نظرًا لأن
openclaw-cli يشارك مساحة أسماء الشبكة الخاصة بـ openclaw-gateway، فهو
أداة ما بعد البدء. قبل docker compose up -d openclaw-gateway، شغّل التهيئة الأولية
وكتابات الإعدادات وقت الإعداد عبر openclaw-gateway مع
--no-deps --entrypoint node.متغيرات البيئة
يقبل سكربت الإعداد متغيرات البيئة الاختيارية التالية:| المتغير | الغرض |
|---|---|
OPENCLAW_IMAGE | استخدام صورة بعيدة بدلًا من البناء محليًا |
OPENCLAW_DOCKER_APT_PACKAGES | تثبيت حزم apt إضافية أثناء البناء (أسماء مفصولة بمسافات) |
OPENCLAW_EXTENSIONS | تثبيت تبعيات extension مسبقًا وقت البناء (أسماء مفصولة بمسافات) |
OPENCLAW_EXTRA_MOUNTS | bind mounts إضافية من المضيف (قيم source:target[:opts] مفصولة بفواصل) |
OPENCLAW_HOME_VOLUME | الإبقاء على /home/node داخل Docker volume مسماة |
OPENCLAW_SANDBOX | الاشتراك في bootstrap الخاص بالعزل (1 أو true أو yes أو on) |
OPENCLAW_DOCKER_SOCKET | تجاوز مسار Docker socket |
فحوصات السلامة
نقاط نهاية الفحص الخاصة بالحاوية (لا تتطلب مصادقة):HEALTHCHECK مدمجًا يجري ping إلى /healthz.
إذا استمرت الفحوصات في الفشل، يضع Docker علامة unhealthy على الحاوية،
ويمكن لأنظمة التنسيق إعادة تشغيلها أو استبدالها.
لقطة سلامة عميقة موثقة:
LAN مقابل loopback المحلي
يضبطscripts/docker/setup.sh افتراضيًا القيمة OPENCLAW_GATEWAY_BIND=lan بحيث يعمل وصول المضيف إلى
http://127.0.0.1:18789 مع نشر منفذ Docker.
lan(الافتراضي): يمكن لمتصفح المضيف وCLI المضيف الوصول إلى منفذ Gateway المنشور.loopback: لا يمكن سوى للعمليات داخل مساحة أسماء شبكة الحاوية الوصول إلى Gateway مباشرةً.
استخدم قيم وضع الربط في
gateway.bind (lan / loopback / custom /
tailnet / auto)، وليس الأسماء المستعارة للمضيف مثل 0.0.0.0 أو 127.0.0.1.التخزين والاستمرارية
يقوم Docker Compose بعمل bind-mount لـOPENCLAW_CONFIG_DIR إلى /home/node/.openclaw و
OPENCLAW_WORKSPACE_DIR إلى /home/node/.openclaw/workspace، بحيث تبقى هذه المسارات
بعد استبدال الحاوية.
ودليل الإعدادات المركّب هذا هو المكان الذي يحتفظ فيه OpenClaw بما يلي:
openclaw.jsonلإعدادات السلوكagents/<agentId>/agent/auth-profiles.jsonلمصادقة OAuth/API-key المخزنة الخاصة بالمزوّد.envللأسرار وقت التشغيل المعتمدة على env مثلOPENCLAW_GATEWAY_TOKEN
media/، وملفات JSONL الخاصة بالجلسات، وcron/runs/*.jsonl،
وسجلات الملفات الدوّارة تحت /tmp/openclaw/.
مساعدات الصدفة (اختياري)
لتسهيل إدارة Docker يوميًا، ثبّتClawDock:
scripts/shell-helpers/clawdock-helpers.sh، فأعد تشغيل أمر التثبيت أعلاه حتى يتتبع ملف المساعد المحلي لديك الموقع الجديد.
ثم استخدم clawdock-start وclawdock-stop وclawdock-dashboard وما إلى ذلك. شغّل
clawdock-help لجميع الأوامر.
راجع ClawDock للاطلاع على الدليل الكامل للمساعد.
تمكين عزل الوكيل لـ Docker Gateway
تمكين عزل الوكيل لـ Docker Gateway
docker.sock إلا بعد نجاح متطلبات العزل. إذا
تعذر إكمال إعداد العزل، يعيد السكربت ضبط agents.defaults.sandbox.mode
إلى off.الأتمتة / CI (بدون تفاعل)
الأتمتة / CI (بدون تفاعل)
عطّل تخصيص pseudo-TTY في Compose باستخدام
-T:ملاحظة أمان للشبكات المشتركة
ملاحظة أمان للشبكات المشتركة
يستخدم
openclaw-cli القيمة network_mode: "service:openclaw-gateway" بحيث يمكن
لأوامر CLI الوصول إلى Gateway عبر 127.0.0.1. تعامل مع هذا باعتباره
حد ثقة مشتركًا. تقوم إعدادات compose بإسقاط NET_RAW/NET_ADMIN وتمكين
no-new-privileges على openclaw-cli.الأذونات وEACCES
الأذونات وEACCES
تعمل الصورة باسم المستخدم
node (uid 1000). إذا رأيت أخطاء أذونات على
/home/node/.openclaw، فتأكد من أن bind mounts على المضيف مملوكة لـ uid 1000:إعادات بناء أسرع
إعادات بناء أسرع
رتّب Dockerfile بحيث يتم تخزين طبقات التبعيات مؤقتًا. هذا يتجنب إعادة تشغيل
pnpm install ما لم تتغير lockfiles:خيارات حاوية للمستخدمين المتقدمين
خيارات حاوية للمستخدمين المتقدمين
الصورة الافتراضية تركز على الأمان وتعمل كمستخدم
node غير الجذري. للحصول على
حاوية أكثر اكتمالًا من حيث الميزات:- الإبقاء على
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - دمج تبعيات النظام:
export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq" - تثبيت متصفحات Playwright:
- الإبقاء على تنزيلات المتصفح: اضبط
PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwrightواستخدمOPENCLAW_HOME_VOLUMEأوOPENCLAW_EXTRA_MOUNTS.
OpenAI Codex OAuth (Docker بدون واجهة)
OpenAI Codex OAuth (Docker بدون واجهة)
إذا اخترت OpenAI Codex OAuth في المعالج، فسيفتح عنوان URL في المتصفح. في
إعدادات Docker أو الإعدادات بدون واجهة، انسخ عنوان URL الكامل لإعادة التوجيه الذي تصل إليه والصقه
مرة أخرى داخل المعالج لإكمال المصادقة.
بيانات تعريف الصورة الأساسية
بيانات تعريف الصورة الأساسية
تستخدم صورة Docker الرئيسية
node:24-bookworm وتنشر تعليقات توضيحية
لصور OCI الأساسية تتضمن org.opencontainers.image.base.name،
وorg.opencontainers.image.source، وغيرها. راجع
تعليقات صور OCI التوضيحية.هل تعمل على VPS؟
راجع Hetzner (Docker VPS) و وقت تشغيل Docker VM للاطلاع على خطوات النشر المشتركة على VM بما في ذلك دمج الـ binary داخل الصورة، والاستمرارية، والتحديثات.عزل الوكيل
عند تمكينagents.defaults.sandbox مع الواجهة الخلفية Docker، يقوم Gateway
بتشغيل تنفيذ أدوات الوكيل (shell، وقراءة/كتابة الملفات، وما إلى ذلك) داخل حاويات Docker
معزولة بينما يبقى Gateway نفسه على المضيف. وهذا يمنحك جدارًا صلبًا
حول جلسات الوكيل غير الموثوقة أو متعددة المستأجرين من دون وضع Gateway بالكامل داخل
حاوية.
يمكن أن يكون نطاق العزل لكل وكيل (الافتراضي)، أو لكل جلسة، أو مشتركًا. ويحصل كل
نطاق على مساحة عمل خاصة به مركبة عند /workspace. كما يمكنك أيضًا تكوين
سياسات السماح/المنع للأدوات، وعزل الشبكة، وحدود الموارد، وحاويات
المتصفح.
للاطلاع على الإعداد الكامل، والصور، وملاحظات الأمان، وملفات الوكلاء المتعددة، راجع:
- العزل — المرجع الكامل للعزل
- OpenShell — وصول shell تفاعلي إلى حاويات العزل
- العزل والأدوات متعددة الوكلاء — تجاوزات لكل وكيل
تمكين سريع
استكشاف الأخطاء وإصلاحها
الصورة مفقودة أو أن حاوية العزل لا تبدأ
الصورة مفقودة أو أن حاوية العزل لا تبدأ
ابنِ صورة العزل باستخدام
scripts/sandbox-setup.sh
أو اضبط agents.defaults.sandbox.docker.image على صورتك المخصصة.
يتم إنشاء الحاويات تلقائيًا لكل جلسة عند الطلب.أخطاء الأذونات في العزل
أخطاء الأذونات في العزل
اضبط
docker.user على UID:GID يطابق ملكية مساحة العمل المركبة لديك،
أو غيّر ملكية مجلد مساحة العمل.الأدوات المخصصة غير موجودة في العزل
الأدوات المخصصة غير موجودة في العزل
يشغّل OpenClaw الأوامر باستخدام
sh -lc (login shell)، والذي يحمّل
/etc/profile وقد يعيد ضبط PATH. اضبط docker.env.PATH لإضافة
مسارات الأدوات المخصصة في البداية، أو أضف سكربتًا تحت /etc/profile.d/ في Dockerfile لديك.تم إنهاء البناء بسبب OOM (الخروج 137)
تم إنهاء البناء بسبب OOM (الخروج 137)
تحتاج VM إلى 2 غيغابايت RAM على الأقل. استخدم فئة جهاز أكبر وأعد المحاولة.
Unauthorized أو pairing required في Control UI
Unauthorized أو pairing required في Control UI
يعرض هدف Gateway القيمة ws://172.x.x.x أو تظهر أخطاء pairing من Docker CLI
يعرض هدف Gateway القيمة ws://172.x.x.x أو تظهر أخطاء pairing من Docker CLI
أعد ضبط وضع Gateway وbind:
ذو صلة
- نظرة عامة على التثبيت — جميع طرق التثبيت
- Podman — بديل Podman لـ Docker
- ClawDock — إعداد Docker Compose من المجتمع
- التحديث — الحفاظ على OpenClaw محدثًا
- الإعدادات — إعدادات Gateway بعد التثبيت