Containers
Podman
Запускайте OpenClaw Gateway у безrootовому контейнері Podman, керованому вашим поточним некореневим користувачем.
Цільова модель така:
- Podman запускає контейнер gateway.
- Ваш хостовий CLI
openclawє площиною керування. - Сталий стан за замовчуванням зберігається на хості в
~/.openclaw. - Повсякденне керування використовує
openclaw --container <name> ...замістьsudo -u openclaw,podman execабо окремого службового користувача.
Передумови
- Podman у безrootовому режимі
- 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у вашому безrootовому сховищі 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Скрипт запускає контейнер від імені вашого поточного uid/gid з --userns=keep-id і монтує стан OpenClaw у контейнер через bind mount.
Початкове налаштування:
./scripts/run-openclaw-podman.sh launch setupПотім відкрийте http://127.0.0.1:18789/ і використайте токен з ~/.openclaw/.env.
Автентифікація моделей у Podman:
- Використовуйте автентифікацію, керовану OpenClaw, під час налаштування: API-ключі Anthropic для Anthropic або браузерну OAuth/автентифікацію кодом пристрою OpenAI Codex для 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/безголових хостах увімкніть lingering для поточного користувача:
sudo loginctl enable-linger "$(whoami)"Конфігурація, середовище та сховище
- Каталог конфігурації:
~/.openclaw - Каталог робочого простору:
~/.openclaw/workspace - Файл токена:
~/.openclaw/.env - Допоміжний скрипт запуску:
./scripts/run-openclaw-podman.sh
Скрипт запуску та Quadlet монтують хостовий стан у контейнер через bind mount:
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, щоб локальна панель працювала з нелокальним bind контейнера.
Корисні змінні середовища для ручного запускача:
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. Локальний для репозиторію запускач не зберігає перевизначення власних шляхів між 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, але не споживає дозволений список специфічних для 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 блокує bind mounts: Залиште типову поведінку монтування без змін; запускач автоматично додає
:Zу Linux, коли SELinux у режимі enforcing або permissive.