Tovább a tartalomhoz

Csatlakozás távoli szerverhez

Minden kliens csupán megjelenítő réteg egy cc_server fölött, amely az adatokat birtokolja. Az asztali alkalmazás futtathat egyet saját magában; a webes alkalmazás az app.usectrl.dev címen erre nem képes, mert egy böngészőlap nem tud szervert üzemeltetni. Akárhogy is, ez az útmutató egy klienst egy máshol futó szerverre irányít — egy kis gépre, egy felhőbeli VM-re, egy buildszerverre.

  • Egy futó cc_server. Ha még nincs ilyen, lásd a Headless szerver futtatása oldalt.
  • Vagy a szerver által kiadott három párosítási érték — a szerver URL (ws://…/rpc vagy wss://…/rpc), egy Eszköz-ID és egy Párosítási kulcs —, vagy egy munkaterület-adminisztrátortól kapott, egyszer használatos Meghívókód. Egy meghívó beváltása provisionálja a felhasználóját, rögzíti a tagságát, és kiállítja az ehhez a klienshez tartozó hitelesítő adatot, így Önnek soha nem kell eszköz-ID-t vagy kulcsot kezelnie.

Győződjön meg arról, hogy a szerver elérhető

Szekció neve “Győződjön meg arról, hogy a szerver elérhető”

Egy helyi szerverhez semmi sem kell: a ws://localhost:9030/rpc az asztali alkalmazásból és a böngészőből is működik, mert a böngészők a loopbacket megbízható originnak tekintik.

A másik gépen futó szerver esete más. Az app.usectrl.dev HTTPS-en keresztül érhető el, ezért a böngésző csak olyan wss:// socketet nyit meg, amelynek tanúsítványában már megbízik — a cc_server pedig eleve megtagadja, hogy TLS nélkül nem loopback címre kössön. Adjon neki az alábbiak egyikét:

  • tanúsítványt közvetlenül, a --tls-cert és a --tls-key kapcsolóval
  • egy elé kötött, TLS-t lezáró fordított proxyt, a szervert --insecure kapcsolóval elindítva (sima szöveg a proxy mögött, kizárólag megbízható hálózaton)
  • egy alagutat vagy VPN-t, amely biztosítja a tanúsítványt — Tailscale, cloudflared vagy hasonló. A Beállítások → Szerver → Kapcsolat és állapot alatt, a Szerver megosztása részen található a beépített alagút bekapcsolása.

A szerveroldalon két beállítást könnyű kihagyni. Proxy, NAT vagy alagút mögött állítsa a --public-url értékét arra a címre, amelyet a klienseknek ténylegesen hívniuk kell — alapértelmezésben a helyi bind-címet veszi fel, így enélkül a kliensek a rossz hosztot próbálják elérni. Ha a webes build saját példányát üzemelteti, vegye fel annak originjét a --allowed-origins listára, amely alapértelmezésben csak a https://app.usectrl.dev címet tartalmazza; a loopback és a natív kliensek mindig engedélyezettek.

Friss telepítés esetén:

  1. Indítsa el a Control Centert. Az első indítás képernyője azt kérdezi: Hogyan fusson a Control Center?
  2. A Futtatás ebben az alkalmazásban helyett töltse ki a csatlakozási mezőket: a szerver URL-t, valamint vagy egy meghívókódot, vagy egy eszköz-ID-t és egy párosítási kulcsot.
  3. Kattintson a Csatlakozás elemre. A Control Center tárcsázza a szervert, és a munkaterület Beérkezett nézetében köt ki.

Egy olyan asztali gépen, amely már futtatja a saját szerverét:

  1. Nyissa meg a Beállítások → Szerver → Kapcsolat és állapot részt.
  2. Kattintson a Szerver hozzáadása elemre. Adja meg a szerver URL-t (wss://host:9030/rpc), valamint vagy egy meghívókódot, vagy egy eszköz-ID-t és egy párosítási kulcsot. Az URL-mező végén lévő gomb felderíti a cc_server példányokat az Ön LAN-ján vagy tailnetjén.
  3. Kattintson a Csatlakozás elemre, majd az új szerver sorában a Váltás elemre.

A váltás élő: az alkalmazás helyben épül újra az új munkamenet köré, újraindítás nélkül. Ha a csatlakozás meghiúsul, az aktuális szerveren marad, és látja a hibát. Annak a szervernek a során, amelyen éppen van, nincs Váltás művelet; a helyi szerver az első sor, Futtatás ebben az alkalmazásban címkével.

A váltás után az asztali alkalmazás nem birtokol adatbázist. Minden képernyő a távoli szerveren keresztül olvas és ír egy WebSocketen.

A webes build mindig távoli.

  1. Nyissa meg az app.usectrl.dev címet, vagy a webes build saját példányát.
  2. Adja meg a szerver URL-t, valamint vagy egy meghívókódot, vagy egy eszköz-ID-t és egy párosítási kulcsot.
  3. A kliens tárcsázza a szervert, és ugyanazt a felületet rendereli, mint az asztali alkalmazás.

Ha a URL-ben párosítási deep link szerepel, a mezők előre ki vannak töltve. A párosítási kulcs az URL töredékében utazik, amelyet a böngészők soha nem küldenek el az oldalt üzemeltető szervernek, így a statikus hoszt soha nem látja.

A webes kliens ugyanazt a szervert olvassa és írja, mint az asztali alkalmazás, de néhány felülethez natív ablakra vagy a gép saját eszközeire van szükség:

  • nincs operációs rendszer szintű értesítési buborék, értesítési hang és hangulat-bannersáv (az alkalmazáson belüli értesítési központ továbbra is működik)
  • nincs LAN- vagy tailnet-felderítés a Szerver hozzáadása párbeszédablakban
  • nincs alkalmazáson belüli cikkolvasó — a hírfolyam cikkei új lapon nyílnak meg
  • nem lehet újrafuttatni egy megbeszélés-összefoglalót, és nem lehet megszakítani egy éppen feldolgozás alatt állót

Két dolog nem hiányzik, hanem másképp viselkedik. A megbeszélések felvétele a böngészőben is működik: rögzíti a mikrofonját, valamint egy képmegosztást, amely hangpályát is tartalmaz. A Megnyitás IDE-ben szintén működik, de a szervertől azt kéri, hogy a szerkesztőt a szerver képernyőjén indítsa el, ezért a gomb elrejti magát egy olyan headless hoszton, ahol nincs telepítve szerkesztő.

  • A kapcsolat időtúllépésbe fut: a szervernek elérhetőnek kell lennie a kliensről. Ellenőrizze a bind-címet (--bind any), hogy a port nyitva van-e, és hogy a --public-url azt a címet adja-e meg, amelyet a kliens ténylegesen el tud érni. A nyílt internet fölött a TLS kötelező — a nem loopback, sima szöveges bind indításkor elutasításra kerül, kivéve, ha a szervert proxy mögött --insecure kapcsolóval indították.
  • A böngésző megtagadja a csatlakozást, egy natív kliens viszont működik: a böngésző originje nincs rajta a szerver --allowed-origins listáján. Az alapértelmezés csak a https://app.usectrl.dev címet engedélyezi (a loopbackkel együtt).
  • A párosítási kulcsot elutasítja a szerver: futtassa újra a cc_server pair parancsot a szerveren, hogy lecserélje az adott eszköz kulcsát, majd adja meg az újat. Egy visszavont eszköz úgy találja, hogy a hitelesítő adata eltűnt, és zártan meghiúsul; a visszavonás másodperceken belül eldob egy élő munkamenetet.
  • Rossz munkaterület: a munkaterület az URL része (/workspaces/:workspaceId/…), és minden hívással együtt utazik, ezért a munkaterület váltása az egyik kliensben csak az Ön saját nézetét változtatja meg. Csak olyan munkaterületeket érhet el, amelyeknek tagja — minden mást a “Not a member of this workspace” üzenettel utasít el a rendszer. Lásd a Munkaterületek és elszigetelés oldalt.