Files
doc.rustdesk.com/content/self-host/rustdesk-server-pro/relay/_index.zh-tw.md
T
21pages 63497c2be6 docs(relay): document hbbr key configuration options
- add relay-only Docker Compose configuration
  - document KEY and key-file setup methods
  - clarify legacy -k _ behavior and Pro 1.8.6 changes
  - update all translations

Signed-off-by: 21pages <sunboeasy@gmail.com>
2026-08-26 23:27:13 +08:00

9.0 KiB
Raw Blame History

title, weight, description, keywords
title weight description keywords
配置中繼伺服器 17 RustDesk 的配置中繼伺服器文檔,提供安裝、設定、部署與疑難排解指南。
rustdesk relay server
rustdesk hbbr
rustdesk geolocation relay
rustdesk additional relay
rustdesk server pro relay

快速回答

當單一機房或單一 Relay 無法滿足延遲、地域覆蓋或流量分擔需求時,您就需要額外的 Relay 伺服器。應在主控台與基礎部署穩定後再設定它們。

關鍵重點

  • 把額外 Relay 部署在關鍵地區或使用者附近
  • 在 Web 主控台中註冊並驗證 Relay 設定
  • 在切換正式流量前先測試路由效果

RustDesk Pro - 使用docker安裝具有地理位置的附加中繼伺服器

{{% notice note %}} 簡單安裝會在同一台機器上隱式創建一個中繼伺服器(hbbr進程),您無需顯式指定中繼伺服器。

如果您想在另一台機器上顯式創建附加中繼伺服器,請按照OSS安裝運行hbbr。您可以在rustdesk-server-linux-amd64.tar.gzrustdesk-server-hbbr_<version>-<arch>.debrustdesk-server-windows-x86_64.tar.gzdockersudo docker run ... rustdesk/rustdesk-server-pro hbbr)中找到hbbr

hbbr不需要許可證,與開源版本相同。 {{% /notice %}}

您可以在全球運行多個中繼伺服器,並利用地理位置自動使用最近的中繼伺服器,從而在連接遠程計算機時獲得更快的體驗。hbbs每隔幾秒鐘自動檢查這些中繼伺服器是否在線,它只選擇在線的中繼伺服器。

{{% notice note %}} 已知問題:https://github.com/rustdesk/rustdesk/discussions/7934 {{% /notice %}}

hbbrKEY環境變數設定為id_ed25519.pub中的公開金鑰,或者將id_ed25519id_ed25519.pub複製到中繼伺服器。

Docker Compose

額外的中繼伺服器只需要執行hbbr,不需要hbbsdepends_on。請選擇以下一種金鑰設定方式:

  • 保留environment部分,並依照以下範例將KEY設定為id_ed25519.pub的內容。
  • 刪除整個environment部分,並將id_ed25519id_ed25519.pub放入./data

建立一個包含以下內容的compose.yml檔案。

services:
  hbbr:
    container_name: hbbr
    image: docker.io/rustdesk/rustdesk-server-pro:latest
    environment:
      KEY: "<PUBLIC_KEY>"
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped

Docker

使用環境變數設定金鑰

KEY設定為id_ed25519.pub的內容。

# sudo docker run --name hbbr -e KEY="<PUBLIC_KEY>" -td --net=host rustdesk/rustdesk-server-pro hbbr

使用金鑰檔案

下面的Docker範例使用金鑰檔案方式。

安裝步驟

1 - 如果已安裝docker,通過SSH連接到您的伺服器並為hbbr創建卷:

# docker volume create hbbr

卷hbbr應該位於/var/lib/docker/volumes/hbbr/_data

2 - 將私鑰對複製到卷位置,在本例中我們將使用SCP複製文件。

命令語法為scp <路徑/文件名> 用戶名@伺服器:</目標/路徑>

# scp id_ed25519 root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data
# scp id_ed25519.pub root@100.100.100.100:/var/lib/docker/volumes/hbbr/_data

3 - 使用先前創建的卷部署hbbr容器。該卷包含運行私有中繼伺服器所需的私鑰對。

# sudo docker run --name hbbr -v hbbr:/root -td --net=host rustdesk/rustdesk-server-pro hbbr

rustdesk/rustdesk-server映像仍支援-k <KEY>。若要使用掛載的金鑰檔案,請透過-k _執行:

# sudo docker run --name hbbr -v hbbr:/root -td --net=host rustdesk/rustdesk-server hbbr -k _

這裡的_是一個特殊值,並不是金鑰本身。它會讓hbbr載入或產生id_ed25519,從中取得公開金鑰,並使用該公開金鑰驗證中繼請求。RustDesk Server Pro 1.8.6之前的版本也支援透過-k _載入id_ed25519

從RustDesk Server Pro 1.8.6開始,hbbr-k選項已棄用且會被忽略。如果未設定KEYhbbr會從id_ed25519中取得公開金鑰;如果私鑰檔案不存在,則從id_ed25519.pub中讀取。如果兩個檔案都不存在,hbbr將以公開中繼模式執行。

4 - 檢查運行日誌以驗證hbbr正在使用您的密鑰對運行:

# docker logs hbbr

INFO [src/common.rs:121] **Private key comes from id_ed25519**
NFO [src/relay_server.rs:581] Key: XXXXXXXXXXXXXXXXXXXXX
INFO [src/relay_server.rs:60] #blacklist(blacklist.txt): 0
INFO [src/relay_server.rs:75] #blocklist(blocklist.txt): 0
INFO [src/relay_server.rs:81] Listening on tcp :21117

根據您的作業系統,您可能希望使用防火牆阻止/允許IP。

在我們的例子中,運行Ubuntu時,我們希望允許任何TCP連接到端口21117和21119。

# sudo ufw allow proto tcp from any to any port 21117,21119

啟用防火牆

# sudo ufw enable

檢查狀態

# ufw status

Status: active

To                         Action      From
--                         ------      ----
21117,21119/tcp            ALLOW       Anywhere
21117,21119/tcp (v6)       ALLOW       Anywhere (v6)

使用Web控制台為地理位置配置RustDesk Pro

註冊並下載GeoLite2 City資料庫檔案

要使用地理位置,hbbs需要訪問MaxMind GeoLite2 City資料庫。該資料庫是免費的,您可以註冊下載檔案並獲取API密鑰。

首先通過訪問網站創建賬戶(如果您還沒有)。 轉到Download Databases並下載GeoLite2 City,選擇gzip檔案,解壓縮後應該有mmdb檔案。

image

如果您使用安裝腳本在Linux機器上安裝了RustDesk Prommdb檔案需要移動到/var/lib/rustdesk-server/

對於Docker安裝,檔案應該在部署容器時映射到/root的卷中。

獲取API密鑰以自動化流程 - Linux伺服器

您需要定期更新此檔案,我們可以使用cronjob來執行。您需要一個API密鑰來訪問下載鏈接,這是免費的。

轉到Manage License Keys並生成新的許可證密鑰。
image
image

您可以通過幾種方式自動化下載過程,但您可以將以下命令添加到您的crontab中,將{您的訪問密鑰}替換為您從上一步獲得的API密鑰。

/usr/bin/curl -L --silent 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key={您的訪問密鑰}&suffix=tar.gz' | /bin/tar -C '/var/lib/rustdesk-server/' -xvz --keep-newer-files --strip-components=1 --wildcards '*GeoLite2-City.mmdb'

在RustDesk Pro Web控制台中更改設置

將您的中繼伺服器IP地址或DNS名稱(從版本1.1.11開始支持DNS)添加到Relay Servers不需要端口,顯式使用21117端口。
image

通過添加伺服器IP地址和伺服器所在位置的坐標來添加地理覆蓋。
image

點擊Reload Geo,您的列表應該類似於此。
image

要確認結果,在點擊Reload Geo時檢查您的hbbs日誌,您應該看到顯示中繼伺服器IP地址及其坐標的訊息。

如果您在Linux機器上運行RustDesk Pro,請使用命令RUST_LOG=debug ./hbbs查看日誌。如果您在Docker容器上運行,請使用docker logs hbbs

RUST_LOG=debug ./hbbs

INFO [src/common.rs:130] GEOIP_FILE: ./GeoLite2-City.mmdb
INFO [src/common.rs:159] override 1xx.xxx.xxx.x7: -1.xx 5x.xxx
[src/common.rs:159] override 1xx.xxx.xxx.xx8: -3.xxx 5x.xxxx
[src/common.rs:159] override 7xx.xxx.xxxx.xx1: 6.xxx 5x.xxxx
GEOIP_FILE loaded, #overrides 3
INFO [src/common.rs:119] relay-servers=["1xx.xxx.xxx.x7", "1xx.xxx.xxx.xx8", "7xx.xxx.xxx.xx1"]
NFO [src/rendezvous_server.rs:1467] parsed relay servers: [("1xx.xxxx.xxx.xx7", Some((-1x, xxx))), ("1xx.xxx.xxx.xx8", Some((-3x, xxx))), ("7xx.xxx.xxx.xx1", Some((6x, xxx)))]

您還可以直接在hbbr實例上確認中繼請求,只需檢查容器日誌即可。

# docker logs hbbr

INFO [src/relay_server.rs:436] Relayrequest 0593e64e-4fe8-4a59-a94f-b3420ab043eb from [::ffff:100.100.123.233]:52038 got paired
INFO [src/relay_server.rs:442] Both are raw