Containers
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-хосте
Быстрый старт
Однократная настройка
Из корня репозитория выполните ./scripts/podman/setup.sh.
Запустите контейнер Gateway
Запустите контейнер с помощью ./scripts/run-openclaw-podman.sh launch.
Запустите onboarding внутри контейнера
Выполните ./scripts/run-openclaw-podman.sh launch setup, затем откройте http://127.0.0.1:18789/.
Управляйте запущенным контейнером из хостового CLI
Задайте OPENCLAW_CONTAINER=openclaw, затем используйте обычные команды openclaw с хоста.
Детали настройки:
./scripts/podman/setup.shпо умолчанию собираетopenclaw:localв вашем rootless-хранилище Podman или используетOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGE, если вы задали одну из этих переменных.- Он создает
~/.openclaw/openclaw.jsonсgateway.mode: "local", если файл отсутствует. - Он создает
~/.openclaw/.envсOPENCLAW_GATEWAY_TOKEN, если файл отсутствует. - Для ручных запусков вспомогательный скрипт читает из
~/.openclaw/.envтолько небольшой allowlist ключей, связанных с Podman, и передает контейнеру явные переменные окружения runtime; он не передает Podman весь env-файл.
Настройка под управлением Quadlet:
./scripts/podman/setup.sh --quadletQuadlet доступен только в Linux, потому что зависит от пользовательских служб systemd.
Также можно задать OPENCLAW_PODMAN_QUADLET=1.
Необязательные env-переменные сборки/настройки:
OPENCLAW_IMAGEилиOPENCLAW_PODMAN_IMAGE-- использовать существующий/загруженный образ вместо сборкиopenclaw:localOPENCLAW_IMAGE_APT_PACKAGES-- установить дополнительные apt-пакеты во время сборки образа (также принимает legacyOPENCLAW_DOCKER_APT_PACKAGES)OPENCLAW_IMAGE_PIP_PACKAGES-- установить дополнительные Python-пакеты во время сборки образа; фиксируйте версии и используйте только те индексы пакетов, которым доверяетеOPENCLAW_EXTENSIONS-- предварительно установить зависимости plugins во время сборкиOPENCLAW_INSTALL_BROWSER-- предварительно установить Chromium и Xvfb для автоматизации браузера (задайте1, чтобы включить)
Запуск контейнера:
./scripts/run-openclaw-podman.sh launchСкрипт запускает контейнер с вашими текущими uid/gid через --userns=keep-id и bind-монтирует ваше состояние OpenClaw в контейнер.
Onboarding:
./scripts/run-openclaw-podman.sh launch setupЗатем откройте http://127.0.0.1:18789/ и используйте токен из ~/.openclaw/.env.
Аутентификация моделей в Podman:
- Используйте аутентификацию под управлением OpenClaw во время настройки: API-ключи Anthropic для Anthropic или браузерную OAuth/device-code-аутентификацию OpenAI Codex для OpenAI на базе Codex.
- Лаунчер Podman не монтирует хостовые домашние каталоги учетных данных CLI, такие как
~/.claudeили~/.codex, в контейнер настройки или Gateway. - Существующие хостовые CLI-логины являются удобными путями на том же хосте. Для контейнерных установок храните аутентификацию провайдера в смонтированном состоянии
~/.openclaw, которым управляет настройка.
Хостовый CLI по умолчанию:
export OPENCLAW_CONTAINER=openclawПосле этого такие команды будут автоматически выполняться внутри этого контейнера:
openclaw dashboard --no-openopenclaw gateway status --deep # включает дополнительное сканирование сервисаopenclaw doctoropenclaw channels loginНа macOS машина Podman может заставить Gateway считать браузер нелокальным. Если Control UI после запуска сообщает об ошибках device-auth, используйте рекомендации по Tailscale в Podman и Tailscale.
Podman и Tailscale
Для HTTPS или удаленного доступа из браузера следуйте основной документации Tailscale.
Примечание, специфичное для Podman:
- Оставляйте хост публикации Podman равным
127.0.0.1. - Предпочитайте управляемый хостом
tailscale serveвместоopenclaw gateway --tailscale serve. - На macOS, если локальный контекст device-auth в браузере ненадежен, используйте доступ через 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/headless-хостах включите lingering для текущего пользователя:
sudo loginctl enable-linger "$(whoami)"Конфигурация, env и хранилище
- Каталог конфигурации:
~/.openclaw - Каталог рабочей области:
~/.openclaw/workspace - Файл токена:
~/.openclaw/.env - Вспомогательный скрипт запуска:
./scripts/run-openclaw-podman.sh
Скрипт запуска и Quadlet bind-монтируют состояние хоста в контейнер:
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
По умолчанию это каталоги хоста, а не анонимное состояние контейнера, поэтому
openclaw.json, поагентные auth-profiles.json, состояние channels/providers,
сессии и рабочая область сохраняются при замене контейнера.
Настройка Podman также заполняет gateway.controlUi.allowedOrigins для 127.0.0.1 и localhost на опубликованном порту Gateway, чтобы локальная панель dashboard работала с non-loopback bind контейнера.
Полезные env-переменные для ручного лаунчера:
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, но не использует allowlist переопределений, специфичных для Podman, из ручного лаунчера. - Если вам нужны пользовательские порты публикации, хост публикации или другие флаги запуска контейнера, используйте ручной лаунчер или напрямую отредактируйте
~/.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-зонд + дополнительное сканирование сервиса)
Устранение неполадок
- Permission denied (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 mounts: Не меняйте поведение монтирования по умолчанию; лаунчер автоматически добавляет
:Zв Linux, когда SELinux работает в enforcing- или permissive-режиме.