From 3bbbf41b852fd3edc5978be4b95056f74523dfa4 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sun, 26 Apr 2026 05:00:51 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/gateway/bonjour.md | 206 +++++++++++++++++++++++----------- docs/uk/install/docker.md | 223 +++++++++++++++++++------------------ 2 files changed, 254 insertions(+), 175 deletions(-) diff --git a/docs/uk/gateway/bonjour.md b/docs/uk/gateway/bonjour.md index 7ead4f256..06372248c 100644 --- a/docs/uk/gateway/bonjour.md +++ b/docs/uk/gateway/bonjour.md @@ -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 / DNS‑SD) для виявлення активного Gateway (кінцевої точки WebSocket). -Багатоадресний перегляд `local.` — це **лише зручність у межах LAN**. Вбудований Plugin `bonjour` -відповідає за рекламу в LAN і ввімкнений за замовчуванням. Для виявлення між різними мережами -той самий маяк також може публікуватися через налаштований домен wide-area DNS-SD. -Виявлення все одно виконується за принципом best-effort і **не** замінює підключення через SSH або Tailnet. +OpenClaw використовує Bonjour (mDNS / DNS‑SD) для виявлення активного 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 DNS‑SD** ("Wide‑Area Bonjour") через Tailscale. @@ -32,11 +32,11 @@ OpenClaw використовує Bonjour (mDNS / DNS‑SD) для виявле 1. Запустіть DNS-сервер на хості gateway (доступний через Tailnet). 2. Опублікуйте записи DNS‑SD для `_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/.db` +- обслуговував вибраний домен (приклад: `openclaw.internal.`) з `~/.openclaw/dns/.db` Перевірте з машини, підключеної до tailnet: @@ -72,52 +72,52 @@ dig @ -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=` +- `displayName=<дружня назва>` - `lanHost=.local` - `gatewayPort=` (Gateway WS + HTTP) -- `gatewayTls=1` (лише коли ввімкнено TLS) -- `gatewayTlsSha256=` (лише коли ввімкнено TLS і доступний відбиток) -- `canvasPort=` (лише коли ввімкнено canvas host; наразі збігається з `gatewayPort`) +- `gatewayTls=1` (лише коли TLS увімкнено) +- `gatewayTlsSha256=` (лише коли TLS увімкнено і відбиток доступний) +- `canvasPort=` (лише коли ввімкнено canvas host; наразі те саме, що й `gatewayPort`) - `transport=gateway` -- `tailnetDns=` (лише в режимі mDNS full, необов’язкова підказка, коли Tailnet доступний) -- `sshPort=` (лише в режимі mDNS full; wide-area DNS-SD може його не включати) -- `cliPath=` (лише в режимі mDNS full; wide-area DNS-SD усе одно записує його як підказку для віддаленого встановлення) +- `tailnetDns=` (лише в повному режимі mDNS, необов’язкова підказка, коли Tailnet доступний) +- `sshPort=` (лише в повному режимі mDNS; wide-area DNS-SD може його не включати) +- `cliPath=` (лише в повному режимі 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 "" _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. -- **Багатоадресна передача заблокована**: деякі Wi‑Fi мережі вимикають 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://: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. +- **Багатоадресність заблокована**: деякі мережі Wi‑Fi вимикають 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/DNS‑SD часто екранує байти в іменах екземплярів сервісу як десяткові послідовності `\DDD` +Bonjour/DNS‑SD часто екранує байти в іменах екземплярів сервісів як десяткові послідовності `\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) diff --git a/docs/uk/install/docker.md b/docs/uk/install/docker.md index 45460740f..e0ba09cc7 100644 --- a/docs/uk/install/docker.md +++ b/docs/uk/install/docker.md @@ -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 **необов’язковий**. Використовуйте його - Скрипт налаштування запускає онбординг автоматично. Він: + Скрипт налаштування автоматично запускає онбординг. Він: - - запросить API-ключі провайдерів + - запропонує ввести API-ключі провайдерів - згенерує токен Gateway і запише його в `.env` - запустить Gateway через Docker Compose - Під час налаштування передстартовий онбординг і запис конфігурації виконуються - безпосередньо через `openclaw-gateway`. `openclaw-cli` призначений для команд, які ви запускаєте після того, - як контейнер gateway уже існує. + Під час налаштування попередній онбординг перед стартом і записи конфігурації виконуються безпосередньо через + `openclaw-gateway`. `openclaw-cli` призначений для команд, які ви запускаєте після + того, як контейнер Gateway уже існує. - Відкрийте `http://127.0.0.1:18789/` у браузері та вставте налаштований - спільний секрет у Settings. Скрипт налаштування за замовчуванням записує токен у `.env`; якщо ви перемкнете конфігурацію контейнера на автентифікацію паролем, використовуйте натомість цей + Відкрийте `http://127.0.0.1:18789/` у браузері й вставте налаштований + спільний секрет у Settings. Скрипт налаштування за замовчуванням записує токен у `.env`; якщо ви переключите конфігурацію контейнера на автентифікацію за паролем, натомість використайте цей пароль. Потрібна URL-адреса знову? @@ -80,7 +80,7 @@ Docker **необов’язковий**. Використовуйте його - Використовуйте контейнер CLI, щоб додати канали обміну повідомленнями: + Використайте контейнер CLI, щоб додати канали обміну повідомленнями: ```bash # WhatsApp (QR) @@ -114,12 +114,12 @@ docker compose up -d openclaw-gateway Запускайте `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`. -Оскільки `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`. @@ -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. -Використовуйте значення режиму 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`. ### 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//agent/auth-profiles.json` для збереженої OAuth/API-key автентифікації провайдера -- `.env` для секретів середовища виконання, що передаються через env, як-от `OPENCLAW_GATEWAY_TOKEN` +- `agents//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). - + ```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`. - Вимкніть виділення псевдо-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 - `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`. - Образ працює від імені `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 Упорядкуйте 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 - - Типовий образ орієнтований на безпеку й працює від непривілейованого `node`. Для більш + + Стандартний образ орієнтований на безпеку й запускається від непривілейованого користувача `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`. - - Якщо у майстрі ви оберете OAuth OpenAI Codex, він відкриє URL-адресу в браузері. У - Docker або headless-середовищах скопіюйте повну URL-адресу перенаправлення, на яку ви потрапите, і вставте + + Якщо у майстрі ви вибираєте OpenAI Codex OAuth, відкривається URL-адреса в браузері. У + Docker або headless-середовищах скопіюйте повну URL-адресу перенаправлення, куди ви потрапите, і вставте її назад у майстер, щоб завершити автентифікацію. Основний образ 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). ### Запуск на 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 ``` -## Усунення несправностей +## Усунення проблем - - Зберіть образ sandbox за допомогою + + Зберіть образ ізоляції за допомогою [`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` на ваш власний образ. Контейнери автоматично створюються для кожного сеансу за потреби. - - Встановіть `docker.user` у UID:GID, що відповідає власнику змонтованого workspace, - або змініть власника папки workspace через chown. + + Установіть `docker.user` на UID:GID, що відповідає власнику змонтованого робочого простору, + або змініть власника теки робочого простору через `chown`. - - OpenClaw запускає команди через `sh -lc` (login shell), який завантажує - `/etc/profile` і може скинути PATH. Встановіть `docker.env.PATH`, щоб додати - шляхи до ваших користувацьких інструментів, або додайте скрипт у `/etc/profile.d/` у вашому Dockerfile. + + OpenClaw виконує команди через `sh -lc` (login shell), який завантажує + `/etc/profile` і може скидати PATH. Установіть `docker.env.PATH`, щоб додати + ваші шляхи до користувацьких інструментів на початок, або додайте скрипт у `/etc/profile.d/` у вашому Dockerfile. - + VM потребує щонайменше 2 ГБ RAM. Використайте більший клас машини й повторіть спробу. - - Отримайте нове посилання dashboard і схваліть пристрій браузера: + + Отримайте нове посилання Dashboard і підтвердьте браузерний пристрій: ```bash docker compose run --rm openclaw-cli dashboard --no-open @@ -403,8 +404,8 @@ scripts/sandbox-setup.sh - - Скиньте режим і bind gateway: + + Скиньте режим і прив’язку 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 -## Пов’язані матеріали +## Пов’язане - [Огляд встановлення](/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 після встановлення