Docker اختياري اختياري. استخدمه فقط إذا كنت تريد Gateway داخل حاوية أو التحقق من مسار Docker.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
هل Docker مناسب لي؟
- نعم: تريد بيئة Gateway معزولة ويمكن التخلص منها، أو تشغيل OpenClaw على مضيف من دون تثبيتات محلية.
- لا: تعمل على جهازك الخاص وتريد فقط أسرع حلقة تطوير. استخدم مسار التثبيت العادي بدلًا من ذلك.
- ملاحظة حول العزل: تستخدم واجهة العزل الخلفية الافتراضية Docker عند تمكين العزل، لكن العزل معطّل افتراضيًا ولا يتطلب أن يعمل Gateway بالكامل في Docker. تتوفر أيضًا واجهات العزل الخلفية SSH وOpenShell. راجع العزل.
المتطلبات المسبقة
- Docker Desktop (أو Docker Engine) + Docker Compose v2
- ذاكرة RAM لا تقل عن 2 GB لبناء الصورة (
pnpm installقد يُنهى بسبب نفاد الذاكرة على مضيفات 1 GB مع رمز الخروج 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 موجودة بالفعل.فتح واجهة التحكم
افتح
http://127.0.0.1:18789/ في متصفحك والصق السر المشترك المضبوط
في الإعدادات. يكتب سكربت الإعداد رمزًا إلى .env افتراضيًا؛ إذا بدّلت
إعداد الحاوية إلى مصادقة كلمة المرور، فاستخدم تلك الكلمة بدلًا من ذلك.هل تحتاج إلى عنوان URL مرة أخرى؟المسار اليدوي
إذا كنت تفضّل تشغيل كل خطوة بنفسك بدلًا من استخدام سكربت الإعداد:شغّل
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 | تضمين مساعدين محددين من Plugins المضمّنة وقت البناء |
OPENCLAW_EXTRA_MOUNTS | ربطات تركيب إضافية للمضيف (مفصولة بفواصل source:target[:opts]) |
OPENCLAW_HOME_VOLUME | حفظ /home/node في مجلد Docker مسمّى |
OPENCLAW_SANDBOX | الاشتراك في تمهيد العزل (1، true، yes، on) |
OPENCLAW_SKIP_ONBOARDING | تخطي خطوة التهيئة الأولية التفاعلية (1، true، yes، on) |
OPENCLAW_DOCKER_SOCKET | تجاوز مسار مقبس Docker |
OPENCLAW_DISABLE_BONJOUR | تعطيل إعلان Bonjour/mDNS (القيمة الافتراضية 1 لـ Docker) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS | تعطيل طبقات تركيب ربط مصدر Plugin المضمّنة |
OTEL_EXPORTER_OTLP_ENDPOINT | نقطة نهاية مجمّع OTLP/HTTP مشتركة لتصدير OpenTelemetry |
OTEL_EXPORTER_OTLP_*_ENDPOINT | نقاط نهاية OTLP خاصة بالإشارات للتتبعات أو المقاييس أو السجلات |
OTEL_EXPORTER_OTLP_PROTOCOL | تجاوز بروتوكول OTLP. لا يُدعم اليوم إلا http/protobuf |
OTEL_SERVICE_NAME | اسم الخدمة المستخدم لموارد OpenTelemetry |
OTEL_SEMCONV_STABILITY_OPT_IN | الاشتراك في أحدث السمات الدلالية التجريبية لـ GenAI |
OPENCLAW_OTEL_PRELOADED | تخطي بدء SDK ثانٍ لـ OpenTelemetry عند تحميل واحد مسبقًا |
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro.
يتجاوز دليل المصدر المركّب ذلك الحزمة المطابقة المترجمة
/app/dist/extensions/synology-chat لمعرّف Plugin نفسه.
قابلية المراقبة
يكون تصدير OpenTelemetry صادرًا من حاوية Gateway إلى مجمّع OTLP الخاص بك. لا يتطلب ذلك منفذ Docker منشورًا. إذا بنيت الصورة محليًا وتريد أن يكون مصدّر OpenTelemetry المضمّن متاحًا داخل الصورة، فضمّن اعتماديات وقت تشغيله:@openclaw/diagnostics-otel من ClawHub في
تثبيتات Docker المعبأة قبل تمكين التصدير. لا تزال الصور المخصّصة المبنية من المصدر قادرة على
تضمين مصدر Plugin المحلي باستخدام
OPENCLAW_EXTENSIONS=diagnostics-otel. لتمكين التصدير، اسمح بتمكين
Plugin diagnostics-otel في الإعدادات وفعّله، ثم عيّن
diagnostics.otel.enabled=true أو استخدم مثال الإعدادات في تصدير OpenTelemetry
. تُضبط ترويسات مصادقة المجمّع من خلال
diagnostics.otel.headers، وليس من خلال متغيرات بيئة Docker.
تستخدم مقاييس Prometheus منفذ Gateway المنشور بالفعل. ثبّت
clawhub:@openclaw/diagnostics-prometheus، وفعّل
Plugin diagnostics-prometheus، ثم اجمع المقاييس:
/metrics أو مسار وكيل عكسيًا غير مصادق عليه. راجع
مقاييس Prometheus.
فحوصات الصحة
نقاط نهاية فحص الحاوية (لا تتطلب مصادقة):HEALTHCHECK مدمجًا يفحص /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.مزوّدو المضيف المحليون
عندما يعمل OpenClaw في Docker، فإن127.0.0.1 داخل الحاوية هو الحاوية
نفسها، وليس جهاز المضيف لديك. استخدم host.docker.internal لمزوّدي الذكاء الاصطناعي الذين
يعملون على المضيف:
| المزوّد | عنوان URL الافتراضي للمضيف | عنوان URL لإعداد Docker |
|---|---|---|
| LM Studio | http://127.0.0.1:1234 | http://host.docker.internal:1234 |
| Ollama | http://127.0.0.1:11434 | http://host.docker.internal:11434 |
docker-compose.yml الاسم host.docker.internal بـ
Gateway المضيف في Docker لـ Linux Docker Engine. يوفر Docker Desktop بالفعل
اسم المضيف نفسه على macOS وWindows.
يجب أن تستمع خدمات المضيف أيضًا على عنوان يمكن الوصول إليه من Docker:
docker run، فأضف تعيين المضيف
نفسه بنفسك، مثلًا
--add-host=host.docker.internal:host-gateway.
Bonjour / mDNS
عادةً لا تمرر شبكات جسر Docker بث Bonjour/mDNS المتعدد (224.0.0.251:5353) بشكل موثوق. لذلك يضبط إعداد Compose المضمّن
OPENCLAW_DISABLE_BONJOUR=1 افتراضيًا حتى لا يدخل Gateway في حلقة تعطل أو يعيد
بدء الإعلان مرارًا عندما يسقط الجسر حركة البث المتعدد.
استخدم عنوان URL المنشور لـ Gateway، أو Tailscale، أو DNS-SD واسع النطاق لمضيفي Docker.
عيّن OPENCLAW_DISABLE_BONJOUR=0 فقط عند التشغيل مع شبكة المضيف، أو macvlan،
أو شبكة أخرى يُعرف أن بث mDNS المتعدد يعمل فيها.
للمشكلات الشائعة واستكشاف الأخطاء وإصلاحها، راجع اكتشاف Bonjour.
التخزين والاستمرارية
يربط Docker Compose OPENCLAW_CONFIG_DIR إلى /home/node/.openclaw،
وOPENCLAW_WORKSPACE_DIR إلى /home/node/.openclaw/workspace، و
OPENCLAW_AUTH_PROFILE_SECRET_DIR إلى /home/node/.config/openclaw، بحيث تبقى هذه
المسارات بعد استبدال الحاوية. عند عدم تعيين أي متغير، يعود
docker-compose.yml المضمّن إلى مسار تحت ${HOME}، أو إلى /tmp عندما يكون HOME نفسه
مفقودًا أيضًا. يمنع ذلك docker compose up من إصدار مواصفة مجلد
ذات مصدر فارغ في البيئات المجردة.
دليل الإعدادات المركّب هذا هو المكان الذي يحتفظ فيه OpenClaw بما يلي:
openclaw.jsonلإعدادات السلوكagents/<agentId>/agent/auth-profiles.jsonلمصادقة OAuth/API-key المحفوظة الخاصة بالمزوّدين.envلأسرار وقت التشغيل المدعومة بالبيئة مثلOPENCLAW_GATEWAY_TOKEN
OPENCLAW_CONFIG_DIR.
تخزّن Plugins القابلة للتنزيل والمثبتة حالة حِزمها ضمن مجلد OpenClaw الرئيسي المركّب، لذلك تبقى سجلات تثبيت Plugin وجذور الحِزم بعد استبدال الحاوية. لا ينشئ بدء تشغيل Gateway أشجار تبعيات Plugins المضمّنة.
للحصول على التفاصيل الكاملة للاستمرارية في عمليات نشر VM، راجع
وقت تشغيل Docker VM - ما الذي يستمر وأين.
النقاط الأكثر تسببًا في نمو القرص: راقب media/، وملفات JSONL الخاصة بالجلسات،
وcron/runs/*.jsonl، وجذور حِزم Plugin المثبتة، وسجلات الملفات الدوّارة
ضمن /tmp/openclaw/.
مساعدات Shell (اختيارية)
لتسهيل إدارة 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. تظل جولات وضع كود Codex مقيّدة بـ Codex
workspace-write أثناء نشاط وضع حماية OpenClaw؛ لا تركّب
مقبس Docker الخاص بالمضيف داخل حاويات وضع حماية الوكلاء.الأتمتة / CI (غير تفاعلي)
الأتمتة / CI (غير تفاعلي)
عطّل تخصيص Compose pseudo-TTY باستخدام
-T:ملاحظة أمان الشبكة المشتركة
ملاحظة أمان الشبكة المشتركة
يستخدم
openclaw-cli الإعداد network_mode: "service:openclaw-gateway" حتى تتمكن أوامر CLI
من الوصول إلى Gateway عبر 127.0.0.1. تعامل مع هذا باعتباره حدّ ثقة مشتركًا.
يسقط إعداد compose إمكانات NET_RAW/NET_ADMIN ويفعّل
no-new-privileges على كل من openclaw-gateway وopenclaw-cli.إخفاقات DNS في Docker Desktop داخل openclaw-cli
إخفاقات DNS في Docker Desktop داخل openclaw-cli
تفشل بعض إعدادات Docker Desktop في عمليات بحث DNS من حاوية
إذا كنت قد أنشأت بالفعل حاوية
openclaw-cli الجانبية ذات الشبكة المشتركة بعد إسقاط NET_RAW، ويظهر ذلك على شكل
EAI_AGAIN أثناء الأوامر المدعومة بـ npm مثل openclaw plugins install.
أبقِ ملف compose الافتراضي المشدّد لعملية Gateway العادية. يعمل
التجاوز المحلي أدناه على تخفيف وضع أمان حاوية CLI عبر
استعادة الإمكانات الافتراضية لـ Docker، لذلك استخدمه فقط لأمر CLI
لمرة واحدة يحتاج إلى الوصول إلى سجل الحِزم، وليس كاستدعاء Compose
الافتراضي لديك:openclaw-cli طويلة التشغيل، فأعد إنشاءها
باستخدام التجاوز نفسه. لا يستطيع docker compose exec ولا docker exec
تغيير إمكانات Linux على حاوية أُنشئت مسبقًا.الأذونات وEACCES
الأذونات وEACCES
تعمل الصورة باسم يمكن أن يظهر عدم التطابق نفسه كتحذير Plugin مثل
node (uid 1000). إذا رأيت أخطاء أذونات على
/home/node/.openclaw، فتأكد من أن عمليات bind mount على المضيف مملوكة لـ uid 1000:blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
متبوعًا بـ plugin present but blocked. يعني ذلك أن uid العملية ومالك
دليل Plugin المركّب غير متفقين. يُفضّل تشغيل الحاوية بالـ
uid 1000 الافتراضي وإصلاح ملكية bind mount. لا تستخدم chown
على /path/to/openclaw-config/npm إلى root:root إلا إذا كنت تشغّل
OpenClaw كـ root عمدًا على المدى الطويل.إعادة بناء أسرع
إعادة بناء أسرع
رتّب Dockerfile بحيث تُخزّن طبقات التبعيات مؤقتًا. هذا يتجنب إعادة تشغيل
pnpm install ما لم تتغير ملفات القفل:خيارات الحاوية للمستخدمين المتقدمين
خيارات الحاوية للمستخدمين المتقدمين
الصورة الافتراضية تركّز على الأمان أولًا وتعمل كمستخدم
node غير root. للحصول على
حاوية أكثر اكتمالًا بالميزات:- استمرارية
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - تضمين تبعيات النظام:
export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq" - تضمين Playwright Chromium:
export OPENCLAW_INSTALL_BROWSER=1 - أو تثبيت متصفحات Playwright في مجلد مستمر:
- استمرارية تنزيلات المتصفح: استخدم
OPENCLAW_HOME_VOLUMEأوOPENCLAW_EXTRA_MOUNTS. يكتشف OpenClaw تلقائيًا Chromium المُدار بواسطة Playwright في صورة Docker على Linux.
OpenAI Codex OAuth (Docker دون واجهة)
OpenAI Codex OAuth (Docker دون واجهة)
إذا اخترت OpenAI Codex OAuth في المعالج، فسيفتح URL في المتصفح. في
Docker أو الإعدادات دون واجهة، انسخ URL إعادة التوجيه الكامل الذي تصل إليه والصقه
مرة أخرى في المعالج لإكمال المصادقة.
بيانات تعريف الصورة الأساسية
بيانات تعريف الصورة الأساسية
تستخدم صورة وقت تشغيل Docker الرئيسية
node:24-bookworm-slim وتتضمن tini كعملية init لنقطة الدخول (PID 1) لضمان حصاد العمليات الزومبي والتعامل مع الإشارات بشكل صحيح في الحاويات طويلة التشغيل. تنشر تعليقات توضيحية لصورة OCI الأساسية تشمل org.opencontainers.image.base.name,
وorg.opencontainers.image.source، وغيرها. يتم
تحديث ملخص قاعدة Node عبر PRs صور Docker الأساسية في Dependabot؛ لا تشغّل إصدارات النشر
طبقة ترقية للتوزيعة. راجع
تعليقات صور OCI التوضيحية.هل تشغّل على VPS؟
راجع Hetzner (Docker VPS) و وقت تشغيل Docker VM لخطوات نشر VM المشتركة بما في ذلك تضمين الثنائيات، والاستمرارية، والتحديثات.وضع حماية الوكيل
عند تفعيلagents.defaults.sandbox مع خلفية Docker، يشغّل Gateway
تنفيذ أدوات الوكيل (shell، وقراءة/كتابة الملفات، وما إلى ذلك) داخل حاويات Docker
معزولة بينما يبقى Gateway نفسه على المضيف. يمنحك هذا حاجزًا صارمًا
حول جلسات الوكلاء غير الموثوقة أو متعددة المستأجرين دون وضع Gateway بالكامل
داخل حاوية.
يمكن أن يكون نطاق وضع الحماية لكل وكيل (افتراضيًا)، أو لكل جلسة، أو مشتركًا. يحصل كل نطاق
على مساحة عمل خاصة به مركّبة عند /workspace. يمكنك أيضًا تكوين
سياسات السماح/المنع للأدوات، وعزل الشبكة، وحدود الموارد، وحاويات المتصفح.
للاطلاع على التكوين الكامل، والصور، وملاحظات الأمان، وملفات تعريف الوكلاء المتعددة، راجع:
- وضع الحماية — مرجع وضع الحماية الكامل
- OpenShell — وصول shell تفاعلي إلى حاويات وضع الحماية
- وضع حماية وأدوات الوكلاء المتعددين — تجاوزات لكل وكيل
تفعيل سريع
docker build المضمّنة.
استكشاف الأخطاء وإصلاحها
الصورة مفقودة أو حاوية وضع الحماية لا تبدأ
الصورة مفقودة أو حاوية وضع الحماية لا تبدأ
ابنِ صورة وضع الحماية باستخدام
scripts/sandbox-setup.sh
(نسخة مصدر) أو أمر docker build المضمّن من وضع الحماية § الصور والإعداد (تثبيت npm)،
أو اضبط agents.defaults.sandbox.docker.image على صورتك المخصصة.
تُنشأ الحاويات تلقائيًا لكل جلسة عند الطلب.أخطاء الأذونات في وضع الحماية
أخطاء الأذونات في وضع الحماية
اضبط
docker.user على UID:GID يطابق ملكية مساحة العمل المركّبة لديك،
أو غيّر ملكية مجلد مساحة العمل باستخدام chown.الأدوات المخصصة غير موجودة في وضع الحماية
الأدوات المخصصة غير موجودة في وضع الحماية
يشغّل OpenClaw الأوامر باستخدام
sh -lc (login shell)، والذي يقرأ
/etc/profile وقد يعيد ضبط PATH. اضبط docker.env.PATH لإضافة مسارات
أدواتك المخصصة في المقدمة، أو أضف سكربتًا ضمن /etc/profile.d/ في Dockerfile.تم إنهاء بناء الصورة بسبب نفاد الذاكرة (الخروج 137)
تم إنهاء بناء الصورة بسبب نفاد الذاكرة (الخروج 137)
تحتاج VM إلى ذاكرة RAM لا تقل عن 2 GB. استخدم فئة آلة أكبر وأعد المحاولة.
غير مصرّح أو الاقتران مطلوب في واجهة التحكم
غير مصرّح أو الاقتران مطلوب في واجهة التحكم
هدف Gateway يعرض ws://172.x.x.x أو أخطاء اقتران من Docker CLI
هدف Gateway يعرض ws://172.x.x.x أو أخطاء اقتران من Docker CLI
أعد ضبط وضع Gateway والربط:
ذو صلة
- نظرة عامة على التثبيت — كل طرق التثبيت
- Podman — بديل Podman لـ Docker
- ClawDock — إعداد Docker Compose من المجتمع
- التحديث — إبقاء OpenClaw محدّثًا
- التكوين — تكوين Gateway بعد التثبيت