跳到內容

連線至遠端伺服器

每個用戶端都是疊在掌管資料的 cc_server 之上的呈現層。桌面版可以在自身內部 執行一個;app.usectrl.dev 上的網頁應用程式則不行, 因為瀏覽器分頁無法代管伺服器。無論是哪一種,本指南都會把用戶端指向在其他位置 執行的伺服器——一台小型主機、一台雲端 VM,或一台建置伺服器。

  • 一個執行中的 cc_server。如果你還沒有,請參閱執行無介面伺服器。
  • 伺服器簽發的三個配對值——伺服器 URL(ws://…/rpc 或 wss://…/rpc)、裝置 ID 與配對金鑰——或由工作區管理員提供的一次性邀請碼。兌換邀請會佈建你的使用者、記錄你的成員資格,並為你簽發此用戶端的認證資訊,所以你永遠不必處理裝置 ID 或金鑰。

本機伺服器不需要任何設定:ws://localhost:9030/rpc 在桌面版與瀏覽器上都能 運作,因為瀏覽器把回送位址視為可信任的來源。

位於其他機器上的伺服器則不然。app.usectrl.dev 是透過 HTTPS 提供,因此瀏覽器 只會以它已信任的憑證開啟 wss:// 通訊端——而且 cc_server 一開始就拒絕在沒有 TLS 的情況下繫結非回送位址。請為它提供下列其中一項:

  • 直接提供憑證,使用 --tls-cert 與 --tls-key
  • 在前面放置負責終止 TLS 的反向代理,並以 --insecure 啟動伺服器(代理後方為明文,僅限可信任的網路)
  • 由通道或 VPN 提供憑證——Tailscale、cloudflared 或類似工具。設定 → 伺服器 → 連線與狀態在分享此伺服器底下提供內建通道的選用開關。

伺服器端有兩項設定很容易被忽略。在代理、NAT 或通道後方時,請將 --public-url 設為用戶端實際應撥接的位址——它預設為本機繫結,少了它,用戶端 就會嘗試錯誤的主機。而如果你自行代管網頁版本的副本,請把它的來源加入 --allowed-origins;該設定預設只允許 https://app.usectrl.dev,回送與原生 用戶端則一律允許。

全新安裝時:

  1. 啟動 Control Center。首次執行畫面會詢問Control Center 要以何種方式執行?
  2. 不要選在此應用程式內執行,而是填入連線欄位:伺服器 URL,以及邀請碼,或裝置 ID 與配對金鑰。
  3. 按一下連線。Control Center 會撥接伺服器,並進入工作區收件匣。

若桌面版已經在執行自己的伺服器:

  1. 開啟設定 → 伺服器 → 連線與狀態。
  2. 按一下新增伺服器。輸入伺服器 URL(wss://host:9030/rpc),以及邀請碼,或裝置 ID 與配對金鑰。URL 欄位尾端的按鈕會探索你區域網路或 tailnet 上的 cc_server 執行個體。
  3. 按一下連線,然後在新伺服器的那一列按一下切換。

切換是即時的:應用程式會就地以新的工作階段重建,不必重新啟動。如果連線 失敗,你會留在目前的伺服器上並看到錯誤。你目前所在伺服器的那一列沒有 切換動作;本機伺服器是第一個資料列,標示為在此應用程式執行。

一旦切換完成,桌面版就不再擁有任何資料庫。每個畫面都透過 WebSocket 向遠端 伺服器讀寫。

網頁版本一律為遠端。

  1. 開啟 app.usectrl.dev,或你自己的網頁版本副本。
  2. 輸入伺服器 URL,以及邀請碼,或裝置 ID 與配對金鑰。
  3. 用戶端會撥接伺服器,並呈現與桌面版相同的介面。

如果 URL 中含有配對深層連結,欄位會預先填好。配對金鑰藏在 URL 的片段中, 瀏覽器永遠不會把它傳送給代管頁面的伺服器,因此靜態主機永遠看不到它。

網頁用戶端與桌面版讀寫同一台伺服器,但有幾個介面需要原生視窗或機器本身的 裝置:

  • 沒有作業系統通知快顯、通知音效,也沒有環境橫幅列(應用程式內通知中心仍可運作)
  • 新增伺服器對話方塊中沒有區域網路或 tailnet 的伺服器探索
  • 沒有應用程式內文章閱讀器——新聞動態文章會在新分頁開啟
  • 無法重新執行會議摘要,也無法取消正在處理的摘要

有兩項是行為不同,而非付之闕如。會議錄製在瀏覽器中可以運作,會擷取你的 麥克風,外加包含音訊軌的螢幕分享。在 IDE 中開啟也可以運作,但它會要求 伺服器在_伺服器_的顯示器上啟動編輯器,因此面對沒有安裝任何編輯器的無介面 主機時,這個按鈕會自行隱藏。

  • 連線逾時:伺服器必須能從用戶端連線。請檢查繫結(--bind any)、連接埠是否開啟,以及 --public-url 是否指向用戶端實際能撥接的位址。在公開網際網路上,TLS 是強制要求——除非伺服器是在代理後方以 --insecure 啟動,否則明文且非回送的繫結會在啟動時遭到拒絕。
  • 瀏覽器拒絕連線,但原生用戶端可以運作:瀏覽器的來源不在伺服器的 --allowed-origins 清單上。預設只允許 https://app.usectrl.dev(加上回送位址)。
  • 配對金鑰遭拒:在伺服器上重新執行 cc_server pair,以輪替該裝置的金鑰,然後輸入新的金鑰。已撤銷的裝置會發現其認證資訊已不存在並以失敗關閉;撤銷會在幾秒內中斷使用中的工作階段。
  • 工作區錯誤:工作區是 URL 的一部分(/workspaces/:workspaceId/…),並隨每次呼叫傳遞,因此在某個用戶端切換工作區只會改變你自己的檢視。你只能觸及自己是成員的工作區——其他一律會以「Not a member of this workspace」拒絕。請參閱工作區與隔離。