本地部署

在本地或雲端自架您自己的 HopToDesk 網路。

建立您自己的網路

建立您自己的 HopToDesk 網路。相容於 Ubuntu 18 - 24 與 Windows。

作業系統:
Linux
LinuxWindows
此設定允許區域網路內的裝置直接連線,並在對外連線時使用 HopToDesk 的預設中繼伺服器。
設定您自己的 TURN 伺服器,以完全掌控中繼連線。所有欄位皆為必填。

安裝教學

HopToDesk 自架

逐步設定指南

安裝程式做了什麼、如何檢查,以及如何把裝置接入您自己的網路。

運作方式

HopToDesk 使用兩種伺服器。信令伺服器協助裝置互相找到彼此並建立工作階段。TURN 中繼只在兩台裝置無法直接連線時才傳送工作階段流量。

工作階段採用端對端加密,因此任何一台伺服器都無法讀取您的螢幕、檔案或聊天內容。信令伺服器只看得到裝置 ID 和連線請求。

本頁的安裝程式負責建置信令伺服器。中繼流量預設經由 HopToDesk 中繼,如果您提供了自己的 TURN 伺服器,則經由它傳送。

儀表板仍是託管服務。自架網路中的裝置仍可連結到儀表板進行管理,儀表板也可以把網路設定推送給它們。

開始之前

  • 一台執行 Ubuntu 18.04 到 24.04 的伺服器,或一台 Windows 伺服器。
  • 該伺服器的 root 或 sudo 權限。
  • 一個所有裝置都能連到的 IP 位址或主機名稱。如果網路不會離開您的區域網路,使用私有位址即可。
  • 伺服器防火牆已為您的裝置開放 TCP 80 連接埠。
  • 如果您想使用自己的中繼:TURN 伺服器的主機、連接埠、使用者名稱和密碼。

第 1 步:在 Linux 上安裝信令伺服器

  1. 以 root 或具有 sudo 權限的使用者登入伺服器。
  2. 在本頁頂端選擇 LAN + Default Relay 或 Custom TURN Server。安裝指令會隨您的選擇而變。
  3. 點選 Copy,把指令貼到終端機並按 Enter。
  4. 等待腳本執行完成。在全新的伺服器上,安裝套件可能需要幾分鐘。
  5. 腳本結束時會輸出 HopSignal Setup Complete,接著是您的伺服器位址和一段可直接使用的網路設定。請保留這段輸出,第 3 步會用到。
cd /home && curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sh hsinstall.sh

使用自己的 TURN 伺服器時,依以下順序把四個值加到指令結尾:主機、連接埠、使用者名稱、密碼。

sh hsinstall.sh turn.example.com 443 myuser mypassword

腳本做了什麼

  • 使用 apt 安裝所需的建置工具和 OpenSSL 程式庫。
  • 把信令伺服器的執行檔下載到 /home/hopsignal 資料夾。
  • 建立一個名為 hopsignal 的 systemd 服務,並在每次開機時啟動。
  • 新增一個 cron 看門狗:服務停止回應時自動重新啟動,記錄檔超過 100 MB 時自動輪替。
  • 當 ufw 啟用時,在 ufw 中開放 TCP 80 連接埠。

Windows 上的第 1 步:執行信令伺服器

  1. 把本頁頂端的 OS 切換鈕切到 Windows 並點選 Download。您會得到一個名為 hopsignal.exe 的檔案。
  2. 建立一個資料夾,例如 C:\hopsignal,並把 hopsignal.exe 移入其中。
  3. 在同一個資料夾中建立一個名為 fedlist.txt 的空白文字檔。
  4. Windows 版本還需要 PEM 格式的 TLS 憑證及其私鑰。任何一組都可以,包括自我簽署的。把它們以 cert.pem 和 key.pem 的名稱存在同一個資料夾。
  5. 以系統管理員身分開啟命令提示字元並啟動伺服器。
cd C:\hopsignal
hopsignal.exe --ADDR 0.0.0.0:80 --WSS_ADDR 0.0.0.0:443 --CERT cert.pem --KEY key.pem --FEDLIST fedlist.txt --FEDADDR 127.0.0.1:82 --FEDPWD 123456789 --LOGFILE hs.log

如果您有 OpenSSL,下面的指令可以建立一組自我簽署憑證:

openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650 -subj "/CN=hopsignal"

在 Windows 防火牆中允許該連接埠:

netsh advfirewall firewall add rule name="HopSignal" dir=in action=allow protocol=TCP localport=80

要讓伺服器在重新開機後繼續執行,請把它登錄為在開機時以 SYSTEM 帳戶啟動的排程工作:

schtasks /Create /TN HopSignal /SC ONSTART /RU SYSTEM /TR "C:\hopsignal\hopsignal.exe --ADDR 0.0.0.0:80 --WSS_ADDR 0.0.0.0:443 --CERT C:\hopsignal\cert.pem --KEY C:\hopsignal\key.pem --FEDLIST C:\hopsignal\fedlist.txt --FEDADDR 127.0.0.1:82 --FEDPWD 123456789 --LOGFILE C:\hopsignal\hs.log"
schtasks /Run /TN HopSignal

第 2 步:確認伺服器正在執行

在 Linux 上檢查服務和記錄檔:

sudo systemctl status hopsignal
tail /home/hopsignal/hs.log

在 Windows 上確認連接埠正在監聽:

netstat -an | find ":80 "

從任何一台電腦測試 WebSocket 連接埠。把 SERVER_IP 換成您的伺服器位址。正常的伺服器會回應 HTTP/1.1 101 Switching Protocols。

curl -i -N -m 5 -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" http://SERVER_IP:80/

第 3 步:讓裝置指向該伺服器

每台裝置都從一份小的 JSON 文件讀取網路設定。這就是安裝程式在第 1 步結尾輸出的內容。把 SERVER_IP 換成您的伺服器位址;如果您執行自己的中繼,請填寫 TURN 區塊。

{
  "turnservers": [
    {
      "protocol": "turn",
      "host": "turn.hoptodesk.com",
      "port": "443",
      "username": "hoptodesk",
      "password": "hoptodesk1234"
    }
  ],
  "rendezvous": {
    "host": "SERVER_IP",
    "port": "80"
  },
  "winversion": "1.0.0",
  "macversion": "1.0.0",
  "linuxversion": "1.0.0",
  "none": "none"
}

rendezvous 區塊就是您的信令伺服器。當透過 TLS 連到伺服器時,例如 Cloudflare Worker 或 AWS 部署,請使用 rendezvousssl 鍵取代 rendezvous。turnservers 清單包含一個或多個中繼。一般連線把通訊協定設為 turn,TLS 連線設為 turn-tls。版本鍵保持原樣即可。

把這份文件交給裝置有三種方式。請選擇適合您環境的一種。

方式 A:在每台裝置上放置 api.json 檔案

把該文件儲存為名為 api.json 的檔案,放到 HopToDesk 的設定資料夾中,然後重新啟動 HopToDesk。應用程式會在啟動時讀取該檔案,不再連線到 HopToDesk API。

平台路徑
Windows,所有使用者和服務C:\ProgramData\HopToDesk\config\api.json
Windows,僅目前使用者%APPDATA%\HopToDesk\config\api.json
macOS~/Library/Preferences/com.hoptodesk.HopToDesk/api.json
Linux~/.config/hoptodesk/api.json

在 Linux 上,背景服務以 root 執行並讀取 /root 下的檔案,而您開啟的應用程式則讀取您自己家目錄中的檔案。請在兩處各放一份。

方式 B:把檔案放到一個 URL,並在應用程式中選取

  1. 把 api.json 上傳到任何一台裝置可連到的網頁伺服器。建議使用 HTTPS。
  2. 在 HopToDesk 中點選齒輪圖示開啟設定。
  3. 在 Network 下點選 Choose Network。
  4. 選取 Custom Network Settings,貼上您檔案的 URL 並確認。
  5. HopToDesk 會下載該檔案,檢查其中是否包含有效的 rendezvous 項目和 turnservers 清單,然後透過您的伺服器重新連線。

要切回公用網路,再次開啟 Choose Network 並選取 HopToDesk Network。

方式 C:從儀表板推送設定

如果您的裝置已連結到 HopToDesk 儀表板,您可以為整個帳戶一次設定好網路。從儀表板建立的自訂用戶端會內建這些設定。

  1. 以擁有者或管理員身分登入儀表板並開啟設定。
  2. 在 Network Settings 下選取 Custom Network。
  3. 輸入信令伺服器的主機、連接埠,通訊協定選擇 WS。如果您執行自己的中繼,請新增 TURN 伺服器;留空則繼續使用 HopToDesk 中繼。
  4. 點選 Save Network Settings。每台已連結的裝置都會收到新設定並自動套用,不需重新安裝。

執行自己的 TURN 中繼(選用)

無法直接連線的工作階段預設會經由 HopToDesk 中繼。若要讓所有流量都留在您自己的基礎架構內,請執行一台 TURN 伺服器。任何標準 TURN 伺服器都可以,在 Linux 上 coturn 是常見的選擇。

  1. 在中繼伺服器上安裝 coturn。
sudo apt install coturn
  1. 編輯 /etc/turnserver.conf,至少設定下面這些值。把 realm、憑證和公開 IP 換成您自己的。
listening-port=443
fingerprint
lt-cred-mech
user=myuser:mypassword
realm=example.com
external-ip=PUBLIC_IP
  1. 如果 /etc/default/coturn 中有 TURNSERVER_ENABLED 這一行,請取消註解。然後啟用並啟動服務。
sudo systemctl enable --now coturn
sudo systemctl restart coturn
  1. 在中繼的防火牆上開放監聽連接埠的 TCP 和 UDP,以及 49152 到 65535 的 UDP 中繼範圍。
  2. 把中繼交給裝置:帶上四個 TURN 值重新執行安裝程式,或編輯網路設定中的 turnservers 區塊。如果您的中繼終止 TLS,通訊協定請使用 turn-tls。

在 Linux 上管理伺服器

sudo systemctl status hopsignal
sudo systemctl restart hopsignal
sudo systemctl stop hopsignal
tail -f /home/hopsignal/hs.log

要更新伺服器,請先停止服務,再重新執行安裝指令。它會下載最新的執行檔並重寫服務。

要連同服務和 cron 項目一起移除伺服器:

cd /home && curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sh hsinstall.sh remove

疑難排解

  • ID 一直停在 Generating,或應用程式一直嘗試連線到網路:裝置無法連到信令伺服器。請檢查服務是否在執行、80 連接埠是否開放,以及網路設定中的位址是否正確。
  • 裝置在區域網路內可以連線,但從外部無法連線:中繼無法連到。使用預設中繼時,裝置需要能透過 443 連接埠對外連到 turn.hoptodesk.com。使用自有中繼時,請檢查其防火牆規則和憑證。
  • 應用程式忽略了 api.json:請確認檔案是有效的 JSON 且沒有多餘的逗號、位於正確的資料夾,並且您已重新啟動 HopToDesk。檔案被讀取後,應用程式記錄檔會出現 Loaded local api.json 這一行。
  • 82 連接埠是用來串連多台自有信令伺服器的聯邦連接埠。請勿對網際網路開放。
  • 信令伺服器不儲存任何工作階段資料。如果看起來卡住了,重新啟動服務即可。裝置會在大約一分鐘內自行重新連線。

第三方託管

偏好託管平台嗎?您也可以將 HopToDesk 網路部署到 Cloudflare 或 AWS。

Cloudflare 上的 HopToDesk

  1. 登入您的 Cloudflare 帳戶,並前往要使用的網域區域。
  2. 建立一個檔名為 index.js 的新 Worker。
  3. 將 Worker 程式碼複製到 index.js,然後儲存並部署 Worker。 Worker 程式碼
  4. 您的 Cloudflare Worker 網址已就緒。請將其用作 "rendezvousssl" 的值。 api.json 自訂 API

AWS 上的 HopToDesk

  1. 如果您還沒有 AWS 帳戶,請先註冊一個。
  2. 在 AWS Marketplace 的 HopToDesk 頁面訂閱。 AWS Marketplace
  3. 在 Amazon 完成服務佈建後,視需要設定並啟動執行個體。
  4. 您的 HopToDesk 網路現已部署於 AWS。請將其 https 網址設為 "rendezvousssl" 的值。 api.json 自訂 API

注意: 此 Worker 需要每月 5 美元起的 Cloudflare 付費方案,因為它使用 Durable Objects。 Durable Objects 價格

AWS Marketplace 與 AWS Marketplace 標誌為 Amazon.com, Inc. 或其關係企業的商標。
Cloudflare、Cloudflare 標誌與 Cloudflare Workers 為 Cloudflare, Inc. 在美國及其他司法管轄區的商標及/或註冊商標。