本地部署

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

建立您自己的網路

在 64 位元 Linux 或 Windows 伺服器上建立您自己的 HopToDesk 網路。

最快的方式:在儀表板中開啟設定、Network Settings、Set up a private network。您會得到現成的 AWS 啟動連結或 Docker 指令,新伺服器會自動向您的儀表板回報。 開啟儀表板

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

安裝教學

HopToDesk 自架

逐步設定指南

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

運作方式

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

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

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

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

也需要把儀表板放在您自己的伺服器上? 與我們聯繫

開始之前

  • 一台具備 systemd 的 64 位元 Linux 伺服器(例如 Ubuntu 或 Debian),或一台 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 步會用到。
curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sudo sh hsinstall.sh

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

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

腳本做了什麼

  • 依您的處理器(Intel、AMD 或 ARM)把信令伺服器下載到 /home/hopsignal 資料夾。
  • 將下載的檔案與已發布的 SHA256SUMS 清單核對,不符時停止且不做任何變更。
  • 建立一個名為 hopsignal 的 systemd 服務,並在每次開機時啟動。
  • 使用建議的連線限制和隨機的聯合密碼啟動伺服器,該密碼儲存在 /home/hopsignal/hopsignal.env 中,僅 root 可存取。
  • 新增一個 cron 看門狗:服務停止回應時自動重新啟動,記錄檔超過 100 MB 時自動輪替。
  • 當 ufw 啟用時,在 ufw 中開放 TCP 80 連接埠。

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

  1. 把本頁頂端的 OS 切換鈕切到 Windows 並點選 Download。您會得到一個名為 hopsignal.exe 的檔案。
  2. 建立一個資料夾,例如 C:\hopsignal,並把 hopsignal.exe 移入其中。
  3. 在同一個資料夾中建立一個名為 fedlist.txt 的空白文字檔。
  4. 以系統管理員身分開啟命令提示字元並啟動伺服器。
cd C:\hopsignal
for /f %i in ('powershell -NoProfile -Command "[guid]::NewGuid().ToString('N')"') do @(setx /M FEDPWD %i >nul & set FEDPWD=%i)
hopsignal.exe --ADDR 0.0.0.0:80 --FEDLIST fedlist.txt --FEDADDR 127.0.0.1:82 --LOGFILE hs.log

第二行會將隨機的聯合密碼儲存為 Windows 系統設定,因此它不會出現在伺服器的命令列中。

在 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 --FEDLIST C:\hopsignal\fedlist.txt --FEDADDR 127.0.0.1:82 --LOGFILE C:\hopsignal\hs.log"
schtasks /Run /TN HopSignal

使用 Docker 的第 1 步:在容器中執行信令伺服器

映像檔 hoptodesk/hopsignal 在 Intel、AMD 和 ARM 主機上執行同一個信令伺服器。使用建議的限制啟動它:

docker run -d --name hopsignal --restart unless-stopped -p 80:80 \
  -e HS_MAX_MESSAGE_KB=64 -e HS_QUEUE_LIMIT=256 -e HS_MAX_CONNS=20000 \
  -e HS_CONNS_PER_IP=100 -e HS_LOOKUPS_PER_IP=20 \
  -e HS_IDLE_TIMEOUT=300 -e HS_UPGRADE_TIMEOUT=10 \
  hoptodesk/hopsignal

每個 HS_ 值開啟一項限制:訊息大小(KB)、每個連線的排隊訊息數、開啟的連線數、每個位址每秒的新連線數和查詢數、閒置秒數以及交握秒數。省略某個值,該限制就保持關閉。

若要將容器自動連結到您的儀表板帳戶,請使用儀表板中 Set up a private network 提供的 Docker 指令。它會加入 HS_SETUP_TOKEN 和 HS_DASHBOARD_URL,伺服器會在首次啟動時回報一次自己的位址。

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

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

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

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

netstat -an | find ":80 "

使用 Docker 時,檢查容器及其記錄:

docker ps --filter name=hopsignal
docker logs hopsignal

從任何一台電腦測試 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,請使用 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/.config/hoptodesk 中再放一份副本。在使用者登入前的登入畫面,應用程式會使用這份副本。

方式 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 (Default)。

在 Android 和 iOS 上,開啟設定,在網路區段關閉 Use HopToDesk Network,然後輸入您檔案的 URL。透過 EMM 管理的手機可以透過受管理設定 custom_api_url 接收同一個 URL。

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

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

新伺服器:在儀表板中開啟設定、Network Settings、Set up a private network。選擇 In my AWS account 或 On my own server。伺服器啟動時會回報自己的位址,每台已連結的裝置都會收到設定。不必輸入任何內容。

已在執行的伺服器:手動輸入其設定。

  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 項目一起移除伺服器:

curl -o hsinstall.sh -sL https://www.hoptodesk.com/hs/hsinstall && sudo 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. 在 Worker 設定中,為 SessionGroup 類別新增一個名為 group 的 Durable Object 繫結。
  5. 您的 Cloudflare Worker 網址已就緒。請將其用作 "rendezvousssl" 的值。 api.json 自訂 API

AWS 上的 HopToDesk

  1. 在 AWS Marketplace 訂閱 HopToDesk Private Network。此產品免費,AWS 只收取伺服器費用。 AWS Marketplace
  2. 已登入儀表板?開啟設定、Network Settings、Set up a private network,然後選擇 In my AWS account。啟動連結已填好設定,伺服器會自動向您的儀表板回報,接下來的步驟可以略過。
  3. 選擇 Launch with CloudFormation。一個表單即可在您選擇的區域建立伺服器、其固定位址和防火牆規則。
  4. 堆疊建立完成後,開啟其 Outputs 分頁。其中顯示供您的應用程式使用的 api.json。
  5. 將該 api.json 儲存到每台電腦,或從儀表板的網路設定將其推送到所有裝置。 api.json

注意: 此 Worker 使用 Durable Objects。費用取決於您的 Cloudflare 方案和用量。 Durable Objects 價格

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

正在規劃自架部署嗎? 索取報價