Containers
Podman
Gateway نرمافزار OpenClaw را در یک کانتینر Podman بدون دسترسی ریشه اجرا کنید که توسط کاربر غیرریشهای فعلی شما مدیریت میشود.
مدل کار:
- Podman کانتینر Gateway را اجرا میکند.
- CLI میزبان
openclawصفحهٔ کنترل شماست. - حالت پایدار بهطور پیشفرض در میزبان و زیر
~/.openclawنگهداری میشود. - برای مدیریت روزمره بهجای
sudo -u openclaw،podman execیا یک کاربر سرویس جداگانه، ازopenclaw --container <name> ...استفاده میشود.
پیشنیازها
- Podman در حالت بدون دسترسی ریشه
- CLI نرمافزار OpenClaw نصبشده روی میزبان
- اختیاری: اگر راهاندازی خودکار تحت مدیریت Quadlet را میخواهید،
systemd --user - اختیاری: تنها در صورتی که برای تداوم اجرا پس از راهاندازی سیستم روی یک میزبان بدون نمایشگر،
loginctl enable-linger "$(whoami)"را میخواهید،sudo
شروع سریع
راهاندازی یکباره
از ریشهٔ مخزن، ./scripts/podman/setup.sh را اجرا کنید.
این دستور openclaw:local را در فضای ذخیرهسازی Podman بدون دسترسی ریشهٔ شما میسازد (یا در صورت تنظیم بودن، OPENCLAW_IMAGE / OPENCLAW_PODMAN_IMAGE را دریافت میکند)، اگر ~/.openclaw/openclaw.json وجود نداشته باشد آن را با gateway.mode: "local" ایجاد میکند و اگر ~/.openclaw/.env وجود نداشته باشد آن را با یک OPENCLAW_GATEWAY_TOKEN تولیدشده میسازد.
متغیرهای محیطی اختیاری زمان ساخت:
| متغیر | اثر |
|---|---|
OPENCLAW_IMAGE / OPENCLAW_PODMAN_IMAGE |
استفاده از یک تصویر موجود/دریافتشده بهجای ساخت openclaw:local |
OPENCLAW_IMAGE_APT_PACKAGES |
نصب بستههای اضافی apt هنگام ساخت تصویر (متغیر قدیمی OPENCLAW_DOCKER_APT_PACKAGES را نیز میپذیرد) |
OPENCLAW_IMAGE_PIP_PACKAGES |
نصب بستههای اضافی Python هنگام ساخت تصویر؛ نسخهها را ثابت کنید و تنها از نمایههای بستهای استفاده کنید که به آنها اعتماد دارید |
OPENCLAW_EXTENSIONS |
کامپایل/بستهبندی Pluginهای انتخابشدهٔ پشتیبانیشده و نصب وابستگیهای زمان اجرای آنها |
OPENCLAW_INSTALL_BROWSER |
نصب از پیش Chromium و Xvfb برای خودکارسازی مرورگر (روی 1 تنظیم کنید) |
برای راهاندازی تحت مدیریت Quadlet بهجای آن (فقط Linux و سرویسهای کاربری systemd):
./scripts/podman/setup.sh --quadletیا OPENCLAW_PODMAN_QUADLET=1 را تنظیم کنید.
راهاندازی کانتینر Gateway
./scripts/run-openclaw-podman.sh launchکانتینر را با uid/gid فعلی شما و با --userns=keep-id راهاندازی میکند و حالت OpenClaw شما را با اتصال bind در کانتینر سوار میکند.
اجرای فرایند آغاز به کار درون کانتینر
./scripts/run-openclaw-podman.sh launch setupسپس http://127.0.0.1:18789/ را باز کنید و از توکن موجود در ~/.openclaw/.env استفاده کنید.
احراز هویت مدل: هنگام راهاندازی از احراز هویت تحت مدیریت OpenClaw استفاده کنید (کلیدهای API شرکت Anthropic، یا احراز هویت OAuth مرورگر/کد دستگاه OpenAI Codex برای OpenAI مبتنی بر Codex). راهانداز Podman پوشههای اطلاعات احراز هویت CLI میزبان مانند ~/.claude یا ~/.codex را در کانتینر راهاندازی یا Gateway سوار نمیکند. ورودهای موجود CLI میزبان تنها مسیرهای تسهیلکننده روی همان میزبان هستند — برای نصبهای کانتینری، احراز هویت ارائهدهنده را در حالت سوارشدهٔ ~/.openclaw نگه دارید که فرایند راهاندازی آن را مدیریت میکند.
مدیریت کانتینر در حال اجرا از طریق CLI میزبان
export OPENCLAW_CONTAINER=openclawسپس فرمانهای عادی openclaw بهطور خودکار درون آن کانتینر اجرا میشوند:
openclaw dashboard --no-openopenclaw gateway status --deep # includes extra service scanopenclaw doctoropenclaw channels loginدر macOS، ماشین Podman ممکن است باعث شود مرورگر از دید Gateway غیرمحلی به نظر برسد. اگر رابط کنترل پس از راهاندازی خطاهای احراز هویت دستگاه را گزارش کرد، از راهنمای Tailscale در Podman و Tailscale استفاده کنید.
راهانداز دستی تنها یک فهرست مجاز کوچک از کلیدهای مرتبط با Podman را از ~/.openclaw/.env میخواند و متغیرهای محیطی زمان اجرا را بهصورت صریح به کانتینر میفرستد؛ این راهانداز کل فایل محیطی را به Podman تحویل نمیدهد.
Podman و Tailscale
برای HTTPS یا دسترسی از راه دور مرورگر، مستندات اصلی Tailscale را دنبال کنید.
نکات ویژهٔ Podman:
- میزبان انتشار Podman را روی
127.0.0.1نگه دارید. - استفاده از
tailscale serveتحت مدیریت میزبان را بهopenclaw gateway --tailscale serveترجیح دهید. - در macOS، اگر زمینهٔ احراز هویت دستگاه مرورگر محلی قابل اتکا نیست، بهجای راهکارهای موقت تونل محلی از دسترسی Tailscale استفاده کنید.
به 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)"سرویس Quadlet تولیدشده یک ساختار پیشفرض ثابت و مقاومسازیشده را حفظ میکند: درگاههای منتشرشده روی 127.0.0.1 (درگاه 18789 برای Gateway و 18790 برای پل)، --bind lan درون کانتینر، فضای نام کاربری keep-id، OPENCLAW_NO_RESPAWN=1، Restart=on-failure و TimeoutStartSec=300. این سرویس ~/.openclaw/.env را بهعنوان EnvironmentFile زمان اجرا برای مقادیری مانند OPENCLAW_GATEWAY_TOKEN میخواند، اما فهرست مجاز بازنویسیهای ویژهٔ Podman در راهانداز دستی را مصرف نمیکند. برای درگاههای انتشار سفارشی، میزبان انتشار یا سایر پرچمهای اجرای کانتینر، بهجای آن از راهانداز دستی استفاده کنید، یا ~/.config/containers/systemd/openclaw.container را مستقیماً ویرایش کرده و سپس سرویس را بارگذاری مجدد و راهاندازی دوباره کنید.
پیکربندی، محیط و فضای ذخیرهسازی
- پوشهٔ پیکربندی:
~/.openclaw - پوشهٔ فضای کاری:
~/.openclaw/workspace - فایل توکن:
~/.openclaw/.env - ابزار کمکی راهاندازی:
./scripts/run-openclaw-podman.sh
اسکریپت راهاندازی و Quadlet حالت میزبان را با اتصال bind در کانتینر سوار میکنند: OPENCLAW_CONFIG_DIR -> /home/node/.openclaw و OPENCLAW_WORKSPACE_DIR -> /home/node/.openclaw/workspace. بهطور پیشفرض اینها پوشههای میزبان هستند، نه حالت ناشناس کانتینر؛ بنابراین openclaw.json، auth-profiles.json هر عامل، حالت کانال/ارائهدهنده، نشستها و فضای کاری پس از جایگزینی کانتینر باقی میمانند. فرایند راهاندازی همچنین gateway.controlUi.allowedOrigins را برای 127.0.0.1 و localhost روی درگاه منتشرشدهٔ Gateway مقداردهی اولیه میکند تا داشبورد محلی با اتصال غیرـlocal loopback کانتینر کار کند.
متغیرهای محیطی مفید برای راهانداز دستی (اینها را در ~/.openclaw/.env نگه دارید؛ راهانداز پیش از نهاییکردن مقادیر پیشفرض کانتینر/تصویر، آن فایل را میخواند):
| متغیر | پیشفرض | اثر |
|---|---|---|
OPENCLAW_PODMAN_CONTAINER |
openclaw |
نام کانتینر |
OPENCLAW_PODMAN_IMAGE / OPENCLAW_IMAGE |
openclaw:local |
تصویر مورد استفاده برای اجرا |
OPENCLAW_PODMAN_GATEWAY_HOST_PORT |
18789 |
درگاه میزبان نگاشتشده به 18789 کانتینر |
OPENCLAW_PODMAN_BRIDGE_HOST_PORT |
18790 |
درگاه میزبان نگاشتشده به 18790 کانتینر |
OPENCLAW_PODMAN_PUBLISH_HOST |
127.0.0.1 |
رابط میزبان برای درگاههای منتشرشده |
OPENCLAW_GATEWAY_BIND |
lan |
حالت اتصال Gateway درون کانتینر |
OPENCLAW_PODMAN_USERNS |
keep-id |
keep-id، auto یا host |
اگر از OPENCLAW_CONFIG_DIR یا OPENCLAW_WORKSPACE_DIR غیراستاندارد استفاده میکنید، همان متغیرها را هم برای ./scripts/podman/setup.sh و هم برای فرمانهای بعدی ./scripts/run-openclaw-podman.sh launch تنظیم کنید — راهانداز محلی مخزن، بازنویسیهای مسیر سفارشی را میان پوستهها نگه نمیدارد.
ارتقای تصاویر
پس از ساخت دوباره یا دریافت یک تصویر جدید، کانتینر یا سرویس Quadlet را دوباره راهاندازی کنید. در نخستین راهاندازی یک نسخهٔ جدید OpenClaw، Gateway پیش از اعلام آمادگی، ترمیمهای ایمن حالت و Plugin را اجرا میکند.
اگر Gateway بهجای آمادهشدن خارج شد، همان تصویر را یک بار با
openclaw doctor --fix و با همان حالت/پیکربندی سوارشده اجرا کنید، سپس
Gateway را بهطور عادی دوباره راهاندازی کنید:
OPENCLAW_CONFIG_DIR="${OPENCLAW_CONFIG_DIR:-$HOME/.openclaw}"OPENCLAW_WORKSPACE_DIR="${OPENCLAW_WORKSPACE_DIR:-$OPENCLAW_CONFIG_DIR/workspace}"OPENCLAW_PODMAN_IMAGE="${OPENCLAW_PODMAN_IMAGE:-${OPENCLAW_IMAGE:-openclaw:local}}" podman run --rm -it \ --userns=keep-id \ --user "$(id -u):$(id -g)" \ -e HOME=/home/node \ -e NPM_CONFIG_CACHE=/home/node/.openclaw/.npm \ -v "$OPENCLAW_CONFIG_DIR:/home/node/.openclaw:rw" \ -v "$OPENCLAW_WORKSPACE_DIR:/home/node/.openclaw/workspace:rw" \ "$OPENCLAW_PODMAN_IMAGE" \ openclaw doctor --fixدر میزبانهای SELinux، اگر Podman دسترسی به حالت سوارشده را مسدود میکند، ,Z را به هر دو اتصال bind اضافه کنید.
فرمانهای مفید
- گزارشهای کانتینر:
podman logs -f openclaw - توقف کانتینر:
podman stop openclaw - حذف کانتینر:
podman rm -f openclaw - بازکردن نشانی داشبورد از 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در صورت نبودن آن را ایجاد میکند. - راهاندازی مجدد کانتینر پس از بهروزرسانی تصویر: فرمان یکبارهٔ
openclaw doctor --fixرا در ارتقای تصاویر اجرا کنید، سپس Gateway را دوباره راهاندازی کنید. - فرمانهای 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 اتصالهای bind را مسدود میکند: رفتار پیشفرض سوارسازی را تغییر ندهید؛ راهانداز هنگام فعال بودن SELinux در حالت enforcing یا permissive، بهطور خودکار
:Zرا در Linux اضافه میکند.