chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-26 05:00:51 +00:00
parent cba08d7387
commit 3bbbf41b85
2 changed files with 254 additions and 175 deletions

View File

@ -2,28 +2,28 @@
read_when:
- Налагодження проблем виявлення Bonjour на macOS/iOS
- Зміна типів сервісів mDNS, записів TXT або UX виявлення
summary: Виявлення та налагодження Bonjour/mDNS (маяки Gateway, клієнти та поширені режими відмов)
title: виявлення Bonjour
summary: Виявлення та налагодження Bonjour/mDNS (маяки Gateway, клієнти та типові режими відмови)
title: Виявлення Bonjour
x-i18n:
generated_at: "2026-04-26T04:54:58Z"
generated_at: "2026-04-26T04:59:44Z"
model: gpt-5.4
provider: openai
source_hash: 625d4fbf8fe46938ee42f267d2bdabe6ab9c2766d6b2debc30de3c43f0de724c
source_hash: b055021bdcd92740934823dea2acf758c6ec991a15c0a315426dc359a7eea093
source_path: gateway/bonjour.md
workflow: 15
---
# Виявлення Bonjour / mDNS
OpenClaw використовує Bonjour (mDNS / DNSSD) для виявлення активного Gateway (кінцевої точки WebSocket).
Багатоадресний перегляд `local.` — це **лише зручність у межах LAN**. Вбудований Plugin `bonjour`
відповідає за рекламу в LAN і ввімкнений за замовчуванням. Для виявлення між різними мережами
той самий маяк також може публікуватися через налаштований домен wide-area DNS-SD.
Виявлення все одно виконується за принципом best-effort і **не** замінює підключення через SSH або Tailnet.
OpenClaw використовує Bonjour (mDNS / DNSSD) для виявлення активного Gateway (кінцева точка WebSocket).
Багатоадресний перегляд `local.` — це **лише зручність у межах LAN**. Вбудований Plugin
`bonjour` відповідає за рекламу в LAN і ввімкнений за замовчуванням. Для виявлення між мережами
той самий маяк також можна опублікувати через налаштований домен wide-area DNS-SD.
Виявлення все одно працює за принципом best-effort і **не** замінює підключення через SSH або Tailnet.
## Wide-area Bonjour (Unicast DNS-SD) через Tailscale
Якщо node і gateway перебувають у різних мережах, багатоадресний mDNS не перетне
Якщо node і gateway перебувають у різних мережах, багатоадресний mDNS не перетинатиме
цю межу. Ви можете зберегти той самий UX виявлення, переключившись на **unicast DNSSD**
("WideArea Bonjour") через Tailscale.
@ -32,11 +32,11 @@ OpenClaw використовує Bonjour (mDNS / DNSSD) для виявле
1. Запустіть DNS-сервер на хості gateway (доступний через Tailnet).
2. Опублікуйте записи DNSSD для `_openclaw-gw._tcp` у виділеній зоні
(приклад: `openclaw.internal.`).
3. Налаштуйте в Tailscale **split DNS**, щоб вибраний домен резолвився через цей
DNS-сервер для клієнтів (зокрема iOS).
3. Налаштуйте **split DNS** у Tailscale так, щоб вибраний домен резолвився через цей
DNS-сервер для клієнтів (включно з iOS).
OpenClaw підтримує будь-який домен виявлення; `openclaw.internal.` — лише приклад.
Node iOS/Android переглядають і `local.`, і налаштований вами wide-area домен.
iOS/Android node переглядають і `local.`, і ваш налаштований wide-area домен.
### Конфігурація Gateway (рекомендовано)
@ -53,10 +53,10 @@ Node iOS/Android переглядають і `local.`, і налаштовани
openclaw dns setup --apply
```
Це встановлює CoreDNS і налаштовує його так, щоб він:
Це встановить CoreDNS і налаштує його так, щоб він:
- слухав порт 53 лише на Tailscale-інтерфейсах gateway
- обслуговував вибраний вами домен (приклад: `openclaw.internal.`) з `~/.openclaw/dns/<domain>.db`
- обслуговував вибраний домен (приклад: `openclaw.internal.`) з `~/.openclaw/dns/<domain>.db`
Перевірте з машини, підключеної до tailnet:
@ -72,52 +72,52 @@ dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short
- Додайте nameserver, що вказує на tailnet IP gateway (UDP/TCP 53).
- Додайте split DNS, щоб ваш домен виявлення використовував цей nameserver.
Щойно клієнти приймуть DNS tailnet, node iOS і виявлення CLI зможуть переглядати
`_openclaw-gw._tcp` у вашому домені виявлення без багатоадресної передачі.
Після того як клієнти приймуть DNS tailnet, iOS node і CLI-виявлення зможуть переглядати
`_openclaw-gw._tcp` у вашому домені виявлення без багатоадресності.
### Безпека слухача Gateway (рекомендовано)
### Безпека listener Gateway (рекомендовано)
Порт WS Gateway (типово `18789`) за замовчуванням прив’язується до loopback. Для доступу через LAN/tailnet
явно задайте прив’язку та залиште автентифікацію ввімкненою.
Порт Gateway WS (типово `18789`) за замовчуванням прив’язується до loopback. Для доступу через LAN/tailnet
явно вкажіть bind і залиште автентифікацію ввімкненою.
Для конфігурацій лише з tailnet:
- Установіть `gateway.bind: "tailnet"` у `~/.openclaw/openclaw.json`.
- Перезапустіть Gateway (або перезапустіть застосунок macOS у рядку меню).
- Перезапустіть Gateway (або перезапустіть застосунок macOS menubar).
## Що рекламується
Лише Gateway рекламує `_openclaw-gw._tcp`. Багатоадресна реклама в LAN
Лише Gateway рекламує `_openclaw-gw._tcp`. Реклама через багатоадресність у LAN
забезпечується вбудованим Plugin `bonjour`; публікація wide-area DNS-SD і надалі
належить Gateway.
## Типи сервісів
- `_openclaw-gw._tcp`маяк транспортного рівня gateway (використовується node macOS/iOS/Android).
- `_openclaw-gw._tcp`транспортний маяк gateway (використовується macOS/iOS/Android node).
## Ключі TXT (не секретні підказки)
Gateway рекламує невеликі не секретні підказки, щоб зробити UI-потоки зручнішими:
- `role=gateway`
- `displayName=<friendly name>`
- `displayName=<дружня назва>`
- `lanHost=<hostname>.local`
- `gatewayPort=<port>` (Gateway WS + HTTP)
- `gatewayTls=1` (лише коли ввімкнено TLS)
- `gatewayTlsSha256=<sha256>` (лише коли ввімкнено TLS і доступний відбиток)
- `canvasPort=<port>` (лише коли ввімкнено canvas host; наразі збігається з `gatewayPort`)
- `gatewayTls=1` (лише коли TLS увімкнено)
- `gatewayTlsSha256=<sha256>` (лише коли TLS увімкнено і відбиток доступний)
- `canvasPort=<port>` (лише коли ввімкнено canvas host; наразі те саме, що й `gatewayPort`)
- `transport=gateway`
- `tailnetDns=<magicdns>` (лише в режимі mDNS full, необов’язкова підказка, коли Tailnet доступний)
- `sshPort=<port>` (лише в режимі mDNS full; wide-area DNS-SD може його не включати)
- `cliPath=<path>` (лише в режимі mDNS full; wide-area DNS-SD усе одно записує його як підказку для віддаленого встановлення)
- `tailnetDns=<magicdns>` (лише в повному режимі mDNS, необов’язкова підказка, коли Tailnet доступний)
- `sshPort=<port>` (лише в повному режимі mDNS; wide-area DNS-SD може його не включати)
- `cliPath=<path>` (лише в повному режимі mDNS; wide-area DNS-SD все одно записує його як підказку для віддаленого встановлення)
Примітки щодо безпеки:
- Записи Bonjour/mDNS TXT **неавтентифіковані**. Клієнти не повинні вважати TXT авторитетним джерелом маршрутизації.
- Клієнти мають маршрутизувати трафік, використовуючи резолвлену кінцеву точку сервісу (SRV + A/AAAA). Сприймайте `lanHost`, `tailnetDns`, `gatewayPort` і `gatewayTlsSha256` лише як підказки.
- Записи TXT у Bonjour/mDNS **неавтентифіковані**. Клієнти не повинні вважати TXT авторитетним джерелом маршрутизації.
- Клієнти повинні маршрутизувати, використовуючи резолвлену кінцеву точку сервісу (SRV + A/AAAA). Сприймайте `lanHost`, `tailnetDns`, `gatewayPort` і `gatewayTlsSha256` лише як підказки.
- Автоматичне націлювання SSH так само має використовувати резолвлений хост сервісу, а не підказки лише з TXT.
- Прив’язка TLS ніколи не повинна дозволяти рекламованому `gatewayTlsSha256` перевизначати раніше збережену прив’язку.
- Node iOS/Android мають розглядати прямі підключення на основі виявлення як **лише TLS** і вимагати явного підтвердження користувача перед довірою до відбитка при першому використанні.
- TLS pinning ніколи не повинен дозволяти рекламованому `gatewayTlsSha256` перевизначати раніше збережений pin.
- iOS/Android node повинні трактувати прямі підключення на основі виявлення як **лише TLS** і вимагати явного підтвердження користувача перед довірою до відбитка, побаченого вперше.
## Налагодження на macOS
@ -135,66 +135,144 @@ Gateway рекламує невеликі не секретні підказки
dns-sd -L "<instance>" _openclaw-gw._tcp local.
```
Якщо перегляд працює, а резолв — ні, зазвичай проблема в політиці LAN або
в резолвері mDNS.
Якщо перегляд працює, а резолв — ні, зазвичай це означає проблему з політикою LAN або
резолвером mDNS.
## Налагодження в логах Gateway
Gateway записує циклічний файл журналу (друкується під час запуску як
`gateway log file: ...`). Шукайте рядки `bonjour:`, зокрема:
Gateway записує ротаційний файл логу (під час запуску виводиться як
`gateway log file: ...`). Шукайте рядки `bonjour:`, особливо:
- `bonjour: advertise failed ...`
- `bonjour: ... name conflict resolved` / `hostname conflict resolved`
- `bonjour: watchdog detected non-announced service ...`
- `bonjour: disabling advertiser after ... failed restarts ...`
## Налагодження на node iOS
## Налагодження на iOS node
Node iOS використовує `NWBrowser` для виявлення `_openclaw-gw._tcp`.
iOS node використовує `NWBrowser` для виявлення `_openclaw-gw._tcp`.
Щоб зібрати логи:
- Settings → Gateway → Advanced → **Discovery Debug Logs**
- Settings → Gateway → Advanced → **Discovery Logs** → відтворіть проблему → **Copy**
Журнал містить переходи стану браузера та зміни набору результатів.
Лог містить переходи стану браузера та зміни набору результатів.
## Поширені режими відмов
## Коли вимикати Bonjour
- **Bonjour не працює між різними мережами**: використовуйте Tailnet або SSH.
- **Багатоадресна передача заблокована**: деякі WiFi мережі вимикають mDNS.
- **Рекламування зависло на probing/announcing**: хости із заблокованою багатоадресною передачею,
мости контейнерів, WSL або зміни інтерфейсів можуть залишити рекламодавець ciao у
стані non-announced. OpenClaw повторює спробу кілька разів, а потім вимикає Bonjour
для поточного процесу Gateway замість безкінечного перезапуску рекламодавця.
- **Мережа Docker bridge**: вбудований Docker Compose за замовчуванням вимикає Bonjour
через `OPENCLAW_DISABLE_BONJOUR=1`. Установлюйте `0` лише для host,
Вимикайте Bonjour лише тоді, коли реклама через багатоадресність у LAN недоступна або шкідлива.
Типовий випадок — Gateway, що працює за Docker bridge networking, WSL або політикою
мережі, яка відкидає багатоадресність mDNS. У таких середовищах Gateway усе ще
доступний через свою опубліковану URL-адресу, SSH, Tailnet або wide-area DNS-SD,
але автоматичне виявлення в LAN ненадійне.
Віддавайте перевагу наявному перевизначенню через середовище, коли проблема пов’язана з конкретним розгортанням:
```bash
OPENCLAW_DISABLE_BONJOUR=1
```
Це вимикає рекламу через багатоадресність у LAN без зміни конфігурації Plugin.
Це безпечно для Docker-образів, service files, скриптів запуску та разового
налагодження, оскільки налаштування зникає разом із середовищем.
Використовуйте конфігурацію Plugin лише тоді, коли ви свідомо хочете вимкнути
вбудований Plugin виявлення LAN для цієї конфігурації OpenClaw:
```bash
openclaw plugins disable bonjour
```
## Особливості Docker
Комплектний Docker Compose встановлює `OPENCLAW_DISABLE_BONJOUR=1` для сервісу Gateway
за замовчуванням. Docker bridge network зазвичай не пересилають багатоадресність mDNS
(`224.0.0.251:5353`) між контейнером і LAN, тому якщо залишити Bonjour увімкненим, це може
спричиняти повторні збої ciao `probing` або `announcing`, не забезпечуючи
працездатне виявлення.
Важливі нюанси:
- Вимкнення Bonjour не зупиняє Gateway. Воно лише зупиняє рекламу через багатоадресність у LAN.
- Вимкнення Bonjour не змінює `gateway.bind`; Docker все ще за замовчуванням використовує
`OPENCLAW_GATEWAY_BIND=lan`, щоб опублікований порт хоста міг працювати.
- Вимкнення Bonjour не вимикає wide-area DNS-SD. Використовуйте wide-area виявлення
або Tailnet, коли Gateway і node не в одній LAN.
- Повторне використання того самого `OPENCLAW_CONFIG_DIR` поза Docker не успадковує
значення Compose за замовчуванням, якщо середовище все ще не задає `OPENCLAW_DISABLE_BONJOUR`.
- Встановлюйте `OPENCLAW_DISABLE_BONJOUR=0` лише для host networking, macvlan або іншої
мережі, де багатоадресність mDNS гарантовано проходить.
## Усунення проблем із вимкненим Bonjour
Якщо node більше не виявляє Gateway автоматично після налаштування Docker:
1. Перевірте, чи Gateway навмисно пригнічує рекламу в LAN:
```bash
docker compose config | grep OPENCLAW_DISABLE_BONJOUR
```
2. Переконайтеся, що сам Gateway доступний через опублікований порт:
```bash
curl -fsS http://127.0.0.1:18789/healthz
```
3. Використовуйте пряму ціль, коли Bonjour вимкнено:
- Control UI або локальні інструменти: `http://127.0.0.1:18789`
- Клієнти в LAN: `http://<gateway-host>:18789`
- Клієнти між мережами: Tailnet MagicDNS, Tailnet IP, SSH tunnel або
wide-area DNS-SD
4. Якщо ви навмисно ввімкнули Bonjour у Docker за допомогою
`OPENCLAW_DISABLE_BONJOUR=0`, протестуйте багатоадресність із хоста:
```bash
dns-sd -B _openclaw-gw._tcp local.
```
Якщо перегляд порожній або логи Gateway показують повторні скасування
watchdog у ciao, поверніть `OPENCLAW_DISABLE_BONJOUR=1` і використовуйте прямий
маршрут або маршрут через Tailnet.
## Типові режими відмови
- **Bonjour не працює між мережами**: використовуйте Tailnet або SSH.
- **Багатоадресність заблокована**: деякі мережі WiFi вимикають mDNS.
- **Advertiser застряг у probing/announcing**: хости із заблокованою багатоадресністю,
container bridge, WSL або зміни інтерфейсів можуть залишити advertiser ciao у
неанонсованому стані. OpenClaw робить кілька повторних спроб, а потім вимикає Bonjour
для поточного процесу Gateway, замість того щоб безкінечно перезапускати advertiser.
- **Docker bridge networking**: комплектний Docker Compose вимикає Bonjour
за замовчуванням через `OPENCLAW_DISABLE_BONJOUR=1`. Встановлюйте `0` лише для host,
macvlan або іншої мережі з підтримкою mDNS.
- **Сон / зміни інтерфейсів**: macOS може тимчасово втрачати результати mDNS; повторіть спробу.
- **Перегляд працює, а резолв — ні**: використовуйте прості назви машин (уникайте емодзі або
пунктуації), а потім перезапустіть Gateway. Ім’я екземпляра сервісу походить від
імені хоста, тому надто складні імена можуть плутати деякі резолвери.
- **Сон / зміна інтерфейсів**: macOS може тимчасово втрачати результати mDNS; повторіть спробу.
- **Перегляд працює, а резолв — ні**: робіть назви машин простими (уникайте емодзі або
пунктуації), а потім перезапустіть Gateway. Ім’я екземпляра сервісу похідне від
імені хоста, тому надто складні назви можуть плутати деякі резолвери.
## Екрановані імена екземплярів (`\032`)
Bonjour/DNSSD часто екранує байти в іменах екземплярів сервісу як десяткові послідовності `\DDD`
Bonjour/DNSSD часто екранує байти в іменах екземплярів сервісів як десяткові послідовності `\DDD`
(наприклад, пробіли стають `\032`).
- Це нормально на рівні протоколу.
- UI мають декодувати це для відображення (iOS використовує `BonjourEscapes.decode`).
- UI повинні декодувати це для відображення (iOS використовує `BonjourEscapes.decode`).
## Вимкнення / конфігурація
- `openclaw plugins disable bonjour` вимикає багатоадресну рекламу в LAN, вимикаючи вбудований plugin.
- `openclaw plugins enable bonjour` відновлює типовий plugin виявлення в LAN.
- `OPENCLAW_DISABLE_BONJOUR=1` вимикає багатоадресну рекламу в LAN без зміни конфігурації plugin; підтримувані truthy-значення: `1`, `true`, `yes` і `on` (legacy: `OPENCLAW_DISABLE_BONJOUR`).
- Docker Compose за замовчуванням установлює `OPENCLAW_DISABLE_BONJOUR=1` для bridge networking; перевизначайте на `OPENCLAW_DISABLE_BONJOUR=0` лише коли доступна багатоадресна передача mDNS.
- `gateway.bind` у `~/.openclaw/openclaw.json` керує режимом прив’язки Gateway.
- `openclaw plugins disable bonjour` вимикає рекламу через багатоадресність у LAN, вимикаючи вбудований Plugin.
- `openclaw plugins enable bonjour` відновлює стандартний Plugin виявлення LAN.
- `OPENCLAW_DISABLE_BONJOUR=1` вимикає рекламу через багатоадресність у LAN без зміни конфігурації Plugin; підтримувані truthy-значення: `1`, `true`, `yes` і `on` (legacy: `OPENCLAW_DISABLE_BONJOUR`).
- Docker Compose за замовчуванням встановлює `OPENCLAW_DISABLE_BONJOUR=1` для bridge networking; перевизначайте значення на `OPENCLAW_DISABLE_BONJOUR=0` лише коли багатоадресність mDNS доступна.
- `gateway.bind` у `~/.openclaw/openclaw.json` керує режимом bind для Gateway.
- `OPENCLAW_SSH_PORT` перевизначає порт SSH, коли рекламується `sshPort` (legacy: `OPENCLAW_SSH_PORT`).
- `OPENCLAW_TAILNET_DNS` публікує підказку MagicDNS у TXT, коли ввімкнено режим mDNS full (legacy: `OPENCLAW_TAILNET_DNS`).
- `OPENCLAW_TAILNET_DNS` публікує підказку MagicDNS у TXT, коли ввімкнено повний режим mDNS (legacy: `OPENCLAW_TAILNET_DNS`).
- `OPENCLAW_CLI_PATH` перевизначає рекламований шлях CLI (legacy: `OPENCLAW_CLI_PATH`).
## Пов’язані документи
## Пов’язана документація
- Політика виявлення та вибір транспорту: [Виявлення](/uk/gateway/discovery)
- Парування node та схвалення: [Парування Gateway](/uk/gateway/pairing)
- Сполучення node + підтвердження: [Сполучення Gateway](/uk/gateway/pairing)

View File

@ -5,30 +5,30 @@ read_when:
summary: Необов’язкове налаштування та онбординг OpenClaw на основі Docker
title: Docker
x-i18n:
generated_at: "2026-04-26T04:54:58Z"
generated_at: "2026-04-26T04:59:45Z"
model: gpt-5.4
provider: openai
source_hash: 9b2d73da68266946f62feca240bdd94336a3f15e9ca48f0a52209f4ae4a85ffe
source_hash: e6da0543ce143aeb9d3cdb2086704aaa146a5e385a7e36a7cb9f444097f86e50
source_path: install/docker.md
workflow: 15
---
Docker **необов’язковий**. Використовуйте його лише якщо хочете контейнеризований Gateway або перевірити потік Docker.
Docker **необов’язковий**. Використовуйте його лише якщо вам потрібен контейнеризований Gateway або ви хочете перевірити потік Docker.
## Чи підходить мені Docker?
- **Так**: вам потрібне ізольоване, тимчасове середовище Gateway або ви хочете запускати OpenClaw на хості без локальних встановлень.
- **Ні**: ви запускаєте на власній машині й просто хочете найшвидший цикл розробки. Натомість використовуйте звичайний потік встановлення.
- **Примітка щодо ізоляції**: типовий бекенд sandbox використовує Docker, коли ізоляцію ввімкнено, але за замовчуванням ізоляція вимкнена і **не** вимагає запуску всього Gateway у Docker. Також доступні бекенди sandbox SSH і OpenShell. Див. [Ізоляція](/uk/gateway/sandboxing).
- **Ні**: ви запускаєте все на власній машині й просто хочете найшвидший цикл розробки. Натомість скористайтеся звичайним потоком встановлення.
- **Примітка щодо ізоляції**: стандартний бекенд ізоляції використовує 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`.
[Посилення безпеки для мережевої експозиції](/uk/gateway/security),
особливо політику брандмауера Docker `DOCKER-USER`.
## Контейнеризований Gateway
@ -40,7 +40,7 @@ Docker **необов’язковий**. Використовуйте його
./scripts/docker/setup.sh
```
Це локально збере образ Gateway. Щоб натомість використовувати попередньо зібраний образ:
Це локально збере образ Gateway. Щоб натомість використати попередньо зібраний образ:
```bash
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
@ -54,21 +54,21 @@ Docker **необов’язковий**. Використовуйте його
</Step>
<Step title="Завершіть онбординг">
Скрипт налаштування запускає онбординг автоматично. Він:
Скрипт налаштування автоматично запускає онбординг. Він:
- запросить API-ключі провайдерів
- запропонує ввести API-ключі провайдерів
- згенерує токен Gateway і запише його в `.env`
- запустить Gateway через Docker Compose
Під час налаштування передстартовий онбординг і запис конфігурації виконуються
безпосередньо через `openclaw-gateway`. `openclaw-cli` призначений для команд, які ви запускаєте після того,
як контейнер gateway уже існує.
Під час налаштування попередній онбординг перед стартом і записи конфігурації виконуються безпосередньо через
`openclaw-gateway`. `openclaw-cli` призначений для команд, які ви запускаєте після
того, як контейнер Gateway уже існує.
</Step>
<Step title="Відкрийте Control UI">
Відкрийте `http://127.0.0.1:18789/` у браузері та вставте налаштований
спільний секрет у Settings. Скрипт налаштування за замовчуванням записує токен у `.env`; якщо ви перемкнете конфігурацію контейнера на автентифікацію паролем, використовуйте натомість цей
Відкрийте `http://127.0.0.1:18789/` у браузері й вставте налаштований
спільний секрет у Settings. Скрипт налаштування за замовчуванням записує токен у `.env`; якщо ви переключите конфігурацію контейнера на автентифікацію за паролем, натомість використайте цей
пароль.
Потрібна URL-адреса знову?
@ -80,7 +80,7 @@ Docker **необов’язковий**. Використовуйте його
</Step>
<Step title="Налаштуйте канали (необов’язково)">
Використовуйте контейнер CLI, щоб додати канали обміну повідомленнями:
Використайте контейнер CLI, щоб додати канали обміну повідомленнями:
```bash
# WhatsApp (QR)
@ -114,12 +114,12 @@ docker compose up -d openclaw-gateway
<Note>
Запускайте `docker compose` з кореня репозиторію. Якщо ви ввімкнули `OPENCLAW_EXTRA_MOUNTS`
або `OPENCLAW_HOME_VOLUME`, скрипт налаштування записує `docker-compose.extra.yml`;
додавайте його через `-f docker-compose.yml -f docker-compose.extra.yml`.
додавайте його за допомогою `-f docker-compose.yml -f docker-compose.extra.yml`.
</Note>
<Note>
Оскільки `openclaw-cli` спільно використовує мережевий простір імен `openclaw-gateway`, це
інструмент після запуску. До `docker compose up -d openclaw-gateway` запускайте онбординг
Оскільки `openclaw-cli` використовує спільний мережевий простір імен із `openclaw-gateway`, це
інструмент для використання після запуску. До `docker compose up -d openclaw-gateway` виконуйте онбординг
і записи конфігурації під час налаштування через `openclaw-gateway` з
`--no-deps --entrypoint node`.
</Note>
@ -130,16 +130,16 @@ docker compose up -d openclaw-gateway
| Variable | Purpose |
| ------------------------------ | --------------------------------------------------------------- |
| `OPENCLAW_IMAGE` | Використовувати віддалений образ замість локального збирання |
| `OPENCLAW_IMAGE` | Використати віддалений образ замість локального збирання |
| `OPENCLAW_DOCKER_APT_PACKAGES` | Встановити додаткові apt-пакети під час збирання (імена через пробіл) |
| `OPENCLAW_EXTENSIONS` | Попередньо встановити залежності плагінів під час збирання (імена через пробіл) |
| `OPENCLAW_EXTRA_MOUNTS` | Додаткові bind mounts хоста (через кому у форматі `source:target[:opts]`) |
| `OPENCLAW_HOME_VOLUME` | Зберігати `/home/node` в іменованому Docker volume |
| `OPENCLAW_SANDBOX` | Увімкнути bootstrap sandbox (`1`, `true`, `yes`, `on`) |
| `OPENCLAW_DOCKER_SOCKET` | Перевизначити шлях до Docker socket |
| `OPENCLAW_EXTENSIONS` | Попередньо встановити залежності Plugin під час збирання (імена через пробіл) |
| `OPENCLAW_EXTRA_MOUNTS` | Додаткові bind mount хоста (через кому `source:target[:opts]`) |
| `OPENCLAW_HOME_VOLUME` | Зберігати `/home/node` в іменованому Docker-томі |
| `OPENCLAW_SANDBOX` | Увімкнути bootstrap ізоляції (`1`, `true`, `yes`, `on`) |
| `OPENCLAW_DOCKER_SOCKET` | Перевизначити шлях до сокета Docker |
| `OPENCLAW_DISABLE_BONJOUR` | Вимкнути рекламу Bonjour/mDNS (для Docker за замовчуванням `1`) |
### Перевірки здоров’я
### Перевірки стану
Кінцеві точки probe контейнера (автентифікація не потрібна):
@ -148,82 +148,84 @@ curl -fsS http://127.0.0.1:18789/healthz # liveness
curl -fsS http://127.0.0.1:18789/readyz # readiness
```
Образ Docker містить вбудований `HEALTHCHECK`, який виконує ping до `/healthz`.
Образ Docker містить вбудований `HEALTHCHECK`, який опитує `/healthz`.
Якщо перевірки постійно не проходять, Docker позначає контейнер як `unhealthy`, і
системи оркестрації можуть перезапустити або замінити його.
Автентифікований глибокий знімок стану здоров’я:
Автентифікований глибокий знімок стану:
```bash
docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"
```
### LAN чи loopback
### LAN проти loopback
`scripts/docker/setup.sh` за замовчуванням встановлює `OPENCLAW_GATEWAY_BIND=lan`, щоб
доступ хоста до `http://127.0.0.1:18789` працював із публікацією порту Docker.
`scripts/docker/setup.sh` за замовчуванням встановлює `OPENCLAW_GATEWAY_BIND=lan`, щоб доступ хоста до
`http://127.0.0.1:18789` працював із публікацією портів Docker.
- `lan` (за замовчуванням): браузер хоста і CLI хоста можуть досягати опублікованого порту gateway.
- `lan` (за замовчуванням): браузер і CLI на хості можуть звертатися до опублікованого порту Gateway.
- `loopback`: лише процеси всередині мережевого простору імен контейнера можуть
напряму досягати gateway.
напряму звертатися до Gateway.
<Note>
Використовуйте значення режиму bind у `gateway.bind` (`lan` / `loopback` / `custom` /
`tailnet` / `auto`), а не хост-аліаси на кшталт `0.0.0.0` чи `127.0.0.1`.
Використовуйте значення режиму прив’язки в `gateway.bind` (`lan` / `loopback` / `custom` /
`tailnet` / `auto`), а не псевдоніми хоста на кшталт `0.0.0.0` або `127.0.0.1`.
</Note>
### Bonjour / mDNS
Мережа мосту Docker зазвичай ненадійно пересилає багатокастовий трафік Bonjour/mDNS
(`224.0.0.251:5353`). Тому комплектна конфігурація Compose за замовчуванням встановлює
`OPENCLAW_DISABLE_BONJOUR=1`, щоб Gateway не потрапляв у crash-loop і не
перезапускав рекламу повторно, коли міст втрачає багатокастовий трафік.
Мережевий міст Docker зазвичай ненадійно пересилає multicast Bonjour/mDNS
(`224.0.0.251:5353`). Тому в комплектному налаштуванні Compose за замовчуванням
встановлюється `OPENCLAW_DISABLE_BONJOUR=1`, щоб Gateway не переходив у crash-loop і не
перезапускав рекламу повторно, коли міст втрачає multicast-трафік.
Для хостів Docker використовуйте опубліковану URL-адресу Gateway, Tailscale або DNS-SD широкої зони.
Встановлюйте `OPENCLAW_DISABLE_BONJOUR=0` лише під час роботи з host networking, macvlan
або іншою мережею, де багатокастовий mDNS точно працює.
Для хостів Docker використовуйте опубліковану URL-адресу Gateway, Tailscale або wide-area DNS-SD.
Встановлюйте `OPENCLAW_DISABLE_BONJOUR=0` лише під час запуску з host networking, macvlan
або в іншій мережі, де multicast mDNS гарантовано працює.
Щоб ознайомитися з нюансами й усуненням проблем, див. [Виявлення Bonjour](/uk/gateway/bonjour).
### Сховище та збереження даних
Docker Compose виконує bind-mount `OPENCLAW_CONFIG_DIR` до `/home/node/.openclaw` і
`OPENCLAW_WORKSPACE_DIR` до `/home/node/.openclaw/workspace`, тож ці шляхи
Docker Compose монтує `OPENCLAW_CONFIG_DIR` у `/home/node/.openclaw` і
`OPENCLAW_WORKSPACE_DIR` у `/home/node/.openclaw/workspace`, тож ці шляхи
зберігаються після заміни контейнера.
У цьому змонтованому каталозі конфігурації OpenClaw зберігає:
- `openclaw.json` для конфігурації поведінки
- `agents/<agentId>/agent/auth-profiles.json` для збереженої OAuth/API-key автентифікації провайдера
- `.env` для секретів середовища виконання, що передаються через env, як-от `OPENCLAW_GATEWAY_TOKEN`
- `agents/<agentId>/agent/auth-profiles.json` для збереженої OAuth/API-key автентифікації провайдерів
- `.env` для секретів середовища виконання на основі env, таких як `OPENCLAW_GATEWAY_TOKEN`
Повні відомості про збереження даних у розгортаннях на VM див. у
[Docker VM Runtime - Що і де зберігається](/uk/install/docker-vm-runtime#what-persists-where).
[Середовище виконання Docker VM — що й де зберігається](/uk/install/docker-vm-runtime#what-persists-where).
**Точки росту використання диска:** стежте за `media/`, файлами JSONL сеансів, `cron/runs/*.jsonl`,
і ротаційними файловими журналами в `/tmp/openclaw/`.
**Проблемні місця зростання дискового простору:** стежте за `media/`, JSONL-файлами сеансів, `cron/runs/*.jsonl`,
і циклічними файловими журналами в `/tmp/openclaw/`.
### Допоміжні команди shell (необов’язково)
### Допоміжні команди оболонки (необов’язково)
Для зручнішого повсякденного керування Docker встановіть `ClawDock`:
Для зручнішого щоденного керування Docker установіть `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`, повторно виконайте наведену вище команду встановлення, щоб локальний файл helper відстежував нове розташування.
Якщо ви встановили ClawDock зі старого raw-шляху `scripts/shell-helpers/clawdock-helpers.sh`, повторно виконайте наведену вище команду встановлення, щоб ваш локальний допоміжний файл відстежував нове розташування.
Після цього використовуйте `clawdock-start`, `clawdock-stop`, `clawdock-dashboard` тощо. Запустіть
`clawdock-help`, щоб переглянути всі команди.
Повний посібник із helper-команд див. у [ClawDock](/uk/install/clawdock).
`clawdock-help`, щоб побачити всі команди.
Повний посібник із допоміжних команд див. у [ClawDock](/uk/install/clawdock).
<AccordionGroup>
<Accordion title="Увімкнути sandbox агента для Docker gateway">
<Accordion title="Увімкнення ізоляції агента для Docker Gateway">
```bash
export OPENCLAW_SANDBOX=1
./scripts/docker/setup.sh
```
Власний шлях до socket (наприклад, rootless Docker):
Нестандартний шлях до сокета (наприклад, rootless Docker):
```bash
export OPENCLAW_SANDBOX=1
@ -231,14 +233,14 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
./scripts/docker/setup.sh
```
Скрипт монтує `docker.sock` лише після успішного проходження передумов sandbox. Якщо
налаштування sandbox не вдається завершити, скрипт скидає `agents.defaults.sandbox.mode`
Скрипт монтує `docker.sock` лише після успішної перевірки передумов ізоляції. Якщо
налаштування ізоляції не може бути завершено, скрипт скидає `agents.defaults.sandbox.mode`
на `off`.
</Accordion>
<Accordion title="Автоматизація / CI (неінтерактивно)">
Вимкніть виділення псевдо-TTY Compose за допомогою `-T`:
Вимкніть виділення псевдо-TTY для Compose за допомогою `-T`:
```bash
docker compose run -T --rm openclaw-cli gateway probe
@ -248,15 +250,15 @@ 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` і вмикає
`openclaw-cli` використовує `network_mode: "service:openclaw-gateway"`, тому CLI-команди
можуть звертатися до Gateway через `127.0.0.1`. Розглядайте це як спільну межу довіри. Конфігурація
compose прибирає `NET_RAW`/`NET_ADMIN` і вмикає
`no-new-privileges` для `openclaw-cli`.
</Accordion>
<Accordion title="Дозволи та EACCES">
Образ працює від імені `node` (uid 1000). Якщо ви бачите помилки дозволів для
`/home/node/.openclaw`, переконайтеся, що ваші bind mounts хоста належать uid 1000:
Образ запускається від імені `node` (uid 1000). Якщо ви бачите помилки дозволів для
`/home/node/.openclaw`, переконайтеся, що bind mount хоста належать uid 1000:
```bash
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspace
@ -266,7 +268,7 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
<Accordion title="Швидші перебудови">
Упорядкуйте Dockerfile так, щоб шари залежностей кешувалися. Це дозволяє уникнути повторного запуску
`pnpm install`, доки lockfile не зміниться:
`pnpm install`, якщо lockfile не змінювалися:
```dockerfile
FROM node:24-bookworm
@ -288,61 +290,60 @@ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
</Accordion>
<Accordion title="Контейнерні параметри для досвідчених користувачів">
Типовий образ орієнтований на безпеку й працює від непривілейованого `node`. Для більш
<Accordion title="Параметри контейнера для досвідчених користувачів">
Стандартний образ орієнтований на безпеку й запускається від непривілейованого користувача `node`. Для більш
функціонального контейнера:
1. **Зберігайте `/home/node`**: `export OPENCLAW_HOME_VOLUME="openclaw_home"`
2. **Вбудуйте системні залежності**: `export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq"`
3. **Встановіть браузери Playwright**:
2. **Додавайте системні залежності в образ**: `export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq"`
3. **Установіть браузери Playwright**:
```bash
docker compose run --rm openclaw-cli \
node /app/node_modules/playwright-core/cli.js install chromium
```
4. **Зберігайте завантаження браузера**: встановіть
4. **Зберігайте завантаження браузерів**: встановіть
`PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright` і використовуйте
`OPENCLAW_HOME_VOLUME` або `OPENCLAW_EXTRA_MOUNTS`.
</Accordion>
<Accordion title="OAuth OpenAI Codex (headless Docker)">
Якщо у майстрі ви оберете OAuth OpenAI Codex, він відкриє URL-адресу в браузері. У
Docker або headless-середовищах скопіюйте повну URL-адресу перенаправлення, на яку ви потрапите, і вставте
<Accordion title="OpenAI Codex OAuth (headless Docker)">
Якщо у майстрі ви вибираєте OpenAI Codex OAuth, відкривається URL-адреса в браузері. У
Docker або headless-середовищах скопіюйте повну URL-адресу перенаправлення, куди ви потрапите, і вставте
її назад у майстер, щоб завершити автентифікацію.
</Accordion>
<Accordion title="Метадані базового образу">
Основний образ Docker використовує `node:24-bookworm` і публікує анотації OCI базового образу,
зокрема `org.opencontainers.image.base.name`,
`org.opencontainers.image.source` та інші. Див.
[Анотації образу OCI](https://github.com/opencontainers/image-spec/blob/main/annotations.md).
включно з `org.opencontainers.image.base.name`,
`org.opencontainers.image.source` та іншими. Див.
[Анотації образів OCI](https://github.com/opencontainers/image-spec/blob/main/annotations.md).
</Accordion>
</AccordionGroup>
### Запуск на VPS?
Див. [Hetzner (Docker VPS)](/uk/install/hetzner) і
[Docker VM Runtime](/uk/install/docker-vm-runtime) для кроків розгортання на спільній VM,
зокрема підготовки бінарних файлів, збереження даних і оновлень.
[Середовище виконання Docker VM](/uk/install/docker-vm-runtime) для кроків розгортання на спільних VM,
включно з додаванням бінарних файлів в образ, збереженням даних і оновленнями.
## Sandbox агента
## Ізоляція агента
Коли `agents.defaults.sandbox` увімкнено з Docker-бекендом, gateway
запускає виконання інструментів агента (shell, читання/запис файлів тощо) в ізольованих Docker
контейнерах, тоді як сам gateway залишається на хості. Це створює жорстку межу
Коли `agents.defaults.sandbox` увімкнено з бекендом Docker, Gateway
виконує запуск інструментів агента (shell, читання/запис файлів тощо) всередині ізольованих Docker-контейнерів, тоді як сам Gateway залишається на хості. Це створює жорстку межу
навколо недовірених або багатокористувацьких сеансів агентів без контейнеризації всього
gateway.
Gateway.
Область sandbox може бути для кожного агента окремо (за замовчуванням), для кожного сеансу або спільною. Кожна область
отримує власний workspace, змонтований у `/workspace`. Ви також можете налаштувати
Область ізоляції може бути на рівні агента (за замовчуванням), на рівні сеансу або спільною. Кожна область
отримує власний робочий простір, змонтований у `/workspace`. Ви також можете налаштувати
політики дозволу/заборони інструментів, ізоляцію мережі, обмеження ресурсів і браузерні
контейнери.
Повну конфігурацію, образи, примітки щодо безпеки та профілі для кількох агентів див. тут:
Повну інформацію про конфігурацію, образи, примітки щодо безпеки та профілі для кількох агентів див. тут:
- [Ізоляція](/uk/gateway/sandboxing) -- повний довідник із sandbox
- [OpenShell](/uk/gateway/openshell) -- інтерактивний доступ shell до контейнерів sandbox
- [Sandbox і інструменти для кількох агентів](/uk/tools/multi-agent-sandbox-tools) -- перевизначення для окремих агентів
- [Ізоляція](/uk/gateway/sandboxing) -- повний довідник з ізоляції
- [OpenShell](/uk/gateway/openshell) -- інтерактивний shell-доступ до контейнерів ізоляції
- [Ізоляція та інструменти для кількох агентів](/uk/tools/multi-agent-sandbox-tools) -- перевизначення на рівні агента
### Швидке ввімкнення
@ -359,39 +360,39 @@ gateway.
}
```
Зберіть типовий образ sandbox:
Зберіть стандартний образ ізоляції:
```bash
scripts/sandbox-setup.sh
```
## Усунення несправностей
## Усунення проблем
<AccordionGroup>
<Accordion title="Образ відсутній або контейнер sandbox не запускається">
Зберіть образ sandbox за допомогою
<Accordion title="Образ відсутній або контейнер ізоляції не запускається">
Зберіть образ ізоляції за допомогою
[`scripts/sandbox-setup.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/sandbox-setup.sh)
або встановіть власний образ у `agents.defaults.sandbox.docker.image`.
або встановіть `agents.defaults.sandbox.docker.image` на ваш власний образ.
Контейнери автоматично створюються для кожного сеансу за потреби.
</Accordion>
<Accordion title="Помилки дозволів у sandbox">
Встановіть `docker.user` у UID:GID, що відповідає власнику змонтованого workspace,
або змініть власника папки workspace через chown.
<Accordion title="Помилки дозволів в ізоляції">
Установіть `docker.user` на UID:GID, що відповідає власнику змонтованого робочого простору,
або змініть власника теки робочого простору через `chown`.
</Accordion>
<Accordion title="У sandbox не знайдено користувацькі інструменти">
OpenClaw запускає команди через `sh -lc` (login shell), який завантажує
`/etc/profile` і може скинути PATH. Встановіть `docker.env.PATH`, щоб додати
шляхи до ваших користувацьких інструментів, або додайте скрипт у `/etc/profile.d/` у вашому Dockerfile.
<Accordion title="Користувацькі інструменти не знайдено в ізоляції">
OpenClaw виконує команди через `sh -lc` (login shell), який завантажує
`/etc/profile` і може скидати PATH. Установіть `docker.env.PATH`, щоб додати
ваші шляхи до користувацьких інструментів на початок, або додайте скрипт у `/etc/profile.d/` у вашому Dockerfile.
</Accordion>
<Accordion title="Під час збирання образу завершено через OOM (код виходу 137)">
<Accordion title="Завершення через OOM під час збирання образу (exit 137)">
VM потребує щонайменше 2 ГБ RAM. Використайте більший клас машини й повторіть спробу.
</Accordion>
<Accordion title="Unauthorized або потрібне pairing у Control UI">
Отримайте нове посилання dashboard і схваліть пристрій браузера:
<Accordion title="Unauthorized або потрібне pair-ing у Control UI">
Отримайте нове посилання Dashboard і підтвердьте браузерний пристрій:
```bash
docker compose run --rm openclaw-cli dashboard --no-open
@ -403,8 +404,8 @@ scripts/sandbox-setup.sh
</Accordion>
<Accordion title="Ціль gateway показує ws://172.x.x.x або помилки pairing з Docker CLI">
Скиньте режим і bind gateway:
<Accordion title="Ціль Gateway показує ws://172.x.x.x або помилки pair-ing із Docker CLI">
Скиньте режим і прив’язку Gateway:
```bash
docker compose run --rm openclaw-cli config set --batch-json '[{"path":"gateway.mode","value":"local"},{"path":"gateway.bind","value":"lan"}]'
@ -414,10 +415,10 @@ scripts/sandbox-setup.sh
</Accordion>
</AccordionGroup>
## Пов’язані матеріали
## Пов’язане
- [Огляд встановлення](/uk/install) — усі способи встановлення
- [Podman](/uk/install/podman) — альтернатива Docker на базі Podman
- [ClawDock](/uk/install/clawdock) — спільнотне налаштування Docker Compose
- [Оновлення](/uk/install/updating) — як підтримувати OpenClaw в актуальному стані
- [Конфігурація](/uk/gateway/configuration) — конфігурація gateway після встановлення
- [Оновлення](/uk/install/updating) — підтримання OpenClaw в актуальному стані
- [Конфігурація](/uk/gateway/configuration) — конфігурація Gateway після встановлення