Containers
Podman
Запускайте OpenClaw Gateway у безпривілейованому контейнері Podman, яким керує поточний користувач без прав root.
Модель роботи:
- Podman запускає контейнер Gateway.
- Встановлений на хості CLI
openclawслугує площиною керування. - За замовчуванням постійні дані зберігаються на хості в
~/.openclaw. - Для повсякденного керування використовуйте
openclaw --container <name> ...замістьsudo -u openclaw,podman execабо окремого службового користувача.
Передумови
- Podman у безпривілейованому режимі
- CLI OpenClaw, установлений на хості
- Необов’язково:
systemd --user, якщо потрібен автоматичний запуск під керуванням Quadlet - Необов’язково:
sudo, лише якщо потрібно виконатиloginctl enable-linger "$(whoami)"для збереження автозапуску після завантаження на хості без графічного інтерфейсу
Швидкий початок
Одноразове налаштування
У корені репозиторію виконайте ./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 |
Скомпілювати й запакувати вибрані підтримувані плагіни та встановити їхні залежності середовища виконання |
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 із хоста в контейнер.
Початкове налаштування всередині контейнера
./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 # включає додаткове сканування службopenclaw doctoropenclaw channels loginУ macOS віртуальна машина Podman може призвести до того, що браузер виглядатиме для Gateway як нелокальний. Якщо після запуску Control UI повідомляє про помилки автентифікації пристрою, скористайтеся рекомендаціями щодо Tailscale у розділі Podman і Tailscale.
Ручний засіб запуску читає з ~/.openclaw/.env лише невеликий дозволений список ключів, пов’язаних із Podman, і передає контейнеру явно визначені змінні середовища виконання; він не передає Podman увесь файл середовища.
Podman і Tailscale
Для доступу через HTTPS або віддалений браузер дотримуйтеся основної документації Tailscale.
Примітки щодо Podman:
- Залишайте адресу публікації Podman рівною
127.0.0.1. - Віддавайте перевагу керованій хостом команді
tailscale serve, а неopenclaw gateway --tailscale serve. - У macOS, якщо контекст автентифікації пристрою в локальному браузері працює ненадійно, використовуйте доступ через Tailscale замість тимчасових обхідних рішень із локальними тунелями.
Див. Tailscale і Control UI.
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 монтують стан із хоста в контейнер: 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 виконує безпечне відновлення стану та плагінів, перш ніж повідомити про готовність.
Якщо 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 додайте ,Z до обох монтувань, якщо Podman блокує доступ до
підключеного стану.
Корисні команди
- Журнали контейнера:
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 <ваш uid>:<ваш 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 блокує монтування: Не змінюйте стандартну поведінку монтування; коли SELinux працює в примусовому або дозвільному режимі, засіб запуску автоматично додає
:Zу Linux.