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 @@ To samo fizyczne urządzenie zachowuje jeden wpis, nawet jeśli zaloguje się po
## Połącz z wiersza poleceń
Jeśli serwer działa headless (bez otwartego UI), utwórz link połączenia z terminala na tej maszynie:
Jeśli serwer działa headless (bez otwartego UI), utwórz link połączenia z terminala na tej maszynie.
Dla urządzenia w tej samej sieci:
```bash
openchamber connect-url --port 3000 --qr
```
Wypisany link i kod QR działają dokładnie tak samo jak te z okna ustawień.
Dla urządzenia, które ma łączyć się **z dowolnego miejsca** — odpowiednik wybrania opcji **Wszędzie** w oknie dialogowym:
```bash
openchamber connect-url --relay --qr
```
Link `--relay` zawiera obie trasy, dokładnie jak okno dialogowe: urządzenie łączy się bezpośrednio przez sieć lokalną, gdy może dotrzeć do serwera, a poza domem przełącza się na [Private Relay](/pl/private-relay/). Relay uruchamia się sam: działająca instancja podejmuje link w ciągu minuty, a zatrzymana — przy następnym starcie.
> Trasa bezpośrednia działa tylko wtedy, gdy serwer rzeczywiście nasłuchuje w Twojej sieci. Domyślnie OpenChamber nasłuchuje wyłącznie na samej maszynie — uruchom go z `--lan`, aby był osiągalny przez Wi-Fi. Polecenie ostrzega (`[LAN_UNREACHABLE]`), gdy trasa bezpośrednia linku nie będzie użyteczna z innych urządzeń; link `--relay` nadal wtedy działa, tyle że zawsze przez relay.
Wypisany link i kod QR działają dokładnie tak samo jak te z okna ustawień — są jednorazowe, wygasają i można je unieważnić.
## Powiązane
@@ -36,7 +36,7 @@ Link możesz też utworzyć z terminala na zdalnej maszynie:
openchamber connect-url --port 3000 --server http://your-host:3000 --qr
```
`connect-url` najpierw uruchamia serwer, jeśli nic nie działa na tym porcie. Dodaj `--api-only` dla serwera headless, `--lan` aby nasłuchiwać w LAN przy starcie, `--ui-password` aby chronić dostęp z przeglądarki oraz `--name` aby nazwać zapisane połączenie.
`connect-url` najpierw uruchamia serwer, jeśli nic nie działa na tym porcie. Dodaj `--api-only` dla serwera headless, `--lan` aby nasłuchiwać w LAN przy starcie, `--ui-password` aby chronić dostęp z przeglądarki oraz `--name` aby nazwać zapisane połączenie. Dodaj `--relay`, aby link działał także poza siecią lokalną: urządzenie preferuje połączenie bezpośrednie, gdy serwer jest osiągalny, a w przeciwnym razie przełącza się na [Private Relay](/pl/private-relay/) — instancja sama uruchomi relay.
Wygenerowany link zawiera jednorazowy sekret parowania. Po zaimportowaniu urządzenie ma własny token klienta — osobny od hasła UI w przeglądarce — który przetrwa restarty serwera, dopóki nie unieważnisz go na serwerze, który go wydał.