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 --quadlet
Quadlet خيار خاص بـ Linux فقط لأنه يعتمد على خدمات مستخدم systemd.
يمكنك أيضًا ضبط OPENCLAW_PODMAN_QUADLET=1.
متغيرات بيئة اختيارية للبناء/الإعداد:
OPENCLAW_IMAGEأوOPENCLAW_PODMAN_IMAGE-- استخدم صورة موجودة/مسحوبة بدلًا من بناءopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES-- ثبّت حزم apt إضافية أثناء بناء الصورةOPENCLAW_EXTENSIONS-- ثبّت اعتماديات Plugin مسبقًا في وقت البناءOPENCLAW_INSTALL_BROWSER-- ثبّت Chromium وXvfb مسبقًا لأتمتة المتصفح (اضبطه على1للتمكين)
بدء الحاوية:
./scripts/run-openclaw-podman.sh launch
يبدأ السكربت الحاوية باستخدام uid/gid الحاليين لك مع --userns=keep-id ويربط حالة OpenClaw لديك داخل الحاوية.
الإعداد الأولي:
./scripts/run-openclaw-podman.sh launch setup
ثم افتح http://127.0.0.1:18789/ واستخدم الرمز من ~/.openclaw/.env.
الإعداد الافتراضي لـ CLI على المضيف:
export OPENCLAW_CONTAINER=openclaw
بعد ذلك ستعمل أوامر مثل هذه داخل تلك الحاوية تلقائيًا:
openclaw dashboard --no-open
openclaw gateway status --deep # includes extra service scan
openclaw doctor
openclaw 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-reload
systemctl --user restart openclaw.service
لاستمرارية التشغيل عند الإقلاع على مضيفات SSH/بلا واجهة، فعّل lingering لمستخدمك الحالي:
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 المنشور لكي تعمل لوحة التحكم المحلية مع ربط الحاوية غير المعتمد على local 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 اللاحقة. لا يحفظ المشغّل المحلي في المستودع تجاوزات المسارات المخصصة عبر الصدفات.
ملاحظة 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>في صدفتك. - يفشل
openclaw updateمع--container: هذا متوقع. أعد بناء/سحب الصورة، ثم أعد تشغيل الحاوية أو خدمة Quadlet. - خدمة Quadlet لا تبدأ: شغّل
systemctl --user daemon-reload، ثمsystemctl --user start openclaw.service. على الأنظمة بلا واجهة قد تحتاج أيضًا إلىsudo loginctl enable-linger "$(whoami)". - SELinux يحظر ربط التحميلات: اترك سلوك التحميل الافتراضي كما هو؛ يضيف المشغّل
:Zتلقائيًا على Linux عندما يكون SELinux في وضع الإنفاذ أو السماح.