İçeriğe geç

Uzak bir sunucuya bağlanma

Her istemci, verilerin sahibi olan bir cc_server üzerinde arayüz çizen bir katmandır. Masaüstü uygulaması bunu kendi içinde çalıştırabilir; app.usectrl.dev adresindeki web uygulaması çalıştıramaz, çünkü bir tarayıcı sekmesi sunucu barındıramaz. Her iki durumda da bu kılavuz, bir istemciyi başka bir yerde çalışan bir sunucuya — küçük bir kutuya, bir bulut sanal makinesine, bir derleme sunucusuna — yönlendirir.

  • Çalışan bir cc_server. Yoksa Headless bir sunucu çalıştırma sayfasına bakın.
  • Sunucunun ürettiği üç eşleştirme değeri — sunucu URL’si (ws://…/rpc veya wss://…/rpc), bir cihaz kimliği ve bir eşleştirme anahtarı — ya da bir çalışma alanı yöneticisinden alınan tek kullanımlık bir davet kodu. Bir daveti kullanmak kullanıcınızı oluşturur, üyeliğinizi kaydeder ve bu istemcinin kimlik bilgisini sizin adınıza üretir; böylece bir cihaz kimliğini ya da anahtarı hiç elle işlemezsiniz.

Yerel bir sunucu için hiçbir şey gerekmez: ws://localhost:9030/rpc hem masaüstünden hem de tarayıcıdan çalışır, çünkü tarayıcılar loopback’i güvenilir bir kaynak sayar.

Başka bir makinedeki sunucu farklıdır. app.usectrl.dev HTTPS üzerinden sunulur, bu yüzden tarayıcı yalnızca zaten güvendiği bir sertifikaya sahip bir wss:// soketi açar — üstelik cc_server de TLS olmadan loopback dışı bir adrese bağlanmayı baştan reddeder. Şunlardan birini sağlayın:

  • doğrudan bir sertifika, --tls-cert ve --tls-key ile
  • önde TLS sonlandıran bir ters proxy, sunucu --insecure ile başlatılmış olarak (proxy’nin arkasında düz metin, yalnızca güvenilir bir ağda)
  • sertifikayı sağlayan bir tünel veya VPN — Tailscale, cloudflared ya da benzeri. Ayarlar → Sunucu → Bağlantı ve durum içinde, Bu sunucuyu paylaş altında yerleşik tünel katılımı bulunur.

Sunucu tarafındaki iki ayarın gözden kaçması kolaydır. Bir proxy, NAT veya tünelin arkasında, --public-url ayarını istemcilerin gerçekte araması gereken adrese ayarlayın — varsayılanı yerel bağlanma adresidir, dolayısıyla bu ayar olmadan istemciler yanlış ana makineyi dener. Web paketinin kendi kopyanızı barındırıyorsanız, kaynağını --allowed-origins listesine ekleyin; bu listenin varsayılanı yalnızca https://app.usectrl.dev’dur ve loopback ile yerel istemcilere her zaman izin verilir.

Yeni bir kurulumda:

  1. Control Center’ı başlatın. İlk çalıştırma ekranı Control Center nasıl çalışsın? diye sorar.
  2. Bu uygulamada çalıştır yerine bağlantı alanlarını doldurun: sunucu URL’si ile birlikte bir davet kodu ya da bir cihaz kimliği ve eşleştirme anahtarı.
  3. Bağlan’a tıklayın. Control Center sunucuyu arar ve çalışma alanı gelen kutusunda açılır.

Kendi sunucusunu zaten çalıştıran bir masaüstünde:

  1. Ayarlar → Sunucu → Bağlantı ve durum bölümünü açın.
  2. Sunucu ekle’ye tıklayın. Sunucu URL’sini (wss://host:9030/rpc) ve bir davet kodunu ya da bir cihaz kimliği ile eşleştirme anahtarını girin. URL alanının son ek düğmesi, LAN’ınızdaki veya tailnet’inizdeki cc_server örneklerini keşfeder.
  3. Bağlan’a, ardından yeni sunucunun satırındaki Geç’e tıklayın.

Geçiş canlıdır: uygulama yeni oturumun çevresinde yerinde yeniden kurulur, yeniden başlatma gerekmez. Bağlantı başarısız olursa geçerli sunucuda kalırsınız ve hatayı görürsünüz. Üzerinde bulunduğunuz sunucunun satırında Geç eylemi yoktur; yerel sunucu, Bu uygulamada çalıştır etiketiyle ilk satırdır.

Geçiş yapıldıktan sonra masaüstü hiçbir veritabanına sahip olmaz. Her ekran okuma ve yazma işlemlerini uzak sunucu üzerinden, bir WebSocket ile yapar.

Web yapısı her zaman uzaktır.

  1. app.usectrl.dev adresini ya da web paketinin kendi kopyanızı açın.
  2. Sunucu URL’sini ve bir davet kodunu ya da bir cihaz kimliği ile eşleştirme anahtarını girin.
  3. İstemci sunucuyu arar ve masaüstünün çizdiği aynı arayüzü çizer.

URL’de bir eşleştirme derin bağlantısı varsa alanlar önceden doldurulur. Eşleştirme anahtarı URL’nin fragment kısmında taşınır; tarayıcılar bunu sayfayı barındıran sunucuya hiçbir zaman göndermez, böylece statik barındırıcı anahtarı hiç görmez.

Web istemcisi masaüstüyle aynı sunucudan okur ve yazar, ancak birkaç yüzey yerel bir pencereye ya da makinenin kendi cihazlarına ihtiyaç duyar:

  • işletim sistemi bildirim baloncukları, bildirim sesleri veya ortam afiş şeridi yok (uygulama içi bildirim merkezi yine de çalışır)
  • Sunucu ekle iletişim kutusunda LAN veya tailnet sunucu keşfi yok
  • uygulama içi makale okuyucu yok — haber akışı makaleleri yeni bir sekmede açılır
  • bir toplantı özetini yeniden çalıştırma ve işlenmekte olan bir özeti iptal etme yok

İki tanesi eksik olmak yerine farklı davranır. Toplantı kaydı tarayıcıda çalışır; mikrofonunuzu ve ses parçası içeren bir ekran paylaşımını yakalar. Düzenleyicide aç da çalışır, ancak sunucudan düzenleyiciyi sunucunun ekranında başlatmasını ister; bu yüzden kurulu düzenleyicisi olmayan headless bir ana makinede düğme kendini gizler.

  • Bağlantı zaman aşımına uğruyor: sunucuya istemciden erişilebilmelidir. Bağlanmayı (--bind any), portun açık olduğunu ve --public-url ayarının istemcinin gerçekte arayabileceği adresi gösterdiğini denetleyin. Açık internette TLS zorunludur — sunucu bir proxy arkasında --insecure ile başlatılmadıysa, düz metin loopback dışı bağlanma başlangıçta reddedilir.
  • Tarayıcı bağlanmayı reddediyor ama yerel bir istemci çalışıyor: tarayıcının kaynağı sunucunun --allowed-origins listesinde değil. Varsayılan yalnızca https://app.usectrl.dev adresine izin verir (artı loopback).
  • Eşleştirme anahtarı reddedildi: o cihazın anahtarını döndürmek için sunucuda cc_server pair komutunu yeniden çalıştırın, ardından yenisini girin. İptal edilmiş bir cihaz kimlik bilgisinin yok olduğunu görür ve kapalıya düşer; iptal, canlı bir oturumu saniyeler içinde düşürür.
  • Yanlış çalışma alanı: çalışma alanı URL’nin bir parçasıdır (/workspaces/:workspaceId/…) ve her çağrıyla birlikte taşınır, bu yüzden bir istemcide çalışma alanı değiştirmek yalnızca kendi görünümünüzü değiştirir. Yalnızca üyesi olduğunuz çalışma alanlarına erişebilirsiniz — başka her şey “Not a member of this workspace” ile reddedilir. Bkz. Çalışma alanları ve yalıtım.