Podman
شغّل OpenClaw Gateway داخل حاوية Podman دون root، وتُدار بواسطة المستخدم الحالي غير الجذر. النموذج المقصود هو:- تقوم Podman بتشغيل حاوية gateway.
- يكون
openclawCLI على المضيف هو مستوى التحكم. - تعيش الحالة المستدامة على المضيف ضمن
~/.openclawافتراضيًا. - تُدار العمليات اليومية باستخدام
openclaw --container <name> ...بدلًا منsudo -u openclawأوpodman execأو مستخدم خدمة منفصل.
المتطلبات المسبقة
- Podman في وضع rootless
- OpenClaw CLI مثبتة على المضيف
- اختياري:
systemd --userإذا كنت تريد بدءًا تلقائيًا مُدارًا عبر Quadlet - اختياري:
sudoفقط إذا كنت تريدloginctl enable-linger "$(whoami)"من أجل الاستمرارية عند الإقلاع على مضيف headless
البدء السريع
شغّل الإعداد التفاعلي داخل الحاوية
شغّل
./scripts/run-openclaw-podman.sh launch setup، ثم افتح http://127.0.0.1:18789/.- يبني
./scripts/podman/setup.shالصورةopenclaw:localداخل مخزن Podman rootless لديك افتراضيًا، أو يستخدمOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEإذا قمت بضبط أحدهما. - ينشئ
~/.openclaw/openclaw.jsonمعgateway.mode: "local"إذا كان مفقودًا. - ينشئ
~/.openclaw/.envمعOPENCLAW_GATEWAY_TOKENإذا كان مفقودًا. - في عمليات التشغيل اليدوية، لا يقرأ المساعد إلا allowlist صغيرة من المفاتيح المتعلقة بـ Podman من
~/.openclaw/.envويمرر متغيرات بيئة وقت تشغيل صريحة إلى الحاوية؛ ولا يمرر ملف البيئة الكامل إلى Podman.
OPENCLAW_PODMAN_QUADLET=1.
متغيرات البيئة الاختيارية للبناء/الإعداد:
OPENCLAW_IMAGEأوOPENCLAW_PODMAN_IMAGE— استخدام صورة موجودة/مسحوبة بدلًا من بناءopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— تثبيت حزم apt إضافية أثناء بناء الصورةOPENCLAW_EXTENSIONS— تثبيت تبعيات الإضافات مسبقًا وقت البناء
--userns=keep-id ويجري bind-mount لحالة OpenClaw الخاصة بك داخل الحاوية.
الإعداد التفاعلي:
http://127.0.0.1:18789/ واستخدم token من ~/.openclaw/.env.
الافتراضي لـ CLI على المضيف:
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 في:
- البدء:
systemctl --user start openclaw.service - الإيقاف:
systemctl --user stop openclaw.service - الحالة:
systemctl --user status openclaw.service - السجلات:
journalctl --user -u openclaw.service -f
التكوين والبيئة والتخزين
- دليل التكوين:
~/.openclaw - دليل مساحة العمل:
~/.openclaw/workspace - ملف token:
~/.openclaw/.env - مساعد التشغيل:
./scripts/run-openclaw-podman.sh
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— منفذ المضيف المعين إلى18789داخل الحاويةOPENCLAW_PODMAN_BRIDGE_HOST_PORT— منفذ المضيف المعين إلى18790داخل الحاويةOPENCLAW_PODMAN_PUBLISH_HOST— واجهة المضيف للمنافذ المنشورة؛ والافتراضي هو127.0.0.1OPENCLAW_GATEWAY_BIND— وضع bind الخاص بالبوابة داخل الحاوية؛ والافتراضي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 اللاحقة. لا يحتفظ مشغّل المستودع المحلي بتجاوزات المسارات المخصصة عبر sessions 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(bridge). - وتقرأ
~/.openclaw/.envباعتبارهEnvironmentFileوقت التشغيل لقيم مثلOPENCLAW_GATEWAY_TOKEN، لكنها لا تستهلك allowlist الخاصة بتجاوزات 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. وعلى الأنظمة headless قد تحتاج أيضًا إلىsudo loginctl enable-linger "$(whoami)". - يحظر SELinux عمليات bind mount: اترك سلوك mount الافتراضي كما هو؛ فالمشغّل يضيف
:Zتلقائيًا على Linux عندما يكون SELinux في وضع enforcing أو permissive.