From a67e5ae814f5c8d246a0179ae2f5d04b522bec64 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sun, 3 May 2026 13:44:02 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/install/fly.md | 255 ++++++++++++++++++++--------------------- 1 file changed, 126 insertions(+), 129 deletions(-) diff --git a/docs/uk/install/fly.md b/docs/uk/install/fly.md index 741273d08..4dfa09132 100644 --- a/docs/uk/install/fly.md +++ b/docs/uk/install/fly.md @@ -2,46 +2,46 @@ read_when: - Розгортання OpenClaw на Fly.io - Налаштування томів Fly, секретів і конфігурації першого запуску -summary: Покрокове розгортання OpenClaw на Fly.io зі сталим сховищем і HTTPS +summary: Покрокове розгортання OpenClaw на Fly.io з постійним сховищем і HTTPS title: Fly.io x-i18n: - generated_at: "2026-04-27T07:08:16Z" - model: gpt-5.4 + generated_at: "2026-05-03T13:42:43Z" + model: gpt-5.5 provider: openai - source_hash: 195a77c4cec439dc2b5030f5ee618274df76b16d878b8d16e65a754e4bd8072c + source_hash: d9b98b2d1c102195e31ee7e93ba075e6cfa16080e78f8e17fc006a62d300ce1a source_path: install/fly.md - workflow: 15 + workflow: 16 --- # Розгортання Fly.io -**Мета:** Gateway OpenClaw, що працює на машині [Fly.io](https://fly.io), зі сталим сховищем, автоматичним HTTPS і доступом до Discord/каналів. +**Мета:** OpenClaw Gateway, запущений на машині [Fly.io](https://fly.io), зі сталим сховищем, автоматичним HTTPS і доступом до Discord/каналу. -## Що вам потрібно +## Що потрібно -- встановлений [flyctl CLI](https://fly.io/docs/hands-on/install-flyctl/) -- обліковий запис Fly.io (безкоштовний тариф підходить) -- автентифікація моделі: API-ключ для вибраного вами постачальника моделей -- облікові дані каналу: токен Discord-бота, токен Telegram тощо +- Встановлений [flyctl CLI](https://fly.io/docs/hands-on/install-flyctl/) +- Обліковий запис Fly.io (безкоштовний рівень підходить) +- Автентифікація моделі: API-ключ для вибраного постачальника моделей +- Облікові дані каналу: токен бота Discord, токен Telegram тощо. ## Швидкий шлях для початківців 1. Клонуйте репозиторій → налаштуйте `fly.toml` 2. Створіть застосунок і том → задайте секрети 3. Розгорніть за допомогою `fly deploy` -4. Увійдіть через SSH, щоб створити конфігурацію, або скористайтеся Control UI +4. Увійдіть через SSH, щоб створити конфігурацію, або використайте інтерфейс керування - + ```bash - # Клонуйте репозиторій + # Clone the repo git clone https://github.com/openclaw/openclaw.git cd openclaw - # Створіть новий застосунок Fly (виберіть власну назву) + # Create a new Fly app (pick your own name) fly apps create my-openclaw - # Створіть сталий том (зазвичай достатньо 1GB) + # Create a persistent volume (1GB is usually enough) fly volumes create openclaw_data --size 1 --region iad ``` @@ -49,13 +49,13 @@ x-i18n: - - Відредагуйте `fly.toml`, щоб він відповідав назві вашого застосунку та вашим вимогам. + + Відредагуйте `fly.toml`, щоб він відповідав назві вашого застосунку та вимогам. - **Примітка щодо безпеки:** Конфігурація за замовчуванням відкриває публічну URL-адресу. Для захищеного розгортання без публічної IP-адреси див. [Приватне розгортання](#private-deployment-hardened) або використовуйте `fly.private.toml`. + **Примітка щодо безпеки:** Типова конфігурація відкриває публічну URL-адресу. Для посиленого розгортання без публічної IP-адреси див. [Приватне розгортання](#private-deployment-hardened) або використайте `deploy/fly.private.toml`. ```toml - app = "my-openclaw" # Назва вашого застосунку + app = "my-openclaw" # Your app name primary_region = "iad" [build] @@ -87,48 +87,48 @@ x-i18n: destination = "/data" ``` - **Ключові параметри:** + **Ключові налаштування:** - | Параметр | Навіщо | - | ----------------------------- | --------------------------------------------------------------------------- | - | `--bind lan` | Прив’язує до `0.0.0.0`, щоб проксі Fly міг досягти gateway | - | `--allow-unconfigured` | Запускає без файла конфігурації (ви створите його пізніше) | - | `internal_port = 3000` | Має збігатися з `--port 3000` (або `OPENCLAW_GATEWAY_PORT`) для перевірок стану Fly | - | `memory = "2048mb"` | 512MB замало; рекомендовано 2GB | - | `OPENCLAW_STATE_DIR = "/data"`| Зберігає стан у томі | + | Налаштування | Навіщо | + | ----------------------------- | -------------------------------------------------------------------------- | + | `--bind lan` | Прив’язує до `0.0.0.0`, щоб проксі Fly міг досягати Gateway | + | `--allow-unconfigured` | Запускає без файлу конфігурації (ви створите його пізніше) | + | `internal_port = 3000` | Має відповідати `--port 3000` (або `OPENCLAW_GATEWAY_PORT`) для перевірок стану Fly | + | `memory = "2048mb"` | 512 МБ замало; рекомендовано 2 ГБ | + | `OPENCLAW_STATE_DIR = "/data"` | Зберігає стан на томі | - + ```bash - # Обов’язково: токен Gateway (для прив’язки не до loopback) + # Required: Gateway token (for non-loopback binding) fly secrets set OPENCLAW_GATEWAY_TOKEN=$(openssl rand -hex 32) - # API-ключі постачальників моделей + # Model provider API keys fly secrets set ANTHROPIC_API_KEY=sk-ant-... - # Необов’язково: інші постачальники + # Optional: Other providers fly secrets set OPENAI_API_KEY=sk-... fly secrets set GOOGLE_API_KEY=... - # Токени каналів + # Channel tokens fly secrets set DISCORD_BOT_TOKEN=MTQ... ``` **Примітки:** - - Прив’язки не до loopback (`--bind lan`) потребують дійсного шляху автентифікації gateway. У цьому прикладі Fly.io використовується `OPENCLAW_GATEWAY_TOKEN`, але вимогу також задовольняють `gateway.auth.password` або правильно налаштоване розгортання `trusted-proxy` не на loopback. - - Ставтеся до цих токенів як до паролів. - - **Надавайте перевагу env vars замість файла конфігурації** для всіх API-ключів і токенів. Це не дозволить секретам потрапити в `openclaw.json`, де вони можуть бути випадково розкриті або записані в журнали. + - Прив’язки не до loopback (`--bind lan`) потребують чинного шляху автентифікації Gateway. У цьому прикладі Fly.io використовується `OPENCLAW_GATEWAY_TOKEN`, але `gateway.auth.password` або правильно налаштоване розгортання `trusted-proxy` не до loopback також задовольняє цю вимогу. + - Поводьтеся з цими токенами як із паролями. + - **Надавайте перевагу змінним середовища замість файлу конфігурації** для всіх API-ключів і токенів. Це не дає секретам потрапити в `openclaw.json`, де їх можна випадково розкрити або записати в журнал. - + ```bash fly deploy ``` - Перше розгортання збирає Docker-образ (~2–3 хвилини). Наступні розгортання швидші. + Перше розгортання збирає Docker-образ (~2-3 хвилини). Наступні розгортання швидші. Після розгортання перевірте: @@ -146,14 +146,14 @@ x-i18n: - - Підключіться до машини через SSH, щоб створити правильну конфігурацію: + + Увійдіть у машину через SSH, щоб створити належну конфігурацію: ```bash fly ssh console ``` - Створіть каталог конфігурації та файл: + Створіть каталог і файл конфігурації: ```bash mkdir -p /data @@ -214,20 +214,18 @@ x-i18n: EOF ``` - **Примітка:** З `OPENCLAW_STATE_DIR=/data` шлях до конфігурації — `/data/openclaw.json`. + **Примітка:** З `OPENCLAW_STATE_DIR=/data` шлях конфігурації — `/data/openclaw.json`. - **Примітка:** Замініть `https://my-openclaw.fly.dev` на справжнє - origin вашого застосунку Fly. Під час запуску Gateway ініціалізує локальні origin для Control UI на основі значень `--bind` і `--port` у середовищі виконання, тож перший запуск може відбутися ще до існування конфігурації, але для доступу з браузера через Fly все одно потрібно точно вказати HTTPS origin у - `gateway.controlUi.allowedOrigins`. + **Примітка:** Замініть `https://my-openclaw.fly.dev` на справжнє джерело вашого застосунку Fly. Під час запуску Gateway початково додає локальні джерела інтерфейсу керування з runtime-значень `--bind` і `--port`, щоб перше завантаження могло продовжитися до появи конфігурації, але доступ через браузер через Fly усе одно потребує точної HTTPS-адреси джерела, переліченої в `gateway.controlUi.allowedOrigins`. - **Примітка:** Токен Discord може надходити з одного з двох джерел: + **Примітка:** Токен Discord може надходити з будь-якого з цих джерел: - - змінна середовища: `DISCORD_BOT_TOKEN` (рекомендовано для секретів) - - файл конфігурації: `channels.discord.token` + - Змінна середовища: `DISCORD_BOT_TOKEN` (рекомендовано для секретів) + - Файл конфігурації: `channels.discord.token` - Якщо ви використовуєте env var, додавати токен до конфігурації не потрібно. Gateway автоматично зчитує `DISCORD_BOT_TOKEN`. + Якщо використовуєте змінну середовища, не потрібно додавати токен у конфігурацію. Gateway автоматично читає `DISCORD_BOT_TOKEN`. - Перезапустіть, щоб застосувати зміни: + Перезапустіть, щоб застосувати: ```bash exit @@ -236,8 +234,8 @@ x-i18n: - - ### Control UI + + ### Інтерфейс керування Відкрийте в браузері: @@ -245,18 +243,18 @@ x-i18n: fly open ``` - Або перейдіть за адресою `https://my-openclaw.fly.dev/` + Або перейдіть на `https://my-openclaw.fly.dev/` - Автентифікуйтеся за допомогою налаштованого спільного секрету. У цьому посібнику використовується токен gateway з `OPENCLAW_GATEWAY_TOKEN`; якщо ви перейшли на автентифікацію за паролем, використовуйте натомість цей пароль. + Автентифікуйтеся за допомогою налаштованого спільного секрету. У цьому посібнику використовується токен Gateway з `OPENCLAW_GATEWAY_TOKEN`; якщо ви перейшли на автентифікацію паролем, використайте натомість цей пароль. ### Журнали ```bash - fly logs # Журнали в реальному часі - fly logs --no-tail # Останні журнали + fly logs # Live logs + fly logs --no-tail # Recent logs ``` - ### Консоль SSH + ### SSH-консоль ```bash fly ssh console @@ -265,25 +263,25 @@ x-i18n: -## Усунення проблем +## Усунення несправностей -### "App is not listening on expected address" +### «Застосунок не прослуховує очікувану адресу» -Gateway прив’язується до `127.0.0.1`, а не до `0.0.0.0`. +Gateway прив’язується до `127.0.0.1` замість `0.0.0.0`. **Виправлення:** Додайте `--bind lan` до команди процесу в `fly.toml`. -### Перевірки стану не проходять / connection refused +### Перевірки стану не проходять / у з’єднанні відмовлено -Fly не може досягти gateway на налаштованому порту. +Fly не може досягти Gateway на налаштованому порту. -**Виправлення:** Переконайтеся, що `internal_port` збігається з портом gateway (задайте `--port 3000` або `OPENCLAW_GATEWAY_PORT=3000`). +**Виправлення:** Переконайтеся, що `internal_port` відповідає порту Gateway (задайте `--port 3000` або `OPENCLAW_GATEWAY_PORT=3000`). ### OOM / проблеми з пам’яттю Контейнер постійно перезапускається або завершується примусово. Ознаки: `SIGABRT`, `v8::internal::Runtime_AllocateInYoungGeneration` або тихі перезапуски. -**Виправлення:** Збільште обсяг пам’яті в `fly.toml`: +**Виправлення:** Збільште пам’ять у `fly.toml`: ```toml [[vm]] @@ -296,13 +294,13 @@ Fly не може досягти gateway на налаштованому пор fly machine update --vm-memory 2048 -y ``` -**Примітка:** 512MB замало. 1GB може працювати, але може призвести до OOM під навантаженням або з докладним журналюванням. **Рекомендовано 2GB.** +**Примітка:** 512 МБ замало. 1 ГБ може працювати, але може спричинити OOM під навантаженням або з докладним журналюванням. **Рекомендовано 2 ГБ.** ### Проблеми з блокуванням Gateway -Gateway відмовляється запускатися з помилками на кшталт "already running". +Gateway відмовляється запускатися з помилками «already running». -Це трапляється, коли контейнер перезапускається, але файл блокування PID зберігається в томі. +Це трапляється, коли контейнер перезапускається, але PID-файл блокування зберігається на томі. **Виправлення:** Видаліть файл блокування: @@ -311,11 +309,11 @@ fly ssh console --command "rm -f /data/gateway.*.lock" fly machine restart ``` -Файл блокування розташований за шляхом `/data/gateway.*.lock` (не в підкаталозі). +Файл блокування розташований у `/data/gateway.*.lock` (не в підкаталозі). -### Конфігурація не зчитується +### Конфігурація не читається -`--allow-unconfigured` лише обходить перевірку під час запуску. Він не створює й не відновлює `/data/openclaw.json`, тож переконайтеся, що ваша справжня конфігурація існує і містить `gateway.mode="local"`, якщо вам потрібен звичайний локальний запуск gateway. +`--allow-unconfigured` лише обходить запобіжник запуску. Він не створює й не відновлює `/data/openclaw.json`, тож переконайтеся, що ваша справжня конфігурація існує та містить `gateway.mode="local"`, коли потрібен звичайний локальний запуск Gateway. Перевірте, що конфігурація існує: @@ -328,10 +326,10 @@ fly ssh console --command "cat /data/openclaw.json" Команда `fly ssh console -C` не підтримує перенаправлення оболонки. Щоб записати файл конфігурації: ```bash -# Використовуйте echo + tee (передайте з локальної машини на віддалену) +# Use echo + tee (pipe from local to remote) echo '{"your":"config"}' | fly ssh console -C "tee /data/openclaw.json" -# Або використовуйте sftp +# Or use sftp fly sftp shell > put /local/path/config.json /data/openclaw.json ``` @@ -344,79 +342,78 @@ fly ssh console --command "rm /data/openclaw.json" ### Стан не зберігається -Якщо після перезапуску ви втрачаєте профілі автентифікації, стан каналу/постачальника або сесії, -це означає, що каталог стану записується у файлову систему контейнера. +Якщо після перезапуску ви втрачаєте профілі автентифікації, стан каналу/постачальника або сеанси, каталог стану записується у файлову систему контейнера. -**Виправлення:** Переконайтеся, що в `fly.toml` задано `OPENCLAW_STATE_DIR=/data`, і виконайте повторне розгортання. +**Виправлення:** Переконайтеся, що `OPENCLAW_STATE_DIR=/data` задано у `fly.toml`, і повторно розгорніть. ## Оновлення ```bash -# Отримайте останні зміни +# Pull latest changes git pull -# Повторно розгорніть +# Redeploy fly deploy -# Перевірте стан +# Check health fly status fly logs ``` ### Оновлення команди машини -Якщо вам потрібно змінити команду запуску без повного повторного розгортання: +Якщо потрібно змінити команду запуску без повного повторного розгортання: ```bash -# Отримайте ID машини +# Get machine ID fly machines list -# Оновіть команду +# Update command fly machine update --command "node dist/index.js gateway --port 3000 --bind lan" -y -# Або разом зі збільшенням пам’яті +# Or with memory increase fly machine update --vm-memory 2048 --command "node dist/index.js gateway --port 3000 --bind lan" -y ``` -**Примітка:** Після `fly deploy` команда машини може скинутися до значення з `fly.toml`. Якщо ви вносили зміни вручну, застосуйте їх повторно після розгортання. +**Примітка:** Після `fly deploy` команда машини може скинутися до того, що вказано в `fly.toml`. Якщо ви внесли зміни вручну, застосуйте їх повторно після розгортання. -## Приватне розгортання (захищене) +## Приватне розгортання (посилене) -За замовчуванням Fly виділяє публічні IP-адреси, роблячи ваш gateway доступним за адресою `https://your-app.fly.dev`. Це зручно, але означає, що ваше розгортання можуть виявити інтернет-сканери (Shodan, Censys тощо). +За замовчуванням Fly виділяє публічні IP-адреси, роблячи ваш Gateway доступним за `https://your-app.fly.dev`. Це зручно, але означає, що ваше розгортання можуть виявити інтернет-сканери (Shodan, Censys тощо). -Для захищеного розгортання **без публічної доступності** використовуйте приватний шаблон. +Для посиленого розгортання **без публічної доступності** використайте приватний шаблон. -### Коли варто використовувати приватне розгортання +### Коли використовувати приватне розгортання -- Ви виконуєте лише **вихідні** виклики/повідомлення (без вхідних Webhook) -- Ви використовуєте тунелі **ngrok або Tailscale** для будь-яких callback Webhook -- Ви отримуєте доступ до gateway через **SSH, проксі або WireGuard**, а не через браузер -- Ви хочете **приховати** розгортання від інтернет-сканерів +- Ви здійснюєте лише **вихідні** виклики/повідомлення (без вхідних Webhook) +- Ви використовуєте тунелі **ngrok або Tailscale** для будь-яких зворотних викликів Webhook +- Ви отримуєте доступ до Gateway через **SSH, проксі або WireGuard** замість браузера +- Ви хочете, щоб розгортання було **приховане від інтернет-сканерів** ### Налаштування -Використовуйте `fly.private.toml` замість стандартної конфігурації: +Використайте `deploy/fly.private.toml` замість стандартної конфігурації: ```bash -# Розгорніть із приватною конфігурацією -fly deploy -c fly.private.toml +# Deploy with private config +fly deploy -c deploy/fly.private.toml ``` Або перетворіть наявне розгортання: ```bash -# Перелічіть поточні IP +# List current IPs fly ips list -a my-openclaw -# Звільніть публічні IP +# Release public IPs fly ips release -a my-openclaw fly ips release -a my-openclaw -# Перейдіть на приватну конфігурацію, щоб майбутні розгортання не перевиділяли публічні IP -# (видаліть [http_service] або розгорніть за допомогою приватного шаблону) -fly deploy -c fly.private.toml +# Switch to private config so future deploys don't re-allocate public IPs +# (remove [http_service] or deploy with the private template) +fly deploy -c deploy/fly.private.toml -# Виділіть лише приватний IPv6 +# Allocate private-only IPv6 fly ips allocate-v6 --private -a my-openclaw ``` @@ -429,25 +426,25 @@ v6 fdaa:x:x:x:x::x private global ### Доступ до приватного розгортання -Оскільки публічної URL-адреси немає, використовуйте один із цих способів: +Оскільки публічної URL-адреси немає, використайте один із цих методів: **Варіант 1: Локальний проксі (найпростіше)** ```bash -# Перенаправте локальний порт 3000 до застосунку +# Forward local port 3000 to the app fly proxy 3000:3000 -a my-openclaw -# Потім відкрийте в браузері http://localhost:3000 +# Then open http://localhost:3000 in browser ``` -**Варіант 2: VPN WireGuard** +**Варіант 2: WireGuard VPN** ```bash -# Створіть конфігурацію WireGuard (одноразово) +# Create WireGuard config (one-time) fly wireguard create -# Імпортуйте до клієнта WireGuard, потім отримайте доступ через внутрішній IPv6 -# Приклад: http://[fdaa:x:x:x:x::x]:3000 +# Import to WireGuard client, then access via internal IPv6 +# Example: http://[fdaa:x:x:x:x::x]:3000 ``` **Варіант 3: Лише SSH** @@ -456,15 +453,15 @@ fly wireguard create fly ssh console -a my-openclaw ``` -### Webhook у приватному розгортанні +### Webhook-и з приватним розгортанням -Якщо вам потрібні callback Webhook (Twilio, Telnyx тощо) без публічної доступності: +Якщо вам потрібні зворотні виклики Webhook (Twilio, Telnyx тощо) без відкриття для публічного доступу: -1. **тунель ngrok** — запустіть ngrok всередині контейнера або як sidecar -2. **Tailscale Funnel** — відкрийте конкретні шляхи через Tailscale -3. **лише вихідний трафік** — деякі постачальники (Twilio) добре працюють для вихідних викликів без Webhook +1. **Тунель ngrok** - Запустіть ngrok усередині контейнера або як sidecar +2. **Tailscale Funnel** - Відкрийте певні шляхи через Tailscale +3. **Лише вихідний зв’язок** - Деякі провайдери (Twilio) нормально працюють для вихідних викликів без Webhook-ів -Приклад конфігурації голосових викликів з ngrok: +Приклад конфігурації голосового виклику з ngrok: ```json5 { @@ -485,35 +482,35 @@ fly ssh console -a my-openclaw } ``` -Тунель ngrok працює всередині контейнера та надає публічну URL-адресу Webhook, не відкриваючи сам застосунок Fly. Установіть `webhookSecurity.allowedHosts` на ім’я хоста публічного тунелю, щоб переслані заголовки host приймалися. +Тунель ngrok працює всередині контейнера та надає публічну URL-адресу Webhook без відкриття самого застосунку Fly для публічного доступу. Установіть `webhookSecurity.allowedHosts` на публічне ім’я хоста тунелю, щоб переслані заголовки хоста приймалися. ### Переваги безпеки -| Аспект | Публічне | Приватне | -| ----------------- | ------------ | ---------- | -| Інтернет-сканери | Виявляється | Приховане | -| Прямі атаки | Можливі | Заблоковані | -| Доступ до Control UI | Браузер | Проксі/VPN | -| Доставка Webhook | Напряму | Через тунель | +| Аспект | Публічний | Приватний | +| ---------------------------- | ------------------------ | -------------- | +| Інтернет-сканери | Можна виявити | Приховано | +| Прямі атаки | Можливі | Заблоковано | +| Доступ до інтерфейсу керування | Браузер | Проксі/VPN | +| Доставка Webhook | Пряма | Через тунель | ## Примітки - Fly.io використовує **архітектуру x86** (не ARM) - Dockerfile сумісний з обома архітектурами -- Для onboarding WhatsApp/Telegram використовуйте `fly ssh console` -- Постійні дані зберігаються в томі за шляхом `/data` -- Signal потребує Java + `signal-cli`; використовуйте власний образ і тримайте пам’ять на рівні 2GB+. +- Для онбордингу WhatsApp/Telegram використовуйте `fly ssh console` +- Постійні дані зберігаються на томі за шляхом `/data` +- Signal потребує Java + signal-cli; використовуйте власний образ і тримайте пам’ять на рівні 2 ГБ+. ## Вартість -З рекомендованою конфігурацією (`shared-cpu-2x`, 2GB RAM): +З рекомендованою конфігурацією (`shared-cpu-2x`, 2 ГБ оперативної пам’яті): -- приблизно ~$10-15/місяць залежно від використання -- безкоштовний тариф включає певний ліміт +- ~$10-15/місяць залежно від використання +- Безкоштовний тариф включає певну квоту -Докладніше див. у [тарифах Fly.io](https://fly.io/docs/about/pricing/). +Докладніше див. [ціни Fly.io](https://fly.io/docs/about/pricing/). -## Подальші кроки +## Наступні кроки - Налаштуйте канали обміну повідомленнями: [Канали](/uk/channels) - Налаштуйте Gateway: [Конфігурація Gateway](/uk/gateway/configuration) @@ -524,4 +521,4 @@ fly ssh console -a my-openclaw - [Огляд встановлення](/uk/install) - [Hetzner](/uk/install/hetzner) - [Docker](/uk/install/docker) -- [VPS-хостинг](/uk/vps) +- [Хостинг VPS](/uk/vps)