Containers
Docker
Docker є необов’язковим. Використовуйте його лише якщо вам потрібен контейнеризований gateway або потрібно перевірити Docker flow.
Чи підходить мені Docker?
- Так: вам потрібне ізольоване одноразове середовище gateway або запуск OpenClaw на хості без локальних інсталяцій.
- Ні: ви запускаєте на власній машині й хочете лише найшвидший dev loop. Натомість використовуйте звичайний процес інсталяції.
- Примітка щодо sandboxing: стандартний backend sandbox використовує Docker, коли sandboxing увімкнено, але sandboxing вимкнено за замовчуванням і не вимагає запускати весь gateway у Docker. Також доступні backend sandbox SSH і OpenShell. Див. Sandboxing.
Передумови
- Docker Desktop (або Docker Engine) + Docker Compose v2
- Щонайменше 2 ГБ RAM для збирання образу (
pnpm installможе бути завершено через OOM на хостах із 1 ГБ з кодом виходу 137) - Достатньо місця на диску для образів і журналів
- Якщо запускаєте на VPS/публічному хості, перегляньте
Посилення безпеки для мережевої доступності,
особливо політику firewall Docker
DOCKER-USER.
Контейнеризований gateway
Зберіть образ
З кореня репозиторію запустіть setup script:
./scripts/docker/setup.shЦе локально збере образ gateway. Щоб натомість використати попередньо зібраний образ:
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"./scripts/docker/setup.shПопередньо зібрані образи спершу публікуються в
GitHub Container Registry.
GHCR є основним registry для автоматизації релізів, pinned deployments
і перевірок походження. Той самий release workflow також публікує офіційне
дзеркало Docker Hub у openclaw/openclaw для хостів, які віддають перевагу Docker Hub:
export OPENCLAW_IMAGE="openclaw/openclaw:latest"./scripts/docker/setup.shВикористовуйте ghcr.io/openclaw/openclaw або openclaw/openclaw. Уникайте community
дзеркал Docker Hub, оскільки OpenClaw не контролює їхній час релізу,
перебудови або політику зберігання. Поширені офіційні теги: main, latest,
<version> (наприклад, 2026.2.26) і beta-версії, як-от
2026.2.26-beta.1. Beta-теги не переміщують latest або main.
Повторний запуск в airgapped-середовищі
На офлайн-хостах спершу перенесіть і завантажте образ:
docker load -i openclaw-image.tarexport OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"./scripts/docker/setup.sh --offline--offline перевіряє, що OPENCLAW_IMAGE вже існує локально, вимикає
неявні Compose pulls і builds, а потім запускає звичайний setup flow, зокрема
синхронізацію .env, виправлення дозволів, onboarding, синхронізацію конфігурації gateway
і запуск Compose.
Якщо OPENCLAW_SANDBOX=1, offline setup також перевіряє налаштовані стандартні
та активні per-agent sandbox images у daemon за
OPENCLAW_DOCKER_SOCKET. Docker-backed browser images також мають містити
поточну мітку browser contract OpenClaw. Коли потрібний образ відсутній або
несумісний, setup завершується без зміни конфігурації sandbox, замість того щоб
повідомляти про успіх із непридатним sandbox.
Завершіть onboarding
Setup script автоматично запускає onboarding. Він:
- запитає ключі API provider
- згенерує токен gateway і запише його в
.env - створить каталог secret key auth-profile
- запустить gateway через Docker Compose
Під час setup pre-start onboarding і записи конфігурації виконуються безпосередньо через
openclaw-gateway. openclaw-cli призначений для команд, які ви запускаєте після того,
як контейнер gateway уже існує.
Відкрийте Control UI
Відкрийте http://127.0.0.1:18789/ у браузері та вставте налаштований
shared secret у Settings. Setup script за замовчуванням записує токен у .env;
якщо ви перемкнете конфігурацію контейнера на password auth, використовуйте
натомість цей пароль.
Потрібна URL-адреса ще раз?
docker compose run --rm openclaw-cli dashboard --no-openНалаштуйте channels (необов’язково)
Використовуйте CLI container, щоб додати messaging channels:
# WhatsApp (QR)docker compose run --rm openclaw-cli channels login # Telegramdocker compose run --rm openclaw-cli channels add --channel telegram --token "<token>" # Discorddocker compose run --rm openclaw-cli channels add --channel discord --token "<token>"Ручний flow
Якщо ви віддаєте перевагу запускати кожен крок самостійно замість використання setup script:
docker build -t openclaw:local -f Dockerfile .docker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js onboard --mode local --no-install-daemondocker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js config set --batch-json '[{"path":"gateway.mode","value":"local"},{"path":"gateway.bind","value":"lan"},{"path":"gateway.controlUi.allowedOrigins","value":["http://localhost:18789","http://127.0.0.1:18789"]}]'docker compose up -d openclaw-gatewayЗмінні середовища
Setup script приймає такі необов’язкові змінні середовища:
| Змінна | Призначення |
|---|---|
OPENCLAW_IMAGE |
Використати віддалений образ замість локального збирання |
OPENCLAW_IMAGE_APT_PACKAGES |
Встановити додаткові apt-пакети під час build (розділені пробілами) |
OPENCLAW_IMAGE_PIP_PACKAGES |
Встановити додаткові Python-пакети під час build (розділені пробілами) |
OPENCLAW_EXTENSIONS |
Попередньо встановити залежності plugin під час build (назви, розділені пробілами) |
OPENCLAW_DOCKER_BUILD_NODE_OPTIONS |
Перевизначити параметри Node для локального source-build |
OPENCLAW_DOCKER_BUILD_TSDOWN_MAX_OLD_SPACE_MB |
Перевизначити heap tsdown для локального source-build у МБ |
OPENCLAW_DOCKER_BUILD_SKIP_DTS |
Пропустити declaration output під час runtime-only local image builds |
OPENCLAW_EXTRA_MOUNTS |
Додаткові bind mounts хоста (розділені комами source:target[:opts]) |
OPENCLAW_HOME_VOLUME |
Зберігати /home/node у named Docker volume |
OPENCLAW_SANDBOX |
Увімкнути sandbox bootstrap (1, true, yes, on) |
OPENCLAW_SKIP_ONBOARDING |
Пропустити інтерактивний крок onboarding (1, true, yes, on) |
OPENCLAW_DOCKER_SOCKET |
Перевизначити шлях до Docker socket |
OPENCLAW_DISABLE_BONJOUR |
Вимкнути рекламу Bonjour/mDNS (за замовчуванням 1 для Docker) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS |
Вимкнути bind-mount overlays вихідного коду bundled plugin |
OTEL_EXPORTER_OTLP_ENDPOINT |
Спільний endpoint OTLP/HTTP collector для експорту OpenTelemetry |
OTEL_EXPORTER_OTLP_*_ENDPOINT |
Signal-specific OTLP endpoints для traces, metrics або logs |
OTEL_EXPORTER_OTLP_PROTOCOL |
Перевизначення протоколу OTLP. Наразі підтримується лише http/protobuf |
OTEL_SERVICE_NAME |
Назва сервісу, що використовується для ресурсів OpenTelemetry |
OTEL_SEMCONV_STABILITY_OPT_IN |
Увімкнути найновіші експериментальні semantic attributes GenAI |
OPENCLAW_OTEL_PRELOADED |
Пропустити запуск другого OpenTelemetry SDK, якщо один уже preloaded |
Офіційний Docker image не постачається з Homebrew. Під час onboarding OpenClaw
приховує інсталятори залежностей Skills, доступні лише через brew, коли він працює в Linux
container без brew; ці залежності мають бути надані custom image
або встановлені вручну. Для залежностей, доступних із пакетів Debian, використовуйте
OPENCLAW_IMAGE_APT_PACKAGES під час збирання образу. Legacy-назва
OPENCLAW_DOCKER_APT_PACKAGES досі приймається.
Для Python-залежностей використовуйте OPENCLAW_IMAGE_PIP_PACKAGES. Це запускає
python3 -m pip install --break-system-packages під час збирання образу, тому закріплюйте
версії пакетів і використовуйте лише індекси пакетів, яким довіряєте.
Source builds встановлюють OPENCLAW_DOCKER_BUILD_NODE_OPTIONS за замовчуванням на
--max-old-space-size=8192 і залишають
OPENCLAW_DOCKER_BUILD_TSDOWN_MAX_OLD_SPACE_MB невстановленою, щоб wrapper tsdown міг
враховувати memory limits контейнера. Вони також встановлюють
OPENCLAW_DOCKER_BUILD_SKIP_DTS=1 за замовчуванням, оскільки runtime images видаляють declaration
files після build. Якщо Docker повідомляє ResourceExhausted, cannot allocate memory або переривається під час tsdown, збільште memory limit Docker builder або
повторіть із меншими явними heaps, наприклад
OPENCLAW_DOCKER_BUILD_NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_DOCKER_BUILD_TSDOWN_MAX_OLD_SPACE_MB=4096.
Maintainers можуть тестувати вихідний код bundled plugin із packaged image, монтувавши
один каталог вихідного коду plugin поверх його packaged source path, наприклад
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro.
Цей змонтований каталог вихідного коду перевизначає відповідний скомпільований
bundle /app/dist/extensions/synology-chat для того самого plugin id.
Спостережуваність
Експорт OpenTelemetry є outbound із контейнера Gateway до вашого OTLP collector. Він не потребує опублікованого Docker port. Якщо ви локально збираєте образ і хочете, щоб bundled OpenTelemetry exporter був доступний усередині образу, додайте його runtime dependencies:
export OPENCLAW_EXTENSIONS="diagnostics-otel"export OTEL_EXPORTER_OTLP_ENDPOINT="http://otel-collector:4318"export OTEL_SERVICE_NAME="openclaw-gateway"./scripts/docker/setup.shВстановіть офіційний plugin @openclaw/diagnostics-otel із ClawHub у
packaged Docker installs перед увімкненням експорту. Custom source-built images все ще можуть
містити локальний вихідний код plugin через
OPENCLAW_EXTENSIONS=diagnostics-otel. Щоб увімкнути експорт, дозвольте й увімкніть
plugin diagnostics-otel у конфігурації, а потім встановіть
diagnostics.otel.enabled=true або скористайтеся прикладом конфігурації в Експорт OpenTelemetry
. Заголовки auth collector налаштовуються через
diagnostics.otel.headers, а не через змінні середовища Docker.
Prometheus metrics використовують уже опублікований порт Gateway. Встановіть
clawhub:@openclaw/diagnostics-prometheus, увімкніть
plugin diagnostics-prometheus, а потім scrape:
http://<gateway-host>:18789/api/diagnostics/prometheusRoute захищено автентифікацією Gateway. Не відкривайте окремий
публічний порт /metrics або unauthenticated reverse-proxy path. Див.
Prometheus metrics.
Health checks
Container probe endpoints (автентифікація не потрібна):
curl -fsS http://127.0.0.1:18789/healthz # livenesscurl -fsS http://127.0.0.1:18789/readyz # readinessОбраз Docker містить вбудований HEALTHCHECK, який опитує /healthz.
Якщо перевірки й далі не проходять, Docker позначає контейнер як unhealthy, а
системи оркестрації можуть перезапустити або замінити його.
Автентифікований глибокий знімок стану:
docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"LAN проти loopback
scripts/docker/setup.sh за замовчуванням встановлює OPENCLAW_GATEWAY_BIND=lan, щоб доступ із хоста до
http://127.0.0.1:18789 працював через публікацію порту Docker.
lan(за замовчуванням): браузер хоста й CLI хоста можуть дістатися опублікованого порту gateway.loopback: лише процеси всередині мережевого простору імен контейнера можуть напряму дістатися gateway.
Локальні провайдери хоста
Коли OpenClaw працює в Docker, 127.0.0.1 всередині контейнера — це сам контейнер,
а не ваша хост-машина. Використовуйте host.docker.internal для AI-провайдерів, які
працюють на хості:
| Провайдер | URL хоста за замовчуванням | URL для налаштування Docker |
|---|---|---|
| LM Studio | http://127.0.0.1:1234 |
http://host.docker.internal:1234 |
| Ollama | http://127.0.0.1:11434 |
http://host.docker.internal:11434 |
Вбудоване налаштування Docker використовує ці URL хоста як стандартні значення
онбордингу для LM Studio та Ollama, а docker-compose.yml зіставляє host.docker.internal із
host gateway Docker для Linux Docker Engine. Docker Desktop уже надає
те саме ім’я хоста в macOS і Windows.
Сервіси хоста також мають слухати на адресі, доступній із Docker:
lms server start --port 1234 --bind 0.0.0.0OLLAMA_HOST=0.0.0.0:11434 ollama serveЯкщо ви використовуєте власний файл Compose або команду docker run, додайте те саме
зіставлення хоста самостійно, наприклад
--add-host=host.docker.internal:host-gateway.
Бекенд Claude CLI у Docker
Офіційний образ Docker OpenClaw не встановлює Claude Code наперед. Установіть і увійдіть у Claude Code всередині користувача контейнера, який запускає OpenClaw, а потім збережіть домашній каталог цього контейнера, щоб оновлення образу не стерли бінарний файл або стан автентифікації Claude.
Для нових інсталяцій Docker увімкніть постійний том /home/node перед запуском
налаштування:
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"export OPENCLAW_HOME_VOLUME="openclaw_home"./scripts/docker/setup.shДля наявної інсталяції Docker спершу зупиніть стек і повторно завантажте поточні
значення Docker .env перед повторним запуском налаштування. Скрипт налаштування не читає
.env самостійно; він перезаписує .env з поточної оболонки та стандартних значень. Для
згенерованого .env виконайте:
set -a. ./.envset +aexport OPENCLAW_HOME_VOLUME="${OPENCLAW_HOME_VOLUME:-openclaw_home}"./scripts/docker/setup.shЯкщо ваш .env містить значення, які ваша оболонка не може завантажити, вручну повторно експортуйте
наявні значення, на які ви покладаєтеся, як-от OPENCLAW_IMAGE, порти, режим прив’язування,
користувацькі шляхи, OPENCLAW_EXTRA_MOUNTS, пісочницю та налаштування пропуску онбордингу.
Згенероване накладання монтує домашній том і для openclaw-gateway, і для
openclaw-cli.
Запускайте решту команд зі згенерованим накладанням Compose, щоб обидва сервіси
монтували збережений домашній каталог. Якщо ваше налаштування також використовує docker-compose.override.yml,
додайте його перед docker-compose.extra.yml.
Установіть Claude Code у цей збережений домашній каталог:
docker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ --entrypoint sh openclaw-cli -lc \ 'curl -fsSL https://claude.ai/install.sh | bash'Нативний інсталятор записує бінарний файл claude у
/home/node/.local/bin/claude. Вкажіть OpenClaw використовувати цей шлях контейнера:
docker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ openclaw-cli config set \ agents.defaults.cliBackends.claude-cli.command \ /home/node/.local/bin/claudeУвійдіть і перевірте зсередини того самого збереженого домашнього каталогу контейнера:
docker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ --entrypoint /home/node/.local/bin/claude openclaw-cli auth logindocker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ --entrypoint /home/node/.local/bin/claude openclaw-cli auth status --textdocker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ openclaw-cli models auth login \ --provider anthropic --method cli --set-defaultdocker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ openclaw-cli models list --provider anthropicПісля цього можна використовувати вбудований бекенд claude-cli:
docker compose -f docker-compose.yml -f docker-compose.extra.yml run --rm \ openclaw-cli agent \ --agent main \ --model claude-cli/claude-sonnet-4-6 \ --message "Say hello from Docker Claude CLI"OPENCLAW_HOME_VOLUME зберігає нативну інсталяцію Claude Code у
/home/node/.local/bin і /home/node/.local/share/claude, а також налаштування Claude Code
і стан автентифікації в /home/node/.claude та /home/node/.claude.json.
Зберігати лише /home/node/.openclaw недостатньо для повторного використання Claude CLI. Якщо
ви використовуєте OPENCLAW_EXTRA_MOUNTS замість домашнього тому, змонтуйте всі ці
шляхи Claude в обидва сервіси Docker.
Bonjour / mDNS
Мережа Docker bridge зазвичай ненадійно пересилає multicast Bonjour/mDNS
(224.0.0.251:5353). Тому вбудоване налаштування Compose за замовчуванням встановлює
OPENCLAW_DISABLE_BONJOUR=1, щоб Gateway не потрапляв у цикл аварійних перезапусків і не
перезапускав рекламування повторно, коли bridge відкидає multicast-трафік.
Використовуйте опублікований URL Gateway, Tailscale або wide-area DNS-SD для хостів Docker.
Встановлюйте OPENCLAW_DISABLE_BONJOUR=0 лише під час запуску з host networking, macvlan
або іншою мережею, де відомо, що multicast mDNS працює.
Підводні камені та усунення несправностей див. у виявленні Bonjour.
Сховище та збереження
Docker Compose bind-монтує OPENCLAW_CONFIG_DIR у /home/node/.openclaw,
OPENCLAW_WORKSPACE_DIR у /home/node/.openclaw/workspace, а
OPENCLAW_AUTH_PROFILE_SECRET_DIR у /home/node/.config/openclaw, тож ці
шляхи переживають заміну контейнера. Коли будь-яку змінну не встановлено, вбудований
docker-compose.yml повертається до шляхів під ${HOME} або /tmp, якщо самого HOME
також немає. Це не дає docker compose up виводити специфікацію тому з порожнім джерелом
у мінімальних середовищах.
Цей змонтований каталог конфігурації — місце, де OpenClaw зберігає:
openclaw.jsonдля конфігурації поведінкиagents/<agentId>/agent/auth-profiles.jsonдля збереженої OAuth/API-key автентифікації провайдера.envдля runtime-секретів на основі env, як-отOPENCLAW_GATEWAY_TOKEN
Каталог секретного ключа профілю автентифікації зберігає локальний ключ шифрування, який використовується для
матеріалу токенів профілю автентифікації на основі OAuth. Тримайте його разом зі станом вашого Docker-хоста,
але окремо від OPENCLAW_CONFIG_DIR.
Установлені завантажувані plugins зберігають стан своїх пакетів у змонтованому домашньому каталозі OpenClaw, тож записи встановлення plugin і корені пакетів переживають заміну контейнера. Запуск Gateway не генерує дерева залежностей вбудованих plugins.
Повні відомості про збереження в розгортаннях VM див. Docker VM Runtime - Що де зберігається.
Гарячі точки зростання диска: стежте за media/, файлами JSONL сесій, спільною
базою даних стану SQLite, коренями пакетів установлених plugins і ротаційними файловими логами
в /tmp/openclaw/.
Допоміжні засоби оболонки (необов’язково)
Для простішого щоденного керування Docker установіть ClawDock:
mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/clawdock/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.shecho 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrcЯкщо ви встановили ClawDock зі старішого raw-шляху scripts/shell-helpers/clawdock-helpers.sh, повторно виконайте команду встановлення вище, щоб ваш локальний допоміжний файл відстежував нове розташування.
Потім використовуйте clawdock-start, clawdock-stop, clawdock-dashboard тощо. Виконайте
clawdock-help, щоб побачити всі команди.
Повний посібник із допоміжних засобів див. у ClawDock.
Enable agent sandbox for Docker gateway
export OPENCLAW_SANDBOX=1./scripts/docker/setup.shКористувацький шлях до сокета (наприклад, rootless Docker):
export OPENCLAW_SANDBOX=1export OPENCLAW_DOCKER_SOCKET=/run/user/1000/docker.sock./scripts/docker/setup.shСкрипт монтує docker.sock лише після проходження передумов пісочниці. Якщо
налаштування пісочниці не може завершитися, скрипт скидає agents.defaults.sandbox.mode
до off. Ходи Codex у code-mode все ще обмежені Codex
workspace-write, поки пісочниця OpenClaw активна; не монтуйте
сокет Docker хоста в контейнери пісочниці агента.
Automation / CI (non-interactive)
Вимкніть виділення псевдо-TTY у Compose за допомогою -T:
docker compose run -T --rm openclaw-cli gateway probedocker compose run -T --rm openclaw-cli devices list --jsonShared-network security note
openclaw-cli використовує network_mode: "service:openclaw-gateway", щоб команди CLI
могли дістатися gateway через 127.0.0.1. Розглядайте це як спільну
межу довіри. Конфігурація compose скидає NET_RAW/NET_ADMIN і вмикає
no-new-privileges як для openclaw-gateway, так і для openclaw-cli.
Docker Desktop DNS failures in openclaw-cli
Деякі налаштування Docker Desktop не можуть виконувати DNS-пошуки зі shared-network
sidecar openclaw-cli після скидання NET_RAW, що проявляється як
EAI_AGAIN під час команд на основі npm, як-от openclaw plugins install.
Залишайте стандартний посилений compose-файл для звичайної роботи gateway. Наведене нижче
локальне перевизначення послаблює безпекову позицію контейнера CLI, відновлюючи
стандартні capabilities Docker, тому використовуйте його лише для одноразової команди CLI,
якій потрібен доступ до реєстру пакетів, а не як ваш стандартний виклик Compose:
printf '%s\n' \ 'services:' \ ' openclaw-cli:' \ ' cap_drop: !reset []' \ > docker-compose.cli-no-dropped-caps.local.yml docker compose -f docker-compose.yml -f docker-compose.cli-no-dropped-caps.local.yml run --rm openclaw-cli plugins install <package>Якщо ви вже створили довготривалий контейнер openclaw-cli, пересоздайте його
з тим самим перевизначенням. docker compose exec і docker exec не можуть
змінити Linux capabilities у вже створеному контейнері.
Permissions and EACCES
Образ працює як node (uid 1000). Якщо ви бачите помилки прав доступу для
/home/node/.openclaw, переконайтеся, що ваші bind mounts на хості належать uid 1000:
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspaceТа сама невідповідність може проявлятися як попередження plugin, наприклад
blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
з подальшим plugin present but blocked. Це означає, що uid процесу та власник
змонтованого каталогу plugin не збігаються. Надавайте перевагу запуску контейнера зі
стандартним uid 1000 і виправленню власника bind mount. Виконуйте chown
/path/to/openclaw-config/npm до root:root лише якщо навмисно запускаєте
OpenClaw як root довгостроково.
Faster rebuilds
Упорядкуйте Dockerfile так, щоб шари залежностей кешувалися. Це дає змогу уникнути повторного запуску
pnpm install, якщо lockfiles не змінюються:
FROM node:24-bookwormRUN curl -fsSL https://bun.sh/install | bashENV PATH="/root/.bun/bin:${PATH}"RUN corepack enableWORKDIR /appCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./COPY ui/package.json ./ui/package.jsonCOPY scripts ./scriptsRUN pnpm install --frozen-lockfileCOPY . .RUN pnpm buildRUN pnpm ui:installRUN pnpm ui:buildENV NODE_ENV=productionCMD ["node","dist/index.js"]Параметри контейнера для досвідчених користувачів
Стандартний образ насамперед орієнтований на безпеку й запускається як некореневий користувач node. Для
більш функціонального контейнера:
- Збережіть
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - Вбудуйте системні залежності:
export OPENCLAW_IMAGE_APT_PACKAGES="git curl jq" - Вбудуйте залежності Python:
export OPENCLAW_IMAGE_PIP_PACKAGES="requests==2.32.5 humanize==4.14.0" - Вбудуйте Playwright Chromium:
export OPENCLAW_INSTALL_BROWSER=1 - Або встановіть браузери Playwright у збережений том:
bash docker compose run --rm openclaw-cli \ node /app/node_modules/playwright-core/cli.js install chromium - Збережіть завантаження браузера: використовуйте
OPENCLAW_HOME_VOLUMEабоOPENCLAW_EXTRA_MOUNTS. OpenClaw автоматично виявляє керований Playwright Chromium з Docker-образу в Linux.
OpenAI Codex OAuth (Docker без графічного інтерфейсу)
Якщо в майстрі вибрати OpenAI Codex OAuth, він відкриє URL браузера. У Docker або середовищах без графічного інтерфейсу скопіюйте повну URL-адресу переспрямування, на яку ви потрапите, і вставте її назад у майстер, щоб завершити автентифікацію.
Метадані базового образу
Основний образ середовища виконання Docker використовує node:24-bookworm-slim і включає tini як init-процес точки входу (PID 1), щоб гарантувати прибирання zombie-процесів і коректну обробку сигналів у довготривалих контейнерах. Він публікує анотації базового образу OCI, зокрема org.opencontainers.image.base.name,
org.opencontainers.image.source та інші. Дайджест базового образу Node
оновлюється через PR Dependabot для базових Docker-образів; релізні збірки не запускають
шар оновлення дистрибутива. Див.
анотації образів OCI.
Запускаєте на VPS?
Див. Hetzner (Docker VPS) і середовище виконання Docker VM, щоб дізнатися про спільні кроки розгортання VM, зокрема вбудовування бінарних файлів, збереження даних та оновлення.
Пісочниця агента
Коли agents.defaults.sandbox увімкнено з бекендом Docker, Gateway
запускає виконання інструментів агента (оболонку, читання/запис файлів тощо) всередині ізольованих Docker-
контейнерів, тоді як сам Gateway залишається на хості. Це створює жорстку межу
навколо недовірених або багатокористувацьких сеансів агентів без контейнеризації всього
Gateway.
Область пісочниці може бути окремою для кожного агента (стандартно), кожного сеансу або спільною. Кожна область
отримує власний робочий простір, змонтований у /workspace. Також можна налаштувати
політики дозволу/заборони інструментів, ізоляцію мережі, обмеження ресурсів і браузерні
контейнери.
Повну конфігурацію, образи, нотатки щодо безпеки та профілі для кількох агентів див. тут:
- Пісочниця -- повний довідник із пісочниці
- OpenShell -- інтерактивний доступ оболонки до контейнерів пісочниці
- Пісочниця та інструменти для кількох агентів -- перевизначення для окремих агентів
Швидке ввімкнення
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}Зберіть стандартний образ пісочниці (з робочої копії джерельного коду):
scripts/sandbox-setup.shДля встановлень npm без робочої копії джерельного коду див. Пісочниця § Образи та налаштування з вбудованими командами docker build.
Усунення несправностей
Образ відсутній або контейнер пісочниці не запускається
Зберіть образ пісочниці за допомогою
scripts/sandbox-setup.sh
(робоча копія джерельного коду) або вбудованої команди docker build з Пісочниця § Образи та налаштування (встановлення npm),
або встановіть для agents.defaults.sandbox.docker.image ваш власний образ.
Контейнери автоматично створюються для кожного сеансу на вимогу.
Помилки дозволів у пісочниці
Установіть docker.user на UID:GID, що відповідає власнику змонтованого робочого простору,
або змініть власника теки робочого простору за допомогою chown.
Користувацькі інструменти не знайдено в пісочниці
OpenClaw запускає команди через sh -lc (оболонка входу), що зчитує
/etc/profile і може скинути PATH. Установіть docker.env.PATH, щоб додати на початок ваші
шляхи до користувацьких інструментів, або додайте сценарій у /etc/profile.d/ у вашому Dockerfile.
Збірку образу завершено через OOM-kill (код виходу 137)
VM потребує щонайменше 2 ГБ RAM. Використайте більший клас машини й повторіть спробу.
Потрібна авторизація або сполучення в Control UI
Отримайте свіже посилання на панель керування та схваліть пристрій браузера:
docker compose run --rm openclaw-cli dashboard --no-opendocker compose run --rm openclaw-cli devices listdocker compose run --rm openclaw-cli devices approve <requestId>Докладніше: панель керування, пристрої.
Ціль Gateway показує ws://172.x.x.x або помилки сполучення з Docker CLI
Скиньте режим Gateway і прив’язку:
docker compose run --rm openclaw-cli config set --batch-json '[{"path":"gateway.mode","value":"local"},{"path":"gateway.bind","value":"lan"}]'docker compose run --rm openclaw-cli devices list --url ws://127.0.0.1:18789Пов’язане
- Огляд встановлення — усі способи встановлення
- Podman — альтернатива Podman для Docker
- ClawDock — спільнотне налаштування Docker Compose
- Оновлення — підтримання OpenClaw в актуальному стані
- Конфігурація — конфігурація Gateway після встановлення