Podman
Запускайте OpenClaw Gateway у rootless-контейнері Podman, яким керує ваш поточний користувач без прав root. Очікувана модель така:- Podman запускає контейнер gateway.
- Ваш хостовий CLI
openclawє площиною керування. - Постійний стан типово зберігається на хості в
~/.openclaw. - Для щоденного керування використовується
openclaw --container <name> ...замістьsudo -u openclaw,podman execабо окремого користувача служби.
Передумови
- Podman у rootless-режимі
- OpenClaw CLI, установлений на хості
- Необов’язково:
systemd --user, якщо ви хочете автозапуск під керуванням Quadlet - Необов’язково:
sudo, лише якщо вам потрібноloginctl enable-linger "$(whoami)"для збереження між перезавантаженнями на headless-хості
Швидкий старт
Запустіть onboarding усередині контейнера
Виконайте
./scripts/run-openclaw-podman.sh launch setup, потім відкрийте http://127.0.0.1:18789/../scripts/podman/setup.shтипово збираєopenclaw:localу вашому rootless-сховищі Podman або використовуєOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGE, якщо ви їх задали.- Він створює
~/.openclaw/openclaw.jsonзgateway.mode: "local", якщо файл відсутній. - Він створює
~/.openclaw/.envзOPENCLAW_GATEWAY_TOKEN, якщо файл відсутній. - Для ручних запусків helper читає лише невеликий allowlist ключів, пов’язаних із Podman, з
~/.openclaw/.envі передає в контейнер явні runtime env vars; він не передає Podman увесь env-файл.
OPENCLAW_PODMAN_QUADLET=1.
Необов’язкові env vars для збирання/налаштування:
OPENCLAW_IMAGEабоOPENCLAW_PODMAN_IMAGE— використовувати наявний/завантажений образ замість збиранняopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— установити додаткові apt-пакети під час збирання образуOPENCLAW_EXTENSIONS— попередньо встановити залежності розширень під час збирання
--userns=keep-id і bind-mount вашого стану OpenClaw у контейнер.
Onboarding:
http://127.0.0.1:18789/ і використайте токен із ~/.openclaw/.env.
Типове значення для CLI хоста:
Podman + Tailscale
Для HTTPS або віддаленого доступу з browser дотримуйтеся основної документації Tailscale. Примітка, специфічна для Podman:- Залишайте host публікації Podman як
127.0.0.1. - Надавайте перевагу керованому хостом
tailscale serveзамістьopenclaw gateway --tailscale serve. - На macOS, якщо локальний контекст device-auth у browser ненадійний, використовуйте доступ через 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
Конфігурація, env і сховище
- Каталог конфігурації:
~/.openclaw - Каталог workspace:
~/.openclaw/workspace - Файл токена:
~/.openclaw/.env - Helper запуску:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, auth-profiles.json для кожного агента, стан каналу/провайдера,
сесії та workspace переживають заміну контейнера.
Налаштування Podman також ініціалізує gateway.controlUi.allowedOrigins для 127.0.0.1 і localhost на опублікованому порту gateway, щоб локальна dashboard працювала з не-loopback bind контейнера.
Корисні env vars для ручного launcher-а:
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— режим 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. Launcher із локального репозиторію не зберігає перевизначення користувацьких шляхів між 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як runtimeEnvironmentFileдля значень на кшталтOPENCLAW_GATEWAY_TOKEN, але не використовує allowlist перевизначень, специфічних для Podman, із ручного launcher-а. - Якщо вам потрібні власні порти публікації, host публікації або інші прапори запуску контейнера, використовуйте ручний launcher або редагуйте
~/.config/containers/systemd/openclaw.containerбезпосередньо, а потім перезавантажте і перезапустіть службу.
Корисні команди
- Журнали контейнера:
podman logs -f openclaw - Зупинити контейнер:
podman stop openclaw - Видалити контейнер:
podman rm -f openclaw - Відкрити URL dashboard із CLI хоста:
openclaw dashboard --no-open - Health/status через CLI хоста:
openclaw gateway status --deep(RPC probe + додаткове сканування служб)
Усунення проблем
- Permission denied (EACCES) для конфігурації або workspace: Контейнер типово запускається з
--userns=keep-idі--user <your uid>:<your gid>. Переконайтеся, що шляхи конфігурації/workspace на хості належать вашому поточному користувачу. - Запуск 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 mounts: Не змінюйте типову поведінку монтування; launcher автоматично додає
:Zу Linux, коли SELinux перебуває в enforcing або permissive-режимі.