Přeskočit na obsah

Připojte se ke vzdálenému serveru

Každý klient jen vykresluje cc_server, který vlastní data. Desktop si umí jeden spustit sám v sobě; webová aplikace na app.usectrl.dev to neumí, protože karta prohlížeče server hostovat neumí. Tenhle návod v obou případech namíří klienta na server, který běží jinde: malý stroj, cloudové VM, sestavovací server.

  • Běžící cc_server. Když žádný nemáš, viz Spusťte headless server.
  • Buď tři párovací hodnoty, které server vydal, URL serveru (ws://…/rpc nebo wss://…/rpc), ID zařízení a párovací klíč, nebo jednorázový kód pozvánky od správce pracovního prostoru. Uplatnění pozvánky ti založí uživatele, zapíše členství a vydá pověření pro tohoto klienta, takže ID zařízení ani klíč do ruky nedostaneš.

Ověř, že je server dosažitelný

Sekce “Ověř, že je server dosažitelný”

Místní server nepotřebuje nic: ws://localhost:9030/rpc funguje z desktopu i z prohlížeče, protože prohlížeče berou loopback jako důvěryhodný origin.

Server na jiném stroji je jinak. app.usectrl.dev se servíruje přes HTTPS, takže prohlížeč otevře jen socket wss:// s certifikátem, kterému už důvěřuje, a cc_server odmítne naslouchat na adrese mimo loopback bez TLS. Dej mu jedno z:

  • certifikát přímo, přes --tls-cert a --tls-key
  • reverzní proxy před ním, která ukončuje TLS, a server spuštěný s --insecure (nešifrovaně za proxy, jen v důvěryhodné síti)
  • tunel nebo VPN, která certifikát dodá: Tailscale, cloudflared nebo podobné. Nastavení → Server → Připojení a stav má vestavěné zapnutí tunelu pod Sdílet tento server.

Dvě nastavení na straně serveru se snadno přehlédnou. Za proxy, NAT nebo tunelem nastav --public-url na adresu, na kterou se mají klienti skutečně připojit. Výchozí hodnota je místní bind, takže bez ní klienti míří na špatného hostitele. A když hostuješ vlastní kopii webového sestavení, přidej její origin do --allowed-origins. Výchozí seznam je jen https://app.usectrl.dev; loopback a nativní klienti jsou povolení vždy.

Připoj aplikaci pro počítač

Sekce “Připoj aplikaci pro počítač”

Po nové instalaci:

  1. Spusť Control Center. Obrazovka prvního spuštění se ptá Jak má Control Center běžet?
  2. Místo Spustit v této aplikaci vyplň pole připojení: URL serveru a buď kód pozvánky, nebo ID zařízení a párovací klíč.
  3. Klikni na Připojit. Control Center se připojí k serveru a otevře doručenou poštu pracovního prostoru.

Na desktopu, který už svůj server spouští:

  1. Otevři Nastavení → Server → Připojení a stav.
  2. Klikni na Přidat server. Zadej URL serveru (wss://host:9030/rpc) a buď kód pozvánky, nebo ID zařízení a párovací klíč. Tlačítko na konci pole URL najde instance cc_server v LAN nebo tailnetu.
  3. Klikni na Připojit a pak na Přepnout na řádku nového serveru.

Přepnutí proběhne za běhu: aplikace se na místě přestaví kolem nové relace a restart nepotřebuje. Když připojení selže, zůstaneš na aktuálním serveru a uvidíš chybu. Řádek serveru, na kterém právě jsi, akci Přepnout nemá; místní server je první řádek a nese popisek Spustit v této aplikaci.

Po přepnutí desktop žádnou databázi nevlastní. Každá obrazovka čte a zapisuje přes vzdálený server po WebSocketu.

Připoj webového klienta

Sekce “Připoj webového klienta”

Webové sestavení je vždy vzdálené.

  1. Otevři app.usectrl.dev, nebo vlastní kopii webového sestavení.
  2. Zadej URL serveru a buď kód pozvánky, nebo ID zařízení a párovací klíč.
  3. Klient se připojí k serveru a vykreslí totéž rozhraní jako desktop.

Když je v URL odkaz na párování, pole jsou předvyplněná. Párovací klíč se veze ve fragmentu URL, který prohlížeč nikdy nepošle serveru hostujícímu stránku, takže ho statický hostitel neuvidí.

Co prohlížeč nedělá

Sekce “Co prohlížeč nedělá”

Webový klient čte a zapisuje tentýž server jako desktop, ale pár ploch potřebuje nativní okno nebo zařízení samotného stroje:

  • žádné systémové toasty oznámení, žádné zvuky oznámení ani lišta okolních bannerů (oznámení v aplikaci pořád fungují)
  • žádné hledání serverů v LAN ani v tailnetu v dialogu Přidat server
  • žádná čtečka článků v aplikaci. Články kanálu novinek se otevřou v nové kartě
  • souhrn schůzky znovu nespustíš a ten, který se zpracovává, nezrušíš

Dvě věci fungují, jen jinak. Nahrávání schůzky v prohlížeči funguje: bere mikrofon a sdílení obrazovky se zvukovou stopou. Otevřít v IDE funguje taky, ale požádá server, aby editor spustil na displeji serveru. Tlačítko se proto schová, když je hostitel bez rozhraní a nemá nainstalovaný žádný editor.

  • Spojení vyprší: server musí být z klienta dosažitelný. Zkontroluj bind (--bind any), že je port otevřený a že --public-url jmenuje adresu, na kterou se klient skutečně připojí. Přes otevřený internet je TLS povinné. Nešifrovaný bind mimo loopback se při startu odmítne, pokud server nebyl spuštěný s --insecure za proxy.
  • Prohlížeč se odmítne připojit, ale nativní klient funguje: origin prohlížeče není na seznamu --allowed-origins serveru. Výchozí povoluje jen https://app.usectrl.dev (a k tomu loopback).
  • Párovací klíč odmítnut: na serveru znovu spusť cc_server pair, ať se klíč toho zařízení obmění, a zadej nový. Odvolané zařízení najde pověření pryč a přístup se zavře. Odvolání shodí živou relaci do několika sekund.
  • Špatný pracovní prostor: pracovní prostor je součást URL (/workspaces/:workspaceId/…) a jede s každým voláním, takže přepnutí pracovního prostoru v jednom klientovi změní jen tvůj pohled. Dosáhneš jen na pracovní prostory, ve kterých jsi členem. Všechno ostatní se odmítne textem “Not a member of this workspace”. Viz Pracovní prostory a izolace.