- 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, если файл отсутствует. - Для ручных запусков вспомогательный скрипт читает из
~/.openclaw/.envтолько небольшой allowlist ключей, связанных с Podman, и передает контейнеру явные переменные окружения runtime; он не передает Podman весь env-файл.
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, чтобы включить)
--userns=keep-id и bind-монтирует ваше состояние OpenClaw в контейнер.
Onboarding:
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, которым управляет настройка.
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 в:
- Запуск:
systemctl --user start openclaw.service - Остановка:
systemctl --user stop openclaw.service - Статус:
systemctl --user status openclaw.service - Логи:
journalctl --user -u openclaw.service -f
Конфигурация, env и хранилище
- Каталог конфигурации:
~/.openclaw - Каталог рабочей области:
~/.openclaw/workspace - Файл токена:
~/.openclaw/.env - Вспомогательный скрипт запуска:
./scripts/run-openclaw-podman.sh
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-режиме.