feat(cli): make connect-url --relay a full anywhere pairing link

- --relay links now carry both routes: direct LAN plus relay fallback,
  matching the UI's Anywhere pairing; devices prefer the direct route
- pairing sessions created by the CLI are marked with usesRelay, and the
  server reconciles relay demand on a timer, so a headless instance
  brings the relay up on its own after connect-url --relay
- warn with LAN_UNREACHABLE when the link's direct route points at
  loopback and other devices cannot use it
- document the --relay flow and the --lan binding caveat in Connect a
  Device and Remote Instances across all locales
This commit is contained in:
Bohdan Triapitsyn
2026-07-10 18:29:15 +03:00
parent de92b8fef4
commit 6ec1797583
21 changed files with 182 additions and 87 deletions
@@ -40,13 +40,25 @@ description: Зв'яжіть телефон, десктоп чи інший бр
## Підключення з командного рядка
Якщо сервер працює headless (без відкритого UI), створіть посилання для підключення з термінала на тій машині:
Якщо сервер працює headless (без відкритого UI), створіть посилання для підключення з термінала на тій машині.
Для пристрою в тій самій мережі:
```bash
openchamber connect-url --port 3000 --qr
```
Надруковані посилання та QR-код працюють точнісінько як ті, що з діалогу налаштувань.
Для пристрою, який має підключатися **звідусіль** — еквівалент вибору **Будь-де** в діалозі:
```bash
openchamber connect-url --relay --qr
```
Посилання з `--relay` містить обидва маршрути, як і діалог: пристрій підключається напряму через вашу локальну мережу, коли може дістатися сервера, і переходить на [Private Relay](/uk/private-relay/), коли ви не вдома. Relay запускається сам: запущений інстанс підхоплює посилання протягом хвилини, зупинений — при наступному запуску.
> Прямий маршрут працює лише тоді, коли сервер справді слухає вашу мережу. За замовчуванням OpenChamber слухає тільки саму машину — запустіть його з `--lan`, щоб він був доступний через Wi-Fi. Команда попереджає (`[LAN_UNREACHABLE]`), коли прямим маршрутом посилання не зможуть скористатися інші пристрої; посилання з `--relay` тоді все одно працює, просто завжди через relay.
Надруковані посилання та QR-код працюють точнісінько як ті, що з діалогу налаштувань — одноразові, зі строком дії, з можливістю відкликання.
## Пов'язане
@@ -36,7 +36,7 @@ OpenChamber проходить через кроки — перевірку з'
openchamber connect-url --port 3000 --server http://your-host:3000 --qr
```
`connect-url` спочатку запускає сервер, якщо на цьому порту нічого не працює. Додайте `--api-only` для headless-сервера, `--lan` для LAN bind під час старту, `--ui-password` для захисту browser access і `--name` для назви збереженого підключення.
`connect-url` спочатку запускає сервер, якщо на цьому порту нічого не працює. Додайте `--api-only` для headless-сервера, `--lan` для LAN bind під час старту, `--ui-password` для захисту browser access і `--name` для назви збереженого підключення. Додайте `--relay`, щоб посилання працювало й поза локальною мережею: пристрій віддає перевагу прямому підключенню, коли сервер доступний, і переходить на [Private Relay](/uk/private-relay/) — інстанс піднімає relay сам.
Згенероване посилання містить одноразовий секрет зв'язування. Після імпорту пристрій отримує власний client token — окремий від пароля browser UI, — який зберігається після рестартів сервера, доки ви не відкличете його на сервері, що його видав.