diff --git a/docs/uk/platforms/mac/remote.md b/docs/uk/platforms/mac/remote.md index f2140053d..c6c610555 100644 --- a/docs/uk/platforms/mac/remote.md +++ b/docs/uk/platforms/mac/remote.md @@ -1,96 +1,97 @@ --- read_when: - Налаштування або налагодження віддаленого керування Mac -summary: Потік роботи застосунку macOS для керування віддаленим Gateway OpenClaw через SSH +summary: Сценарій у застосунку macOS для керування віддаленим OpenClaw Gateway через SSH title: Віддалене керування x-i18n: - generated_at: "2026-04-26T04:29:32Z" - model: gpt-5.4 + generated_at: "2026-04-30T11:18:06Z" + model: gpt-5.5 provider: openai - source_hash: 4de4980fe378fc9b685cf7732d21a80c640088191308b8ef1d3df9f468cb5be2 + source_hash: 2c63f752c3636a253220310c7c8e57a28549704b74b2f0370bac432bae28a7d3 source_path: platforms/mac/remote.md - workflow: 15 + workflow: 16 --- # Віддалений OpenClaw (macOS ⇄ віддалений хост) -Цей сценарій дає змогу застосунку macOS діяти як повноцінний засіб віддаленого керування Gateway OpenClaw, що працює на іншому хості (настільному ПК/сервері). Це функція застосунку **Remote over SSH** (віддалений запуск). Усі функції — перевірки стану, переспрямування Voice Wake і Web Chat — повторно використовують ту саму конфігурацію віддаленого SSH з _Settings → General_. +Цей сценарій дає змогу застосунку macOS працювати як повноцінний пульт віддаленого керування для OpenClaw gateway, що працює на іншому хості (настільному комп’ютері/сервері). Це функція застосунку **Віддалено через SSH** (віддалений запуск). Усі функції — перевірки стану, пересилання голосового пробудження та веб-чат — повторно використовують ту саму віддалену SSH-конфігурацію з _Налаштування → Загальні_. ## Режими -- **Локально (цей Mac)**: Усе працює на ноутбуці. SSH не використовується. -- **Remote over SSH (типово)**: Команди OpenClaw виконуються на віддаленому хості. Застосунок mac відкриває SSH-з’єднання з `-o BatchMode`, а також використовує вибраний вами identity/key і локальне переспрямування порту. -- **Remote direct (ws/wss)**: Без SSH-тунелю. Застосунок mac підключається безпосередньо до URL Gateway (наприклад, через Tailscale Serve або публічний HTTPS reverse proxy). +- **Локально (цей Mac)**: усе працює на ноутбуці. SSH не використовується. +- **Віддалено через SSH (типово)**: команди OpenClaw виконуються на віддаленому хості. Застосунок Mac відкриває SSH-з’єднання з `-o BatchMode`, вибраним вами ідентифікатором/ключем і локальним перенаправленням порту. +- **Віддалено напряму (ws/wss)**: без SSH-тунелю. Застосунок Mac підключається безпосередньо до URL gateway (наприклад, через Tailscale Serve або публічний зворотний HTTPS-проксі). ## Віддалені транспорти Віддалений режим підтримує два транспорти: -- **SSH tunnel** (типово): Використовує `ssh -N -L ...` для переспрямування порту Gateway на localhost. Gateway бачитиме IP Node як `127.0.0.1`, оскільки тунель працює через loopback. -- **Direct (ws/wss)**: Підключається безпосередньо до URL Gateway. Gateway бачить справжню IP-адресу клієнта. +- **SSH-тунель** (типово): використовує `ssh -N -L ...`, щоб перенаправити порт gateway на localhost. Gateway бачитиме IP вузла як `127.0.0.1`, бо тунель є loopback. +- **Пряме підключення (ws/wss)**: підключається прямо до URL gateway. Gateway бачить реальний IP клієнта. -У режимі SSH tunnel виявлені імена хостів LAN/tailnet зберігаються як -`gateway.remote.sshTarget`. Застосунок зберігає `gateway.remote.url` на локальній -кінцевій точці тунелю, наприклад `ws://127.0.0.1:18789`, тому CLI, Web Chat і -локальний сервіс node-host використовують той самий безпечний транспорт loopback. +У режимі SSH-тунелю виявлені імена хостів LAN/tailnet зберігаються як +`gateway.remote.sshTarget`. Застосунок залишає `gateway.remote.url` на локальній +кінцевій точці тунелю, наприклад `ws://127.0.0.1:18789`, щоб CLI, веб-чат і +локальна служба хоста вузла використовували той самий безпечний loopback-транспорт. -Автоматизація браузера у віддаленому режимі належить CLI node host, а не -власному Node застосунку macOS. Застосунок запускає встановлений сервіс node host, коли -це можливо; якщо вам потрібне керування браузером із цього Mac, установіть/запустіть його за допомогою -`openclaw node install ...` і `openclaw node start` (або виконайте -`openclaw node run ...` на передньому плані), а потім націліться на цей Node -із підтримкою браузера. +Автоматизацією браузера у віддаленому режимі керує хост вузла CLI, а не +рідний вузол застосунку macOS. Застосунок запускає встановлену службу хоста вузла, +коли це можливо; якщо вам потрібне керування браузером із цього Mac, установіть/запустіть її за допомогою +`openclaw node install ...` і `openclaw node start` (або запустіть +`openclaw node run ...` у передньому плані), а потім спрямуйте роботу на цей +вузол із підтримкою браузера. -## Необхідні умови на віддаленому хості +## Передумови на віддаленому хості -1. Установіть Node + pnpm і зберіть/установіть CLI OpenClaw (`pnpm install && pnpm build && pnpm link --global`). -2. Переконайтеся, що `openclaw` доступний у PATH для неінтерактивних оболонок (за потреби створіть symlink у `/usr/local/bin` або `/opt/homebrew/bin`). -3. Увімкніть SSH з автентифікацією за ключем. Ми рекомендуємо IP-адреси **Tailscale** для стабільної доступності поза LAN. +1. Установіть Node + pnpm і зберіть/установіть OpenClaw CLI (`pnpm install && pnpm build && pnpm link --global`). +2. Переконайтеся, що `openclaw` є в PATH для неінтерактивних оболонок (за потреби створіть symlink у `/usr/local/bin` або `/opt/homebrew/bin`). +3. Відкрийте SSH з автентифікацією за ключем. Ми рекомендуємо IP-адреси **Tailscale** для стабільної доступності поза LAN. ## Налаштування застосунку macOS -1. Відкрийте _Settings → General_. -2. У розділі **OpenClaw runs** виберіть **Remote over SSH** і задайте: - - **Transport**: **SSH tunnel** або **Direct (ws/wss)**. - - **SSH target**: `user@host` (необов’язково `:port`). - - Якщо Gateway перебуває в тій самій LAN і рекламує себе через Bonjour, виберіть його зі списку знайдених, щоб автоматично заповнити це поле. - - **Gateway URL** (лише Direct): `wss://gateway.example.ts.net` (або `ws://...` для локальної мережі/LAN). - - **Identity file** (додатково): шлях до вашого ключа. - - **Project root** (додатково): шлях до checkout на віддаленому хості, що використовується для команд. - - **CLI path** (додатково): необов’язковий шлях до придатної для запуску точки входу/бінарного файла `openclaw` (автоматично заповнюється, якщо рекламується). -3. Натисніть **Test remote**. Успіх означає, що віддалена команда `openclaw status --json` виконується правильно. Помилки зазвичай означають проблеми з PATH/CLI; код виходу 127 означає, що CLI не знайдено на віддаленому хості. -4. Перевірки стану та Web Chat тепер автоматично працюватимуть через цей SSH-тунель. +1. Відкрийте _Налаштування → Загальні_. +2. У розділі **OpenClaw runs** виберіть **Віддалено через SSH** і задайте: + - **Транспорт**: **SSH-тунель** або **Пряме підключення (ws/wss)**. + - **SSH-ціль**: `user@host` (необов’язково `:port`). + - Якщо gateway у тій самій LAN і рекламує Bonjour, виберіть його зі списку виявлених, щоб автоматично заповнити це поле. + - **URL Gateway** (лише для прямого підключення): `wss://gateway.example.ts.net` (або `ws://...` для локального/LAN). + - **Файл ідентичності** (розширено): шлях до вашого ключа. + - **Корінь проєкту** (розширено): шлях віддаленого checkout, що використовується для команд. + - **Шлях CLI** (розширено): необов’язковий шлях до виконуваної точки входу/бінарного файлу `openclaw` (автоматично заповнюється, коли рекламується). +3. Натисніть **Перевірити віддалене підключення**. Успіх означає, що віддалений `openclaw status --json` виконується правильно. Збої зазвичай означають проблеми з PATH/CLI; код виходу 127 означає, що CLI не знайдено віддалено. +4. Перевірки стану й веб-чат тепер автоматично працюватимуть через цей SSH-тунель. -## Web Chat +## Веб-чат -- **SSH tunnel**: Web Chat підключається до Gateway через переспрямований порт керування WebSocket (типово 18789). -- **Direct (ws/wss)**: Web Chat підключається безпосередньо до налаштованого URL Gateway. +- **SSH-тунель**: веб-чат підключається до gateway через перенаправлений керівний порт WebSocket (типово 18789). +- **Пряме підключення (ws/wss)**: веб-чат підключається прямо до налаштованого URL gateway. - Окремого HTTP-сервера WebChat більше немає. ## Дозволи -- Віддаленому хосту потрібні ті самі дозволи TCC, що й локальному (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Запустіть онбординг на цій машині, щоб надати їх один раз. -- Nodes рекламують свій стан дозволів через `node.list` / `node.describe`, щоб агенти знали, що доступно. +- Віддаленому хосту потрібні ті самі дозволи TCC, що й локальному (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Запустіть onboarding на цій машині, щоб надати їх один раз. +- Вузли рекламують свій стан дозволів через `node.list` / `node.describe`, щоб агенти знали, що доступно. ## Примітки щодо безпеки -- Віддавайте перевагу прив’язці до loopback на віддаленому хості та підключенню через SSH або Tailscale. -- SSH-тунелювання використовує сувору перевірку host key; спочатку довіртеся host key, щоб він існував у `~/.ssh/known_hosts`. -- Якщо ви прив’язуєте Gateway до не-loopback інтерфейсу, вимагайте дійсну автентифікацію Gateway: token, password або reverse proxy з identity-aware з `gateway.auth.mode: "trusted-proxy"`. +- Надавайте перевагу loopback-прив’язкам на віддаленому хості та підключайтеся через SSH або Tailscale. +- SSH-тунелювання використовує сувору перевірку ключа хоста; спочатку довірте ключ хоста, щоб він існував у `~/.ssh/known_hosts`. +- Якщо ви прив’язуєте Gateway до інтерфейсу, що не є loopback, вимагайте дійсну автентифікацію Gateway: токен, пароль або зворотний проксі з урахуванням ідентичності з `gateway.auth.mode: "trusted-proxy"`. - Див. [Безпека](/uk/gateway/security) і [Tailscale](/uk/gateway/tailscale). -## Потік входу WhatsApp (віддалено) +## Сценарій входу WhatsApp (віддалено) -- Запустіть `openclaw channels login --verbose` **на віддаленому хості**. Відскануйте QR-код за допомогою WhatsApp на телефоні. -- Повторно запустіть вхід на цьому хості, якщо автентифікація завершиться. Перевірка стану покаже проблеми з прив’язкою. +- Запустіть `openclaw channels login --verbose` **на віддаленому хості**. Проскануйте QR-код у WhatsApp на телефоні. +- Повторно запустіть вхід на цьому хості, якщо термін автентифікації мине. Перевірка стану покаже проблеми з прив’язкою. -## Усунення проблем +## Усунення несправностей -- **exit 127 / not found**: `openclaw` відсутній у PATH для не-login оболонок. Додайте його в `/etc/paths`, rc-файл вашої оболонки або створіть symlink у `/usr/local/bin`/`/opt/homebrew/bin`. -- **Health probe failed**: перевірте доступність SSH, PATH і те, що Baileys увійшов у систему (`openclaw status --json`). -- **Web Chat stuck**: переконайтеся, що Gateway працює на віддаленому хості, а переспрямований порт відповідає WS-порту Gateway; для UI потрібне справне WS-з’єднання. -- **Node IP shows 127.0.0.1**: це очікувано при використанні SSH tunnel. Перемкніть **Transport** на **Direct (ws/wss)**, якщо хочете, щоб Gateway бачив справжню IP-адресу клієнта. -- **Voice Wake**: trigger phrases автоматично переспрямовуються у віддаленому режимі; окремий засіб переспрямування не потрібен. +- **код виходу 127 / не знайдено**: `openclaw` не в PATH для оболонок без входу. Додайте його до `/etc/paths`, rc-файлу вашої оболонки або створіть symlink у `/usr/local/bin`/`/opt/homebrew/bin`. +- **Проба стану не вдалася**: перевірте доступність SSH, PATH і те, що в Baileys виконано вхід (`openclaw status --json`). +- **Веб-чат завис**: підтвердьте, що gateway працює на віддаленому хості, а перенаправлений порт збігається з WS-портом gateway; UI потребує справного WS-з’єднання. +- **IP вузла показує 127.0.0.1**: очікувано для SSH-тунелю. Змініть **Транспорт** на **Пряме підключення (ws/wss)**, якщо хочете, щоб gateway бачив реальний IP клієнта. +- **Dashboard працює, але можливості Mac офлайн**: це означає, що операторське/керівне з’єднання застосунку справне, але з’єднання супутнього вузла не підключене або не має поверхні команд. Відкрийте розділ пристрою в рядку меню й перевірте, чи Mac має стан `paired · disconnected`. Для кінцевих точок Tailscale Serve `wss://*.ts.net` застосунок виявляє застарілі legacy TLS leaf pins після ротації сертифіката, очищає застарілий pin, коли macOS довіряє новому сертифікату, і автоматично повторює спробу. Якщо сертифікат не є довіреним у системі або хост не є іменем Tailscale Serve, перегляньте сертифікат або перейдіть на **Віддалено через SSH**. +- **Голосове пробудження**: тригерні фрази автоматично пересилаються у віддаленому режимі; окремий пересилач не потрібен. ## Звуки сповіщень @@ -100,9 +101,9 @@ x-i18n: openclaw nodes notify --node --title "Ping" --body "Remote gateway ready" --sound Glass ``` -Глобального перемикача «звук за замовчуванням» у застосунку більше немає; виклики вибирають звук (або його відсутність) окремо для кожного запиту. +Глобального перемикача «типовий звук» у застосунку більше немає; виклики вибирають звук (або жодного) для кожного запиту. ## Пов’язане -- [застосунок macOS](/uk/platforms/macos) +- [Застосунок macOS](/uk/platforms/macos) - [Віддалений доступ](/uk/gateway/remote)