Containers
Podman
شغّل OpenClaw Gateway داخل حاوية Podman بلا جذر، تُدار بواسطة مستخدمك الحالي غير الجذري.
النموذج المقصود هو:
- يشغّل Podman حاوية Gateway.
- يكون
openclawCLI على المضيف هو مستوى التحكم. - تكون الحالة الدائمة على المضيف تحت
~/.openclawافتراضيًا. - تستخدم الإدارة اليومية
openclaw --container <name> ...بدلًا منsudo -u openclawأوpodman execأو مستخدم خدمة منفصل.
المتطلبات المسبقة
- Podman في وضع بلا جذر
- OpenClaw CLI مثبّت على المضيف
- اختياري:
systemd --userإذا كنت تريد تشغيلًا تلقائيًا مُدارًا بواسطة Quadlet - اختياري:
sudoفقط إذا كنت تريدloginctl enable-linger "$(whoami)"لاستمرارية التشغيل بعد الإقلاع على مضيف بلا شاشة
البدء السريع
One-time setup
من جذر المستودع، شغّل ./scripts/podman/setup.sh.
Start the Gateway container
ابدأ الحاوية باستخدام ./scripts/run-openclaw-podman.sh launch.
Run onboarding inside the container
شغّل ./scripts/run-openclaw-podman.sh launch setup، ثم افتح http://127.0.0.1:18789/.
Manage the running container from the host CLI
اضبط OPENCLAW_CONTAINER=openclaw، ثم استخدم أوامر openclaw العادية من المضيف.
تفاصيل الإعداد:
- يبني
./scripts/podman/setup.shالصورةopenclaw:localفي مخزن Podman بلا جذر لديك افتراضيًا، أو يستخدمOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEإذا ضبطت أحدهما. - ينشئ
~/.openclaw/openclaw.jsonمعgateway.mode: "local"إذا كان مفقودًا. - ينشئ
~/.openclaw/.envمعOPENCLAW_GATEWAY_TOKENإذا كان مفقودًا. - بالنسبة لعمليات التشغيل اليدوية، يقرأ المساعد قائمة سماح صغيرة فقط من المفاتيح المتعلقة بـ Podman من
~/.openclaw/.envويمرر متغيرات بيئة تشغيل صريحة إلى الحاوية؛ ولا يمرر ملف البيئة كاملًا إلى Podman.
إعداد مُدار بواسطة Quadlet:
./scripts/podman/setup.sh --quadletQuadlet خيار خاص بـ Linux فقط لأنه يعتمد على خدمات مستخدم systemd.
يمكنك أيضًا ضبط OPENCLAW_PODMAN_QUADLET=1.
متغيرات بيئة اختيارية للبناء/الإعداد:
OPENCLAW_IMAGEأوOPENCLAW_PODMAN_IMAGE-- استخدم صورة موجودة/مجلوبة بدلًا من بناءopenclaw:localOPENCLAW_IMAGE_APT_PACKAGES-- ثبّت حزم apt إضافية أثناء بناء الصورة (يقبل أيضًاOPENCLAW_DOCKER_APT_PACKAGESالقديم)OPENCLAW_IMAGE_PIP_PACKAGES-- ثبّت حزم Python إضافية أثناء بناء الصورة؛ ثبّت الإصدارات واستخدم فقط فهارس الحزم التي تثق بهاOPENCLAW_EXTENSIONS-- ثبّت اعتماديات Plugin مسبقًا وقت البناءOPENCLAW_INSTALL_BROWSER-- ثبّت Chromium و Xvfb مسبقًا لأتمتة المتصفح (اضبطه على1للتفعيل)
بدء الحاوية:
./scripts/run-openclaw-podman.sh launchيبدأ السكربت الحاوية بمعرّف المستخدم/المجموعة الحاليين لديك باستخدام --userns=keep-id ويربط حالة OpenClaw لديك داخل الحاوية.
الإعداد الأولي:
./scripts/run-openclaw-podman.sh launch setupثم افتح http://127.0.0.1:18789/ واستخدم الرمز من ~/.openclaw/.env.
مصادقة النموذج في Podman:
- استخدم المصادقة المُدارة بواسطة OpenClaw أثناء الإعداد: مفاتيح Anthropic API لـ Anthropic، أو مصادقة OpenAI Codex عبر OAuth في المتصفح/رمز الجهاز لـ OpenAI المدعوم بـ Codex.
- لا يربط مشغّل Podman مجلدات بيانات اعتماد CLI على المضيف مثل
~/.claudeأو~/.codexداخل حاوية الإعداد أو Gateway. - تسجيلات دخول CLI الموجودة على المضيف هي مسارات تسهيل على المضيف نفسه. بالنسبة لتثبيتات الحاويات، أبقِ مصادقة المزوّد في حالة
~/.openclawالمربوطة التي يديرها الإعداد.
افتراضي CLI على المضيف:
export OPENCLAW_CONTAINER=openclawبعد ذلك، ستُشغَّل أوامر مثل هذه داخل تلك الحاوية تلقائيًا:
openclaw dashboard --no-openopenclaw gateway status --deep # includes extra service scanopenclaw doctoropenclaw channels loginعلى macOS، قد تجعل آلة Podman المتصفح يبدو غير محلي بالنسبة إلى Gateway. إذا أبلغت Control UI عن أخطاء مصادقة الجهاز بعد التشغيل، فاستخدم إرشادات Tailscale في Podman و Tailscale.
Podman و Tailscale
للوصول عبر HTTPS أو متصفح بعيد، اتبع وثائق Tailscale الرئيسية.
ملاحظة خاصة بـ Podman:
- أبقِ مضيف نشر Podman على
127.0.0.1. - فضّل
tailscale serveالمُدار من المضيف علىopenclaw gateway --tailscale serve. - على macOS، إذا كان سياق مصادقة جهاز المتصفح المحلي غير موثوق، فاستخدم وصول Tailscale بدلًا من حلول الأنفاق المحلية المخصصة.
راجع:
Systemd (Quadlet، اختياري)
إذا شغّلت ./scripts/podman/setup.sh --quadlet، يثبّت الإعداد ملف Quadlet في:
~/.config/containers/systemd/openclaw.containerأوامر مفيدة:
- بدء:
systemctl --user start openclaw.service - إيقاف:
systemctl --user stop openclaw.service - الحالة:
systemctl --user status openclaw.service - السجلات:
journalctl --user -u openclaw.service -f
بعد تعديل ملف Quadlet:
systemctl --user daemon-reloadsystemctl --user restart openclaw.serviceلاستمرارية التشغيل بعد الإقلاع على مضيفات SSH/بلا شاشة، فعّل الإبقاء لمستخدمك الحالي:
sudo loginctl enable-linger "$(whoami)"الإعدادات والبيئة والتخزين
- دليل الإعدادات:
~/.openclaw - دليل مساحة العمل:
~/.openclaw/workspace - ملف الرمز:
~/.openclaw/.env - مساعد التشغيل:
./scripts/run-openclaw-podman.sh
يربط سكربت التشغيل و Quadlet حالة المضيف داخل الحاوية:
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
افتراضيًا، هذه أدلة مضيف وليست حالة حاوية مجهولة، لذلك تبقى
openclaw.json، وملف auth-profiles.json لكل وكيل، وحالة القنوات/المزوّدين،
والجلسات، ومساحة العمل بعد استبدال الحاوية.
كما يجهّز إعداد Podman gateway.controlUi.allowedOrigins لـ 127.0.0.1 و localhost على منفذ Gateway المنشور لكي تعمل لوحة المعلومات المحلية مع ربط الحاوية غير المعتمد على loopback.
متغيرات بيئة مفيدة للمشغّل اليدوي:
OPENCLAW_PODMAN_CONTAINER-- اسم الحاوية (openclawافتراضيًا)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE-- الصورة المراد تشغيلهاOPENCLAW_PODMAN_GATEWAY_HOST_PORT-- منفذ المضيف المعين إلى منفذ الحاوية18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT-- منفذ المضيف المعين إلى منفذ الحاوية18790OPENCLAW_PODMAN_PUBLISH_HOST-- واجهة المضيف للمنافذ المنشورة؛ الافتراضي هو127.0.0.1OPENCLAW_GATEWAY_BIND-- وضع ربط Gateway داخل الحاوية؛ الافتراضي هوlanOPENCLAW_PODMAN_USERNS--keep-id(الافتراضي)، أوauto، أوhost
يقرأ المشغّل اليدوي ~/.openclaw/.env قبل تثبيت افتراضيات الحاوية/الصورة، لذلك يمكنك حفظ هذه القيم هناك.
إذا استخدمت OPENCLAW_CONFIG_DIR أو OPENCLAW_WORKSPACE_DIR غير افتراضي، فاضبط المتغيرات نفسها لكل من أوامر ./scripts/podman/setup.sh وأوامر ./scripts/run-openclaw-podman.sh launch اللاحقة. لا يحفظ المشغّل المحلي في المستودع تجاوزات المسارات المخصصة عبر جلسات shell.
ملاحظة Quadlet:
- تحافظ خدمة Quadlet المُولّدة عمدًا على شكل افتراضي ثابت ومُحصّن: منافذ منشورة على
127.0.0.1، و--bind lanداخل الحاوية، ومساحة أسماء مستخدمkeep-id. - تثبّت
OPENCLAW_NO_RESPAWN=1، وRestart=on-failure، وTimeoutStartSec=300. - تنشر كلًا من
127.0.0.1:18789:18789(Gateway) و127.0.0.1:18790:18790(الجسر). - تقرأ
~/.openclaw/.envكملفEnvironmentFileوقت التشغيل لقيم مثلOPENCLAW_GATEWAY_TOKEN، لكنها لا تستهلك قائمة السماح الخاصة بتجاوزات Podman للمشغّل اليدوي. - إذا كنت تحتاج إلى منافذ نشر مخصصة، أو مضيف نشر، أو أعلام أخرى لتشغيل الحاوية، فاستخدم المشغّل اليدوي أو عدّل
~/.config/containers/systemd/openclaw.containerمباشرة، ثم أعد تحميل الخدمة وأعد تشغيلها.
أوامر مفيدة
- سجلات الحاوية:
podman logs -f openclaw - إيقاف الحاوية:
podman stop openclaw - إزالة الحاوية:
podman rm -f openclaw - فتح عنوان URL للوحة المعلومات من CLI على المضيف:
openclaw dashboard --no-open - الصحة/الحالة عبر CLI على المضيف:
openclaw gateway status --deep(فحص RPC + فحص خدمة إضافي)
استكشاف الأخطاء وإصلاحها
- رفض الإذن (EACCES) على الإعدادات أو مساحة العمل: تعمل الحاوية باستخدام
--userns=keep-idو--user <your uid>:<your gid>افتراضيًا. تأكد من أن مسارات الإعدادات/مساحة العمل على المضيف مملوكة لمستخدمك الحالي. - بدء Gateway محظور (
gateway.mode=localمفقود): تأكد من وجود~/.openclaw/openclaw.jsonوأنه يضبطgateway.mode="local". ينشئscripts/podman/setup.shهذا إذا كان مفقودًا. - أوامر CLI داخل الحاوية تستهدف وجهة خاطئة: استخدم
openclaw --container <name> ...صراحة، أو صدّرOPENCLAW_CONTAINER=<name>في shell لديك. - فشل
openclaw updateمع--container: هذا متوقع. أعد بناء/جلب الصورة، ثم أعد تشغيل الحاوية أو خدمة Quadlet. - خدمة Quadlet لا تبدأ: شغّل
systemctl --user daemon-reload، ثمsystemctl --user start openclaw.service. على الأنظمة بلا شاشة قد تحتاج أيضًا إلىsudo loginctl enable-linger "$(whoami)". - SELinux يحظر ربط التحميلات: اترك سلوك التحميل الافتراضي كما هو؛ يضيف المشغّل
:Zتلقائيًا على Linux عندما يكون SELinux في وضع الفرض أو السماح.