Lewati ke konten

Hubungkan ke server jarak jauh

Setiap klien adalah perender di atas cc_server yang memiliki data. Aplikasi desktop dapat menjalankan servernya di dalam dirinya sendiri; aplikasi web di app.usectrl.dev tidak dapat melakukannya, karena tab peramban tidak dapat menghosting server. Apa pun caranya, panduan ini mengarahkan klien ke server yang berjalan di tempat lain — mesin kecil, VM cloud, atau server build.

  • cc_server yang berjalan. Jika Anda belum memilikinya, lihat Jalankan server headless.
  • Salah satu dari tiga nilai pairing yang dibuat server — URL server (ws://…/rpc atau wss://…/rpc), ID perangkat, dan kunci pairing — atau kode undangan sekali pakai dari admin ruang kerja. Menukarkan undangan akan memprovisikan pengguna Anda, mencatat keanggotaan Anda, dan membuat kredensial klien ini untuk Anda, sehingga Anda tidak pernah menangani ID perangkat atau kunci.

Server lokal tidak memerlukan apa pun: ws://localhost:9030/rpc berfungsi dari desktop maupun peramban, karena peramban menganggap loopback sebagai origin yang dapat dipercaya.

Server di mesin lain berbeda. app.usectrl.dev disajikan melalui HTTPS, jadi peramban hanya akan membuka soket wss:// dengan sertifikat yang sudah dipercayainya — dan cc_server memang menolak mengikat alamat non-loopback tanpa TLS. Berikan salah satu dari:

  • sertifikat secara langsung, dengan --tls-cert dan --tls-key
  • proxy terbalik yang menterminasi TLS di depannya, dengan server dijalankan --insecure (teks polos di balik proxy, hanya pada jaringan yang tepercaya)
  • tunnel atau VPN yang menyediakan sertifikatnya — Tailscale, cloudflared, atau serupa. Pengaturan → Server → Koneksi & status memiliki opsi ikut serta tunnel bawaan di bawah Bagikan server ini.

Ada dua pengaturan di sisi server yang mudah terlewat. Di balik proxy, NAT, atau tunnel, setel --public-url ke alamat yang sebenarnya harus dihubungi klien — bawaannya adalah pengikatan lokal, jadi tanpanya klien akan mencoba host yang salah. Dan jika Anda menghosting sendiri salinan build web, tambahkan origin-nya ke --allowed-origins, yang bawaannya hanya https://app.usectrl.dev; klien loopback dan native selalu diizinkan.

Pada instalasi baru:

  1. Jalankan Control Center. Layar pertama kali dijalankan menanyakan Bagaimana Control Center harus dijalankan?
  2. Alih-alih Jalankan di aplikasi ini, isi kolom koneksi: URL server, plus kode undangan atau ID perangkat dan kunci pairing.
  3. Klik Hubungkan. Control Center menghubungi server dan mendarat di kotak masuk ruang kerja.

Pada desktop yang sudah menjalankan servernya sendiri:

  1. Buka Pengaturan → Server → Koneksi & status.
  2. Klik Tambah server. Masukkan URL server (wss://host:9030/rpc) dan kode undangan atau ID perangkat dan kunci pairing. Tombol sufiks pada kolom URL menemukan instans cc_server di LAN atau tailnet Anda.
  3. Klik Hubungkan, lalu Alihkan pada baris server baru.

Pengalihan berlangsung langsung: aplikasi dibangun ulang di sekitar sesi baru di tempat, tanpa mulai ulang. Jika koneksi gagal, Anda tetap berada di server saat ini dan melihat error-nya. Baris untuk server yang sedang Anda pakai tidak memiliki tindakan Alihkan; server lokal adalah baris pertama, berlabel Jalankan di aplikasi ini.

Setelah beralih, desktop tidak lagi memiliki basis data. Setiap layar membaca dan menulis melalui server jarak jauh lewat WebSocket.

Build web selalu jarak jauh.

  1. Buka app.usectrl.dev, atau salinan build web Anda sendiri.
  2. Masukkan URL server plus kode undangan atau ID perangkat dan kunci pairing.
  3. Klien menghubungi server dan menampilkan antarmuka yang sama dengan desktop.

Jika ada tautan mendalam pairing di URL, kolom-kolomnya sudah terisi otomatis. Kunci pairing berada di fragmen URL, yang tidak pernah dikirim peramban ke server yang menghosting halaman, sehingga host statis tidak pernah melihatnya.

Klien web membaca dan menulis server yang sama dengan desktop, tetapi beberapa permukaan memerlukan jendela native atau perangkat milik mesin itu sendiri:

  • tidak ada toast notifikasi OS, suara notifikasi, atau rel banner ambien (pusat notifikasi di dalam aplikasi tetap berfungsi)
  • tidak ada penemuan server LAN atau tailnet di dialog Tambah server
  • tidak ada pembaca artikel di dalam aplikasi — artikel umpan berita terbuka di tab baru
  • tidak ada menjalankan ulang ringkasan rapat dan tidak ada pembatalan ringkasan yang sedang diproses

Dua hal berperilaku berbeda alih-alih tidak ada. Perekaman rapat berfungsi di peramban, menangkap mikrofon Anda plus berbagi layar yang menyertakan trek audio. Buka di IDE juga berfungsi, tetapi meminta server meluncurkan editor di layar server, jadi tombolnya menyembunyikan diri sendiri terhadap host headless tanpa editor terpasang.

  • Koneksi kehabisan waktu: server harus dapat dijangkau dari klien. Periksa pengikatan (--bind any), bahwa port-nya terbuka, dan bahwa --public-url menyebutkan alamat yang benar-benar dapat dihubungi klien. Di internet terbuka, TLS bersifat wajib — pengikatan non-loopback dengan teks polos ditolak saat startup kecuali server dijalankan --insecure di balik proxy.
  • Peramban menolak terhubung tetapi klien native berfungsi: origin peramban tidak ada dalam daftar --allowed-origins server. Bawaannya hanya mengizinkan https://app.usectrl.dev (plus loopback).
  • Kunci pairing ditolak: jalankan ulang cc_server pair di server untuk memutar kunci perangkat itu, lalu masukkan kunci baru. Perangkat yang dicabut mendapati kredensialnya sudah hilang dan gagal secara tertutup; pencabutan memutus sesi aktif dalam hitungan detik.
  • Ruang kerja salah: ruang kerja adalah bagian dari URL (/workspaces/:workspaceId/…) dan ikut serta di setiap panggilan, jadi beralih ruang kerja di satu klien hanya mengubah tampilan Anda sendiri. Anda hanya dapat menjangkau ruang kerja tempat Anda menjadi anggota — selain itu ditolak dengan “Not a member of this workspace”. Lihat Ruang kerja dan isolasi.