Conectează-te la un server remote
Fiecare client este un renderer peste un cc_server care deține datele. Aplicația
desktop poate rula unul în interiorul ei; aplicația web de la
app.usectrl.dev nu poate, pentru că un tab de browser
nu poate găzdui un server. În ambele cazuri, acest ghid îndreaptă un client către
un server care rulează în altă parte — o cutie mică, o VM în cloud, un server de
build.
Cerințe preliminare
Secțiune intitulată „Cerințe preliminare”- Un
cc_servercare rulează. Dacă nu ai unul, vezi Rulează un server headless. - Fie cele trei valori de asociere emise de server — URL server (
ws://…/rpcsauwss://…/rpc), un ID dispozitiv și o cheie de asociere —, fie un cod de invitație de unică folosință de la un administrator al spațiului de lucru. Răscumpărarea unei invitații îți provisionează utilizatorul, înregistrează apartenența ta și emite acreditarea acestui client pentru tine, așa că nu ai de gestionat niciodată un ID de dispozitiv sau o cheie.
Asigură-te că serverul este accesibil
Secțiune intitulată „Asigură-te că serverul este accesibil”Un server local nu are nevoie de nimic: ws://localhost:9030/rpc funcționează
atât din desktop, cât și din browser, pentru că browserele tratează loopback-ul
ca pe o origine de încredere.
Un server de pe altă mașină este altceva. app.usectrl.dev este servit prin
HTTPS, așa că browserul va deschide un socket wss:// doar cu un certificat în
care are deja încredere — iar cc_server refuză de la bun început să se lege la
o adresă care nu este loopback fără TLS. Dă-i una dintre:
- un certificat direct, cu
--tls-certși--tls-key - un proxy invers care termină TLS în față, cu serverul pornit cu
--insecure(text simplu în spatele proxy-ului, doar într-o rețea de încredere) - un tunel sau un VPN care furnizează certificatul — Tailscale, cloudflared sau similar. Setări → Server → Conexiune și stare are activarea tunelului integrat, sub Partajează acest server.
Două setări din partea serverului sunt ușor de ratat. În spatele unui proxy, NAT
sau tunel, setează --public-url la adresa pe care clienții ar trebui să o
apeleze de fapt — valoarea implicită este legarea locală, așa că fără ea
clienții încearcă gazda greșită. Iar dacă găzduiești propria copie a versiunii
web, adaugă originea acesteia la --allowed-origins, care implicit permite doar
https://app.usectrl.dev; clienții loopback și cei nativi sunt întotdeauna
permişi.
Conectează aplicația desktop
Secțiune intitulată „Conectează aplicația desktop”La o instalare nouă:
- Pornește Control Center. Ecranul de prima rulare întreabă Cum ar trebui să ruleze Control Center?
- În loc de Rulează în această aplicație, completează câmpurile de conectare: URL-ul serverului, plus fie un cod de invitație, fie un ID de dispozitiv și o cheie de asociere.
- Dă clic pe Conectează. Control Center apelează serverul și ajunge în inbox-ul spațiului de lucru.
Pe un desktop care rulează deja propriul server:
- Deschide Setări → Server → Conexiune și stare.
- Dă clic pe Adaugă server. Introdu URL-ul serverului (
wss://host:9030/rpc) și fie un cod de invitație, fie un ID de dispozitiv și o cheie de asociere. Butonul-sufix al câmpului de URL descoperă instanțecc_serverdin LAN-ul sau tailnet-ul tău. - Dă clic pe Conectează, apoi pe Comută în rândul serverului nou.
Comutarea este live: aplicația se reconstruiește pe loc în jurul noii sesiuni, fără repornire. Dacă conectarea eșuează, rămâi pe serverul curent și vezi eroarea. Rândul serverului pe care te afli nu are acțiunea Comută; serverul local este primul rând, etichetat Rulează în această aplicație.
Odată comutat, desktopul nu mai deține nicio bază de date. Fiecare ecran citește și scrie prin serverul remote, peste un WebSocket.
Conectează clientul web
Secțiune intitulată „Conectează clientul web”Versiunea web este întotdeauna remote.
- Deschide app.usectrl.dev sau propria copie a versiunii web.
- Introdu URL-ul serverului, plus fie un cod de invitație, fie un ID de dispozitiv și o cheie de asociere.
- Clientul apelează serverul și afișează aceeași interfață ca desktopul.
Dacă în URL se află un link profund de asociere, câmpurile sunt precompletate. Cheia de asociere călătorește în fragmentul URL-ului, pe care browserele nu îl trimit niciodată serverului care găzduiește pagina, așa că gazda statică nu o vede niciodată.
Ce nu face browserul
Secțiune intitulată „Ce nu face browserul”Clientul web citește și scrie pe același server ca desktopul, dar câteva suprafețe au nevoie de o fereastră nativă sau de dispozitivele proprii ale mașinii:
- fără notificări de sistem de tip toast, fără sunete de notificare și fără bara ambientală de bannere (centrul de notificări din aplicație funcționează în continuare)
- fără descoperirea serverelor din LAN sau tailnet în dialogul Adaugă server
- fără cititor de articole în aplicație — articolele din fluxul de știri se deschid într-un tab nou
- fără rerularea unui rezumat de întâlnire și fără anularea unuia aflat în procesare
Două se comportă diferit, în loc să lipsească. Înregistrarea întâlnirilor funcționează în browser, captând microfonul tău plus o partajare de ecran care include o pistă audio. Deschide în IDE funcționează și el, dar cere serverului să lanseze editorul pe ecranul serverului, așa că butonul se ascunde pe o gazdă headless fără editoare instalate.
Depanare
Secțiune intitulată „Depanare”- Conectarea expiră: serverul trebuie să fie accesibil din client. Verifică legarea (
--bind any), că portul este deschis și că--public-urlindică adresa pe care clientul poate apela de fapt. Pe internetul deschis, TLS este obligatoriu — o legare non-loopback în text simplu este refuzată la pornire, cu excepția cazului în care serverul a fost pornit cu--insecureîn spatele unui proxy. - Browserul refuză să se conecteze, dar un client nativ funcționează: originea browserului nu se află în lista
--allowed-originsa serverului. Valoarea implicită permite doarhttps://app.usectrl.dev(plus loopback). - Cheia de asociere a fost respinsă: rulează din nou
cc_server pairpe server pentru a roti cheia acelui dispozitiv, apoi introdu-o pe cea nouă. Un dispozitiv revocat își găsește acreditarea dispărută și eșuează închis; revocarea închide o sesiune activă în câteva secunde. - Spațiu de lucru greșit: spațiul de lucru face parte din URL (
/workspaces/:workspaceId/…) și călătorește cu fiecare apel, așa că schimbarea spațiului de lucru într-un client schimbă doar vizualizarea ta. Poți accesa doar spațiile de lucru din care faci parte — orice altceva este refuzat cu „Not a member of this workspace”. Vezi Spații de lucru și izolare.
Ghiduri conexe
Secțiune intitulată „Ghiduri conexe”- Rulează un server headless
- Asociază un dispozitiv: calea prin releu pentru telefon