chore(i18n): refresh uk translations
This commit is contained in:
parent
388bbe5014
commit
ad2af3a818
@ -2,33 +2,33 @@
|
||||
read_when:
|
||||
- Вам потрібен контейнеризований Gateway замість локальних встановлень
|
||||
- Ви перевіряєте процес Docker
|
||||
summary: Необов’язкове налаштування та онбординг OpenClaw на основі Docker
|
||||
summary: Необов’язкове налаштування й онбординг OpenClaw на основі Docker
|
||||
title: Docker
|
||||
x-i18n:
|
||||
generated_at: "2026-04-28T22:58:33Z"
|
||||
generated_at: "2026-04-29T00:42:23Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 71027022ab9fe1c5a14aa67f0e3edabb0e2aa3c668752637caef49bab5a591de
|
||||
source_hash: c67a6351afb09961ff3b2e95a132acff7f33b02d3b67330d4608c46e3c18f63a
|
||||
source_path: install/docker.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Docker є **необов'язковим**. Використовуйте його лише якщо вам потрібен контейнеризований Gateway або потрібно перевірити Docker-процес.
|
||||
Docker є **необов’язковим**. Використовуйте його лише якщо вам потрібен контейнеризований Gateway або перевірка Docker-потоку.
|
||||
|
||||
## Чи підходить мені Docker?
|
||||
|
||||
- **Так**: вам потрібне ізольоване одноразове середовище Gateway або запуск OpenClaw на хості без локальних встановлень.
|
||||
- **Ні**: ви працюєте на власному комп'ютері й хочете лише найшвидший цикл розробки. Натомість використовуйте звичайний процес встановлення.
|
||||
- **Примітка щодо ізоляції**: стандартний бекенд ізоляції використовує Docker, коли ізоляцію ввімкнено, але ізоляцію вимкнено за замовчуванням і вона **не** вимагає запуску всього Gateway у Docker. Також доступні бекенди ізоляції SSH і OpenShell. Див. [Ізоляція](/uk/gateway/sandboxing).
|
||||
- **Так**: вам потрібне ізольоване, одноразове середовище Gateway або запуск OpenClaw на хості без локальних встановлень.
|
||||
- **Ні**: ви запускаєте на власній машині й просто хочете найшвидший цикл розробки. Натомість скористайтеся звичайним потоком встановлення.
|
||||
- **Примітка щодо ізоляції**: стандартний бекенд ізоляції використовує Docker, коли ізоляцію ввімкнено, але ізоляція вимкнена за замовчуванням і **не** потребує запуску всього Gateway у Docker. Також доступні бекенди ізоляції SSH і OpenShell. Див. [Ізоляція](/uk/gateway/sandboxing).
|
||||
|
||||
## Передумови
|
||||
|
||||
- Docker Desktop (або Docker Engine) + Docker Compose v2
|
||||
- Щонайменше 2 ГБ RAM для збирання образу (`pnpm install` може бути примусово завершено через OOM на хостах з 1 ГБ з кодом виходу 137)
|
||||
- Достатньо дискового простору для образів і журналів
|
||||
- Щонайменше 2 ГБ RAM для складання образу (`pnpm install` може бути завершено через OOM на хостах з 1 ГБ з кодом виходу 137)
|
||||
- Достатньо місця на диску для образів і журналів
|
||||
- Якщо запускаєте на VPS/публічному хості, перегляньте
|
||||
[Посилення безпеки для мережевого доступу](/uk/gateway/security),
|
||||
особливо політику Docker `DOCKER-USER` для брандмауера.
|
||||
особливо політику firewall Docker `DOCKER-USER`.
|
||||
|
||||
## Контейнеризований Gateway
|
||||
|
||||
@ -53,24 +53,24 @@ Docker є **необов'язковим**. Використовуйте його
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Завершіть онбординг">
|
||||
Скрипт налаштування автоматично запускає онбординг. Він:
|
||||
<Step title="Завершіть onboarding">
|
||||
Скрипт налаштування автоматично запускає onboarding. Він:
|
||||
|
||||
- запросить API-ключі провайдера
|
||||
- попросить API-ключі провайдера
|
||||
- згенерує токен Gateway і запише його в `.env`
|
||||
- запустить Gateway через Docker Compose
|
||||
|
||||
Під час налаштування онбординг перед запуском і записи конфігурації виконуються напряму через
|
||||
`openclaw-gateway`. `openclaw-cli` призначений для команд, які ви запускаєте після того,
|
||||
Під час налаштування onboarding перед стартом і записи конфігурації виконуються через
|
||||
`openclaw-gateway` напряму. `openclaw-cli` призначений для команд, які ви запускаєте після того,
|
||||
як контейнер Gateway уже існує.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Відкрийте Control UI">
|
||||
Відкрийте `http://127.0.0.1:18789/` у браузері й вставте налаштований
|
||||
Відкрийте `http://127.0.0.1:18789/` у браузері та вставте налаштований
|
||||
спільний секрет у Settings. Скрипт налаштування за замовчуванням записує токен у `.env`;
|
||||
якщо ви перемкнете конфігурацію контейнера на автентифікацію паролем, використовуйте натомість
|
||||
цей пароль.
|
||||
якщо ви перемкнете конфігурацію контейнера на автентифікацію паролем, використовуйте
|
||||
натомість цей пароль.
|
||||
|
||||
Потрібна URL-адреса ще раз?
|
||||
|
||||
@ -80,7 +80,7 @@ Docker є **необов'язковим**. Використовуйте його
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Налаштуйте канали (необов'язково)">
|
||||
<Step title="Налаштуйте канали (необов’язково)">
|
||||
Використовуйте контейнер CLI, щоб додати канали обміну повідомленнями:
|
||||
|
||||
```bash
|
||||
@ -99,9 +99,9 @@ Docker є **необов'язковим**. Використовуйте його
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### Ручний процес
|
||||
### Ручний потік
|
||||
|
||||
Якщо ви бажаєте запускати кожен крок самостійно замість використання скрипта налаштування:
|
||||
Якщо ви віддаєте перевагу самостійному запуску кожного кроку замість використання скрипта налаштування:
|
||||
|
||||
```bash
|
||||
docker build -t openclaw:local -f Dockerfile .
|
||||
@ -119,47 +119,47 @@ docker compose up -d openclaw-gateway
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
Оскільки `openclaw-cli` використовує простір імен мережі `openclaw-gateway`, це
|
||||
інструмент після запуску. Перед `docker compose up -d openclaw-gateway` запускайте онбординг
|
||||
Оскільки `openclaw-cli` спільно використовує мережевий простір імен `openclaw-gateway`, це
|
||||
інструмент після старту. Перед `docker compose up -d openclaw-gateway` запускайте onboarding
|
||||
і записи конфігурації під час налаштування через `openclaw-gateway` з
|
||||
`--no-deps --entrypoint node`.
|
||||
</Note>
|
||||
|
||||
### Змінні середовища
|
||||
|
||||
Скрипт налаштування приймає такі необов'язкові змінні середовища:
|
||||
Скрипт налаштування приймає такі необов’язкові змінні середовища:
|
||||
|
||||
| Змінна | Призначення |
|
||||
| ----------------------------------------- | --------------------------------------------------------------- |
|
||||
| `OPENCLAW_IMAGE` | Використати віддалений образ замість локального збирання |
|
||||
| `OPENCLAW_DOCKER_APT_PACKAGES` | Встановити додаткові пакети apt під час збирання (через пробіл) |
|
||||
| `OPENCLAW_EXTENSIONS` | Попередньо встановити залежності Plugin під час збирання (назви через пробіл) |
|
||||
| `OPENCLAW_IMAGE` | Використати віддалений образ замість локального складання |
|
||||
| `OPENCLAW_DOCKER_APT_PACKAGES` | Встановити додаткові пакунки apt під час складання (розділені пробілами) |
|
||||
| `OPENCLAW_EXTENSIONS` | Попередньо встановити залежності Plugin під час складання (імена, розділені пробілами) |
|
||||
| `OPENCLAW_EXTRA_MOUNTS` | Додаткові bind mounts хоста (розділені комами `source:target[:opts]`) |
|
||||
| `OPENCLAW_HOME_VOLUME` | Зберігати `/home/node` в іменованому томі Docker |
|
||||
| `OPENCLAW_PLUGIN_STAGE_DIR` | Шлях контейнера для згенерованих залежностей і дзеркал bundled Plugin |
|
||||
| `OPENCLAW_PLUGIN_STAGE_DIR` | Шлях контейнера для згенерованих залежностей bundled Plugin і дзеркал |
|
||||
| `OPENCLAW_SANDBOX` | Увімкнути bootstrap ізоляції (`1`, `true`, `yes`, `on`) |
|
||||
| `OPENCLAW_SKIP_ONBOARDING` | Пропустити інтерактивний крок онбордингу (`1`, `true`, `yes`, `on`) |
|
||||
| `OPENCLAW_SKIP_ONBOARDING` | Пропустити інтерактивний крок onboarding (`1`, `true`, `yes`, `on`) |
|
||||
| `OPENCLAW_DOCKER_SOCKET` | Перевизначити шлях до сокета Docker |
|
||||
| `OPENCLAW_DISABLE_BONJOUR` | Вимкнути рекламу Bonjour/mDNS (за замовчуванням `1` для Docker) |
|
||||
| `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS` | Вимкнути bind-mount overlays джерельного коду bundled Plugin |
|
||||
| `OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS` | Вимкнути накладення bind-mount для вихідного коду bundled Plugin |
|
||||
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Спільна кінцева точка колектора OTLP/HTTP для експорту OpenTelemetry |
|
||||
| `OTEL_EXPORTER_OTLP_*_ENDPOINT` | Сигнально-специфічні кінцеві точки OTLP для трас, метрик або журналів |
|
||||
| `OTEL_EXPORTER_OTLP_*_ENDPOINT` | Кінцеві точки OTLP для окремих сигналів: трас, метрик або журналів |
|
||||
| `OTEL_EXPORTER_OTLP_PROTOCOL` | Перевизначення протоколу OTLP. Наразі підтримується лише `http/protobuf` |
|
||||
| `OTEL_SERVICE_NAME` | Назва сервісу, що використовується для ресурсів OpenTelemetry |
|
||||
| `OTEL_SEMCONV_STABILITY_OPT_IN` | Увімкнути найновіші експериментальні семантичні атрибути GenAI |
|
||||
| `OPENCLAW_OTEL_PRELOADED` | Пропустити запуск другого OpenTelemetry SDK, коли один уже попередньо завантажено |
|
||||
| `OPENCLAW_OTEL_PRELOADED` | Пропустити запуск другого OpenTelemetry SDK, коли один уже попередньо завантажений |
|
||||
|
||||
Мейнтейнери можуть перевіряти джерельний код bundled Plugin проти упакованого образу, монтувавши
|
||||
один каталог джерельного коду Plugin поверх його упакованого шляху джерельного коду, наприклад
|
||||
Maintainers можуть тестувати вихідний код bundled Plugin проти упакованого образу, змонтувавши
|
||||
один каталог вихідного коду Plugin поверх його упакованого шляху вихідного коду, наприклад
|
||||
`OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro`.
|
||||
Цей змонтований каталог джерельного коду перевизначає відповідний скомпільований
|
||||
bundle `/app/dist/extensions/synology-chat` для того самого id Plugin.
|
||||
Цей змонтований каталог вихідного коду перевизначає відповідний скомпільований bundle
|
||||
`/app/dist/extensions/synology-chat` для того самого Plugin id.
|
||||
|
||||
### Спостережуваність
|
||||
|
||||
Експорт OpenTelemetry є вихідним з контейнера Gateway до вашого
|
||||
колектора OTLP. Він не потребує опублікованого порту Docker. Якщо ви збираєте образ
|
||||
локально й хочете, щоб bundled exporter OpenTelemetry був доступний всередині образу,
|
||||
Експорт OpenTelemetry є вихідним з контейнера Gateway до вашого колектора OTLP.
|
||||
Він не потребує опублікованого порту Docker. Якщо ви збираєте образ
|
||||
локально й хочете, щоб bundled експортер OpenTelemetry був доступний усередині образу,
|
||||
додайте його runtime-залежності:
|
||||
|
||||
```bash
|
||||
@ -169,41 +169,41 @@ export OTEL_SERVICE_NAME="openclaw-gateway"
|
||||
./scripts/docker/setup.sh
|
||||
```
|
||||
|
||||
Офіційний release-образ Docker OpenClaw містить джерельний код bundled
|
||||
Офіційний Docker-образ релізу OpenClaw містить вихідний код bundled
|
||||
Plugin `diagnostics-otel`. Залежно від образу та стану кешу,
|
||||
Gateway все ще може підготувати локальні для Plugin runtime-залежності OpenTelemetry під час
|
||||
першого ввімкнення Plugin, тому дозвольте цьому першому запуску дістатися до реєстру пакетів
|
||||
або попередньо прогрійте образ у вашій release-лінії. Щоб увімкнути експорт, дозвольте й
|
||||
увімкніть Plugin `diagnostics-otel` у конфігурації, потім установіть
|
||||
`diagnostics.otel.enabled=true` або використайте приклад конфігурації в
|
||||
Gateway все ще може підготувати локальні runtime-залежності OpenTelemetry для Plugin
|
||||
під час першого ввімкнення Plugin, тому дозвольте першому завантаженню дістатися до реєстру
|
||||
пакунків або попередньо прогрійте образ у вашій релізній lane. Щоб увімкнути експорт, дозвольте та
|
||||
ввімкніть Plugin `diagnostics-otel` у конфігурації, потім задайте
|
||||
`diagnostics.otel.enabled=true` або скористайтеся прикладом конфігурації в
|
||||
[Експорт OpenTelemetry](/uk/gateway/opentelemetry). Заголовки автентифікації колектора
|
||||
налаштовуються через `diagnostics.otel.headers`, а не через змінні середовища Docker.
|
||||
|
||||
Метрики Prometheus використовують уже опублікований порт Gateway. Увімкніть
|
||||
Plugin `diagnostics-prometheus`, потім виконуйте scrape:
|
||||
Plugin `diagnostics-prometheus`, потім виконайте scrape:
|
||||
|
||||
```text
|
||||
http://<gateway-host>:18789/api/diagnostics/prometheus
|
||||
```
|
||||
|
||||
Маршрут захищено автентифікацією Gateway. Не відкривайте окремий
|
||||
Маршрут захищений автентифікацією Gateway. Не відкривайте окремий
|
||||
публічний порт `/metrics` або неавтентифікований шлях reverse-proxy. Див.
|
||||
[Метрики Prometheus](/uk/gateway/prometheus).
|
||||
|
||||
### Перевірки стану
|
||||
|
||||
Кінцеві точки probe контейнера (автентифікація не потрібна):
|
||||
Кінцеві точки probes контейнера (автентифікація не потрібна):
|
||||
|
||||
```bash
|
||||
curl -fsS http://127.0.0.1:18789/healthz # liveness
|
||||
curl -fsS http://127.0.0.1:18789/readyz # readiness
|
||||
```
|
||||
|
||||
Образ Docker містить вбудований `HEALTHCHECK`, який звертається до `/healthz`.
|
||||
Якщо перевірки постійно не проходять, Docker позначає контейнер як `unhealthy`, а
|
||||
Docker-образ містить вбудований `HEALTHCHECK`, який звертається до `/healthz`.
|
||||
Якщо перевірки продовжують падати, Docker позначає контейнер як `unhealthy`, а
|
||||
системи оркестрації можуть перезапустити або замінити його.
|
||||
|
||||
Автентифікований глибокий знімок стану:
|
||||
Автентифікований глибокий snapshot стану:
|
||||
|
||||
```bash
|
||||
docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"
|
||||
@ -212,11 +212,11 @@ docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLA
|
||||
### LAN проти loopback
|
||||
|
||||
`scripts/docker/setup.sh` за замовчуванням задає `OPENCLAW_GATEWAY_BIND=lan`, щоб доступ хоста до
|
||||
`http://127.0.0.1:18789` працював із публікацією порту Docker.
|
||||
`http://127.0.0.1:18789` працював з публікацією портів Docker.
|
||||
|
||||
- `lan` (за замовчуванням): браузер хоста й CLI хоста можуть звертатися до опублікованого порту Gateway.
|
||||
- `loopback`: лише процеси всередині простору імен мережі контейнера можуть звертатися
|
||||
до Gateway напряму.
|
||||
- `loopback`: лише процеси всередині мережевого простору імен контейнера можуть
|
||||
звертатися до Gateway напряму.
|
||||
|
||||
<Note>
|
||||
Використовуйте значення режиму bind у `gateway.bind` (`lan` / `loopback` / `custom` /
|
||||
@ -225,21 +225,21 @@ docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLA
|
||||
|
||||
### Локальні провайдери хоста
|
||||
|
||||
Коли OpenClaw працює в Docker, `127.0.0.1` всередині контейнера є самим контейнером,
|
||||
Коли OpenClaw працює в Docker, `127.0.0.1` усередині контейнера є самим контейнером,
|
||||
а не вашою хост-машиною. Використовуйте `host.docker.internal` для AI-провайдерів, які
|
||||
працюють на хості:
|
||||
|
||||
| Провайдер | Стандартна URL-адреса хоста | URL-адреса налаштування Docker |
|
||||
| --------- | --------------------------- | ------------------------------ |
|
||||
| Провайдер | Стандартна 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` |
|
||||
|
||||
Bundled налаштування Docker використовує ці URL-адреси хоста як стандартні значення онбордингу
|
||||
LM Studio та Ollama, а `docker-compose.yml` зіставляє `host.docker.internal` із
|
||||
Bundled налаштування Docker використовує ці URL-адреси хоста як стандартні значення onboarding
|
||||
для LM Studio та Ollama, а `docker-compose.yml` відображає `host.docker.internal` на
|
||||
host gateway Docker для Linux Docker Engine. Docker Desktop уже надає
|
||||
те саме ім'я хоста на macOS і Windows.
|
||||
таке саме ім’я хоста на macOS і Windows.
|
||||
|
||||
Сервіси хоста також мають слухати адресу, доступну з Docker:
|
||||
Сервіси хоста також мають слухати на адресі, доступній з Docker:
|
||||
|
||||
```bash
|
||||
lms server start --port 1234 --bind 0.0.0.0
|
||||
@ -252,71 +252,75 @@ OLLAMA_HOST=0.0.0.0:11434 ollama serve
|
||||
|
||||
### Bonjour / mDNS
|
||||
|
||||
Bridge-мережа Docker зазвичай ненадійно пересилає multicast Bonjour/mDNS
|
||||
(`224.0.0.251:5353`). Тому bundled налаштування Compose за замовчуванням задає
|
||||
`OPENCLAW_DISABLE_BONJOUR=1`, щоб Gateway не потрапляв у crash-loop або не перезапускав
|
||||
Мережа Docker bridge зазвичай не пересилає multicast Bonjour/mDNS
|
||||
(`224.0.0.251:5353`) надійно. Тому bundled налаштування Compose за замовчуванням задає
|
||||
`OPENCLAW_DISABLE_BONJOUR=1`, щоб Gateway не потрапляв у crash-loop і не перезапускав
|
||||
рекламу повторно, коли bridge відкидає multicast-трафік.
|
||||
|
||||
Для Docker-хостів використовуйте опубліковану URL-адресу Gateway, Tailscale або wide-area DNS-SD.
|
||||
Установлюйте `OPENCLAW_DISABLE_BONJOUR=0` лише під час запуску з host networking, macvlan
|
||||
Використовуйте опубліковану URL-адресу Gateway, Tailscale або wide-area DNS-SD для Docker-хостів.
|
||||
Задавайте `OPENCLAW_DISABLE_BONJOUR=0` лише під час запуску з host networking, macvlan
|
||||
або іншою мережею, де multicast mDNS гарантовано працює.
|
||||
|
||||
Підводні камені й усунення несправностей див. у [Виявлення Bonjour](/uk/gateway/bonjour).
|
||||
Про нюанси й усунення неполадок див. [Виявлення Bonjour](/uk/gateway/bonjour).
|
||||
|
||||
### Сховище та сталість
|
||||
### Сховище та збереження даних
|
||||
|
||||
Docker Compose bind-mounts `OPENCLAW_CONFIG_DIR` до `/home/node/.openclaw` і
|
||||
`OPENCLAW_WORKSPACE_DIR` до `/home/node/.openclaw/workspace`, тому ці шляхи
|
||||
зберігаються після заміни контейнера.
|
||||
зберігаються після заміни контейнера. Коли будь-яка зі змінних не задана, bundled
|
||||
`docker-compose.yml` повертається до `${HOME}/.openclaw` (і
|
||||
`${HOME}/.openclaw/workspace` для монтування workspace) або до `/tmp/.openclaw`,
|
||||
коли сам `HOME` також відсутній. Це не дає `docker compose up`
|
||||
створювати специфікацію тому з порожнім source у мінімальних середовищах.
|
||||
|
||||
У цьому змонтованому каталозі конфігурації OpenClaw зберігає:
|
||||
|
||||
- `openclaw.json` для конфігурації поведінки
|
||||
- `agents/<agentId>/agent/auth-profiles.json` для збереженої OAuth/API-key автентифікації провайдера
|
||||
- `.env` для runtime-секретів із середовища, таких як `OPENCLAW_GATEWAY_TOKEN`
|
||||
- `agents/<agentId>/agent/auth-profiles.json` для збереженої автентифікації провайдерів OAuth/API-key
|
||||
- `.env` для runtime-секретів на основі env, таких як `OPENCLAW_GATEWAY_TOKEN`
|
||||
|
||||
Bundled runtime-залежності Plugin і дзеркальовані runtime-файли є згенерованим
|
||||
станом, а не користувацькою конфігурацією. Compose зберігає їх в іменованому томі Docker
|
||||
`openclaw-plugin-runtime-deps`, змонтованому в
|
||||
`/var/lib/openclaw/plugin-runtime-deps`. Винесення цього дерева з великою кількістю змін за межі
|
||||
bind mount конфігурації хоста запобігає повільним файловим операціям Docker Desktop/WSL і застарілим
|
||||
дескрипторам Windows під час холодного запуску Gateway.
|
||||
Bundled plugin runtime dependencies and mirrored runtime files are generated
|
||||
state, not user config. Compose stores them in the named Docker volume
|
||||
`openclaw-plugin-runtime-deps` mounted at
|
||||
`/var/lib/openclaw/plugin-runtime-deps`. Keeping that high-churn tree out of the
|
||||
host config bind mount avoids slow Docker Desktop/WSL file operations and stale
|
||||
Windows handles during cold Gateway startup.
|
||||
|
||||
Стандартний файл Compose задає `OPENCLAW_PLUGIN_STAGE_DIR` на цей шлях як для
|
||||
`openclaw-gateway`, так і для `openclaw-cli`, тому `openclaw doctor --fix`, команди
|
||||
входу/налаштування каналів і запуск Gateway використовують той самий згенерований
|
||||
том середовища виконання.
|
||||
The default Compose file sets `OPENCLAW_PLUGIN_STAGE_DIR` to that path for both
|
||||
`openclaw-gateway` and `openclaw-cli`, so `openclaw doctor --fix`, channel
|
||||
login/setup commands, and Gateway startup all use the same generated runtime
|
||||
volume.
|
||||
|
||||
Повні відомості про сталість даних у розгортаннях VM див.
|
||||
[Середовище виконання Docker VM - що де зберігається](/uk/install/docker-vm-runtime#what-persists-where).
|
||||
For full persistence details on VM deployments, see
|
||||
[Docker VM Runtime - What persists where](/uk/install/docker-vm-runtime#what-persists-where).
|
||||
|
||||
**Гарячі точки зростання диска:** стежте за `media/`, файлами JSONL сесій, `cron/runs/*.jsonl`,
|
||||
томом Docker `openclaw-plugin-runtime-deps` і ротаційними файловими журналами в
|
||||
**Disk growth hotspots:** watch `media/`, session JSONL files, `cron/runs/*.jsonl`,
|
||||
the `openclaw-plugin-runtime-deps` Docker volume, and rolling file logs under
|
||||
`/tmp/openclaw/`.
|
||||
|
||||
### Допоміжні shell-скрипти (необов'язково)
|
||||
### Shell helpers (optional)
|
||||
|
||||
Для простішого щоденного керування Docker встановіть `ClawDock`:
|
||||
For easier day-to-day Docker management, install `ClawDock`:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/clawdock/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh
|
||||
echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
|
||||
```
|
||||
|
||||
Якщо ви встановили ClawDock зі старого raw-шляху `scripts/shell-helpers/clawdock-helpers.sh`, повторно виконайте наведену вище команду встановлення, щоб ваш локальний допоміжний файл відстежував нове розташування.
|
||||
If you installed ClawDock from the older `scripts/shell-helpers/clawdock-helpers.sh` raw path, rerun the install command above so your local helper file tracks the new location.
|
||||
|
||||
Потім використовуйте `clawdock-start`, `clawdock-stop`, `clawdock-dashboard` тощо. Запустіть
|
||||
`clawdock-help`, щоб переглянути всі команди.
|
||||
Повний посібник із допоміжних скриптів див. у [ClawDock](/uk/install/clawdock).
|
||||
Then use `clawdock-start`, `clawdock-stop`, `clawdock-dashboard`, etc. Run
|
||||
`clawdock-help` for all commands.
|
||||
See [ClawDock](/uk/install/clawdock) for the full helper guide.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Увімкнути пісочницю агента для Docker gateway">
|
||||
<Accordion title="Enable agent sandbox for Docker gateway">
|
||||
```bash
|
||||
export OPENCLAW_SANDBOX=1
|
||||
./scripts/docker/setup.sh
|
||||
```
|
||||
|
||||
Власний шлях до сокета (наприклад, rootless Docker):
|
||||
Custom socket path (e.g. rootless Docker):
|
||||
|
||||
```bash
|
||||
export OPENCLAW_SANDBOX=1
|
||||
@ -324,14 +328,14 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
|
||||
./scripts/docker/setup.sh
|
||||
```
|
||||
|
||||
Скрипт монтує `docker.sock` лише після успішної перевірки передумов пісочниці. Якщо
|
||||
налаштування пісочниці не може завершитися, скрипт скидає `agents.defaults.sandbox.mode`
|
||||
на `off`.
|
||||
The script mounts `docker.sock` only after sandbox prerequisites pass. If
|
||||
sandbox setup cannot complete, the script resets `agents.defaults.sandbox.mode`
|
||||
to `off`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Автоматизація / CI (неінтерактивно)">
|
||||
Вимкніть виділення псевдо-TTY Compose за допомогою `-T`:
|
||||
<Accordion title="Automation / CI (non-interactive)">
|
||||
Disable Compose pseudo-TTY allocation with `-T`:
|
||||
|
||||
```bash
|
||||
docker compose run -T --rm openclaw-cli gateway probe
|
||||
@ -340,16 +344,16 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Примітка щодо безпеки спільної мережі">
|
||||
`openclaw-cli` використовує `network_mode: "service:openclaw-gateway"`, щоб команди CLI
|
||||
могли звертатися до gateway через `127.0.0.1`. Розглядайте це як спільну
|
||||
межу довіри. Конфігурація compose скидає `NET_RAW`/`NET_ADMIN` і вмикає
|
||||
`no-new-privileges` для `openclaw-cli`.
|
||||
<Accordion title="Shared-network security note">
|
||||
`openclaw-cli` uses `network_mode: "service:openclaw-gateway"` so CLI
|
||||
commands can reach the gateway over `127.0.0.1`. Treat this as a shared
|
||||
trust boundary. The compose config drops `NET_RAW`/`NET_ADMIN` and enables
|
||||
`no-new-privileges` on `openclaw-cli`.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Дозволи та EACCES">
|
||||
Образ запускається як `node` (uid 1000). Якщо ви бачите помилки дозволів для
|
||||
`/home/node/.openclaw`, переконайтеся, що bind-монтування на хості належать uid 1000:
|
||||
<Accordion title="Permissions and EACCES">
|
||||
The image runs as `node` (uid 1000). If you see permission errors on
|
||||
`/home/node/.openclaw`, make sure your host bind mounts are owned by uid 1000:
|
||||
|
||||
```bash
|
||||
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspace
|
||||
@ -357,9 +361,9 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Швидші перебудови">
|
||||
Упорядкуйте Dockerfile так, щоб шари залежностей кешувалися. Це дає змогу не запускати
|
||||
`pnpm install` повторно, якщо lock-файли не змінилися:
|
||||
<Accordion title="Faster rebuilds">
|
||||
Order your Dockerfile so dependency layers are cached. This avoids re-running
|
||||
`pnpm install` unless lockfiles change:
|
||||
|
||||
```dockerfile
|
||||
FROM node:24-bookworm
|
||||
@ -381,65 +385,65 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Параметри контейнера для досвідчених користувачів">
|
||||
Стандартний образ орієнтований передусім на безпеку й запускається як непривілейований `node`. Для
|
||||
функціональнішого контейнера:
|
||||
<Accordion title="Power-user container options">
|
||||
The default image is security-first and runs as non-root `node`. For a more
|
||||
full-featured container:
|
||||
|
||||
1. **Зберігайте `/home/node` стало**: `export OPENCLAW_HOME_VOLUME="openclaw_home"`
|
||||
2. **Вбудуйте системні залежності**: `export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq"`
|
||||
3. **Установіть браузери Playwright**:
|
||||
1. **Persist `/home/node`**: `export OPENCLAW_HOME_VOLUME="openclaw_home"`
|
||||
2. **Bake system deps**: `export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq"`
|
||||
3. **Install Playwright browsers**:
|
||||
```bash
|
||||
docker compose run --rm openclaw-cli \
|
||||
node /app/node_modules/playwright-core/cli.js install chromium
|
||||
```
|
||||
4. **Зберігайте завантаження браузерів стало**: задайте
|
||||
`PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright` і використовуйте
|
||||
`OPENCLAW_HOME_VOLUME` або `OPENCLAW_EXTRA_MOUNTS`.
|
||||
4. **Persist browser downloads**: set
|
||||
`PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright` and use
|
||||
`OPENCLAW_HOME_VOLUME` or `OPENCLAW_EXTRA_MOUNTS`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="OpenAI Codex OAuth (headless Docker)">
|
||||
Якщо ви виберете OpenAI Codex OAuth у майстрі, він відкриє URL браузера. У
|
||||
Docker або headless-налаштуваннях скопіюйте повну URL-адресу перенаправлення, на яку ви потрапите, і вставте
|
||||
її назад у майстер, щоб завершити автентифікацію.
|
||||
If you pick OpenAI Codex OAuth in the wizard, it opens a browser URL. In
|
||||
Docker or headless setups, copy the full redirect URL you land on and paste
|
||||
it back into the wizard to finish auth.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Метадані базового образу">
|
||||
Основний Docker-образ середовища виконання використовує `node:24-bookworm-slim` і публікує OCI
|
||||
анотації базового образу, зокрема `org.opencontainers.image.base.name`,
|
||||
`org.opencontainers.image.source` та інші. Дайджест базового образу Node
|
||||
оновлюється через PR Dependabot для базових Docker-образів; release-збірки не запускають
|
||||
шар оновлення дистрибутива. Див.
|
||||
[Анотації OCI-образів](https://github.com/opencontainers/image-spec/blob/main/annotations.md).
|
||||
<Accordion title="Base image metadata">
|
||||
The main Docker runtime image uses `node:24-bookworm-slim` and publishes OCI
|
||||
base-image annotations including `org.opencontainers.image.base.name`,
|
||||
`org.opencontainers.image.source`, and others. The Node base digest is
|
||||
refreshed through Dependabot Docker base-image PRs; release builds do not run
|
||||
a distro upgrade layer. See
|
||||
[OCI image annotations](https://github.com/opencontainers/image-spec/blob/main/annotations.md).
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
### Запускаєте на VPS?
|
||||
### Running on a VPS?
|
||||
|
||||
Див. [Hetzner (Docker VPS)](/uk/install/hetzner) і
|
||||
[Середовище виконання Docker VM](/uk/install/docker-vm-runtime) щодо спільних кроків розгортання VM,
|
||||
зокрема вбудовування бінарних файлів, сталості даних і оновлень.
|
||||
See [Hetzner (Docker VPS)](/uk/install/hetzner) and
|
||||
[Docker VM Runtime](/uk/install/docker-vm-runtime) for shared VM deployment steps
|
||||
including binary baking, persistence, and updates.
|
||||
|
||||
## Пісочниця агента
|
||||
## Agent sandbox
|
||||
|
||||
Коли `agents.defaults.sandbox` увімкнено з бекендом Docker, gateway
|
||||
запускає виконання інструментів агента (shell, читання/запис файлів тощо) в ізольованих Docker
|
||||
контейнерах, тоді як сам gateway залишається на хості. Це створює жорстку межу
|
||||
навколо ненадійних або багатокористувацьких сесій агентів без контейнеризації всього
|
||||
When `agents.defaults.sandbox` is enabled with the Docker backend, the gateway
|
||||
runs agent tool execution (shell, file read/write, etc.) inside isolated Docker
|
||||
containers while the gateway itself stays on the host. This gives you a hard wall
|
||||
around untrusted or multi-tenant agent sessions without containerizing the entire
|
||||
gateway.
|
||||
|
||||
Область пісочниці може бути для окремого агента (стандартно), для окремої сесії або спільною. Кожна область
|
||||
отримує власний робочий простір, змонтований у `/workspace`. Також можна налаштувати
|
||||
політики дозволу/заборони інструментів, ізоляцію мережі, обмеження ресурсів і браузерні
|
||||
контейнери.
|
||||
Sandbox scope can be per-agent (default), per-session, or shared. Each scope
|
||||
gets its own workspace mounted at `/workspace`. You can also configure
|
||||
allow/deny tool policies, network isolation, resource limits, and browser
|
||||
containers.
|
||||
|
||||
Повну конфігурацію, образи, примітки щодо безпеки та профілі для кількох агентів див.:
|
||||
For full configuration, images, security notes, and multi-agent profiles, see:
|
||||
|
||||
- [Пісочниця](/uk/gateway/sandboxing) -- повний довідник із пісочниці
|
||||
- [OpenShell](/uk/gateway/openshell) -- інтерактивний shell-доступ до контейнерів пісочниці
|
||||
- [Пісочниця та інструменти для кількох агентів](/uk/tools/multi-agent-sandbox-tools) -- перевизначення для окремих агентів
|
||||
- [Sandboxing](/uk/gateway/sandboxing) -- complete sandbox reference
|
||||
- [OpenShell](/uk/gateway/openshell) -- interactive shell access to sandbox containers
|
||||
- [Multi-Agent Sandbox and Tools](/uk/tools/multi-agent-sandbox-tools) -- per-agent overrides
|
||||
|
||||
### Швидке ввімкнення
|
||||
### Quick enable
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -454,39 +458,39 @@ gateway.
|
||||
}
|
||||
```
|
||||
|
||||
Зберіть стандартний образ пісочниці:
|
||||
Build the default sandbox image:
|
||||
|
||||
```bash
|
||||
scripts/sandbox-setup.sh
|
||||
```
|
||||
|
||||
## Усунення неполадок
|
||||
## Troubleshooting
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Образ відсутній або контейнер пісочниці не запускається">
|
||||
Зберіть образ пісочниці за допомогою
|
||||
<Accordion title="Image missing or sandbox container not starting">
|
||||
Build the sandbox image with
|
||||
[`scripts/sandbox-setup.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/sandbox-setup.sh)
|
||||
або задайте `agents.defaults.sandbox.docker.image` на ваш власний образ.
|
||||
Контейнери автоматично створюються для кожної сесії на вимогу.
|
||||
or set `agents.defaults.sandbox.docker.image` to your custom image.
|
||||
Containers are auto-created per session on demand.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Помилки дозволів у пісочниці">
|
||||
Установіть `docker.user` на UID:GID, що відповідає власнику змонтованого робочого простору,
|
||||
або змініть власника папки робочого простору за допомогою chown.
|
||||
<Accordion title="Permission errors in sandbox">
|
||||
Set `docker.user` to a UID:GID that matches your mounted workspace ownership,
|
||||
or chown the workspace folder.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Власні інструменти не знайдено в пісочниці">
|
||||
OpenClaw запускає команди через `sh -lc` (login shell), який зчитує
|
||||
`/etc/profile` і може скидати PATH. Задайте `docker.env.PATH`, щоб додати на початок ваші
|
||||
власні шляхи до інструментів, або додайте скрипт у `/etc/profile.d/` у вашому Dockerfile.
|
||||
<Accordion title="Custom tools not found in sandbox">
|
||||
OpenClaw runs commands with `sh -lc` (login shell), which sources
|
||||
`/etc/profile` and may reset PATH. Set `docker.env.PATH` to prepend your
|
||||
custom tool paths, or add a script under `/etc/profile.d/` in your Dockerfile.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="OOM-killed під час збирання образу (exit 137)">
|
||||
VM потребує щонайменше 2 GB RAM. Використайте більший клас машини й повторіть спробу.
|
||||
<Accordion title="OOM-killed during image build (exit 137)">
|
||||
The VM needs at least 2 GB RAM. Use a larger machine class and retry.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Неавторизовано або потрібне сполучення в інтерфейсі керування">
|
||||
Отримайте свіже посилання на панель керування й схваліть пристрій браузера:
|
||||
<Accordion title="Unauthorized or pairing required in Control UI">
|
||||
Fetch a fresh dashboard link and approve the browser device:
|
||||
|
||||
```bash
|
||||
docker compose run --rm openclaw-cli dashboard --no-open
|
||||
@ -494,12 +498,12 @@ scripts/sandbox-setup.sh
|
||||
docker compose run --rm openclaw-cli devices approve <requestId>
|
||||
```
|
||||
|
||||
Докладніше: [Панель керування](/uk/web/dashboard), [Пристрої](/uk/cli/devices).
|
||||
More detail: [Dashboard](/uk/web/dashboard), [Devices](/uk/cli/devices).
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Ціль Gateway показує ws://172.x.x.x або помилки сполучення з Docker CLI">
|
||||
Скиньте режим gateway і прив'язку:
|
||||
<Accordion title="Gateway target shows ws://172.x.x.x or pairing errors from Docker CLI">
|
||||
Reset gateway mode and bind:
|
||||
|
||||
```bash
|
||||
docker compose run --rm openclaw-cli config set --batch-json '[{"path":"gateway.mode","value":"local"},{"path":"gateway.bind","value":"lan"}]'
|
||||
@ -509,10 +513,10 @@ scripts/sandbox-setup.sh
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Пов'язане
|
||||
## Related
|
||||
|
||||
- [Огляд встановлення](/uk/install) — усі способи встановлення
|
||||
- [Podman](/uk/install/podman) — альтернатива Podman для Docker
|
||||
- [ClawDock](/uk/install/clawdock) — спільнотне налаштування Docker Compose
|
||||
- [Оновлення](/uk/install/updating) — підтримання OpenClaw в актуальному стані
|
||||
- [Конфігурація](/uk/gateway/configuration) — конфігурація gateway після встановлення
|
||||
- [Install Overview](/uk/install) — all installation methods
|
||||
- [Podman](/uk/install/podman) — Podman alternative to Docker
|
||||
- [ClawDock](/uk/install/clawdock) — Docker Compose community setup
|
||||
- [Updating](/uk/install/updating) — keeping OpenClaw up to date
|
||||
- [Configuration](/uk/gateway/configuration) — gateway configuration after install
|
||||
|
||||
Loading…
Reference in New Issue
Block a user