Skip to content
Back to Blog指南

自托管远程桌面:2026 完整指南(RustDesk + GoDesk 中继)

GoDesk Editorial Team12 分钟阅读
自托管远程桌面:2026 完整指南(RustDesk + GoDesk 中继)

想要一套流量永远不经过供应商服务器的远程桌面?本指南演示如何在每月 $5 的 VPS 上端到端自托管中继 —— 要安装什么、如何加固,以及如何应对官方文档常常忽略的故障模式。

对大多数用户来说,厂商托管的 relay(TeamViewer、AnyDesk、GoDesk)已经足够。端到端加密意味着中继只能看到密文——无法读取你的屏幕帧、按键或文件。但如果你有以下任一约束,“足够”并不等同于“理想”:

  • 合规性:受监管的行业,数据不得经过任何第三方基础设施(法律、国防、某些医疗领域)。
  • 主权:你不希望远程访问的元数据(谁连接到什么、何时、持续多长时间)被任何人收集。
  • 规模下的成本:如果你通过中继运行 100+ 台设备,厂商费用会累加——在 $5 VPS 上自托管中继可以处理数千个会话。
  • 隔离或受限网络:厂商中继无法从你的环境访问。

如果以上任一项适用于你,本指南将演示如何在基础 VPS 上端到端自托管。参考栈是 RustDesk 的 hbbs + hbbr,GoDesk 和 RustDesk 客户端都可以连接。包括 TLS 在内的总配置时间:约 30 分钟。

你要搭建的内容

两个服务:

  • hbbs(rendezvous 服务器):处理初始握手。双方客户端短暂连接以发现彼此、交换公钥,并判断是否可直接 P2P 连接。监听 TCP/UDP 21115-21117。
  • hbbr(中继服务器):如果直接 P2P 失败(NAT、防火墙),流量通过中继转发。监听 TCP 21117(某些场景也使用 UDP)。

中继仅在 P2P 无法建立时才会介入——对于大多数消费者场景来说,由于 NAT 这是常态,但在同一局域网环境中较少见。因此即便自托管中继,你也只需为真正需要中继的会话支付 VPS 带宽费用。

步骤 1:选择 VPS

带宽是主要资源。CPU 和内存要求很低(中继只是转发字节)。到 2026 年,合理的选择有:

  • Hetzner CX22(€4/mo,2 vCPU,4 GB RAM,20 TB 带宽,欧盟数据中心)——性价比最高。
  • DigitalOcean Basic Droplet($6/mo,1 vCPU,1 GB,1 TB 带宽)——用户体验好,覆盖美欧区域。
  • OVH VPS Starter(€3.50/mo,2 vCPU,2 GB,不限流量)——适合高带宽场景。
  • Hetzner Storage Box——不是 VPS,列出是因为部分读者会问。不能用于本方案;你需要一台真正的服务器。

选择靠近连接客户端的机房区域——这关系到延迟,因为中继流量受往返时延影响。

步骤 2:设置服务器

创建一台全新的 Ubuntu 22.04 或 Debian 12 VPS。以 root 身份通过 SSH 登录。

# Update + harden basics
apt update && apt upgrade -y
apt install -y ufw fail2ban docker.io docker-compose-plugin
ufw allow 22/tcp     # SSH
ufw allow 21115:21119/tcp
ufw allow 21115:21119/udp
ufw enable
systemctl enable --now docker

不要跳过防火墙。RustDesk 的默认配置只暴露必要端口,其它端口应当锁定。

步骤 3:通过 Docker 运行 hbbs + hbbr

创建文件 /opt/godesk-relay/docker-compose.yml

services:
  hbbs:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbs
    restart: unless-stopped
    ports:
      - "21115:21115/tcp"
      - "21116:21116/tcp"
      - "21116:21116/udp"
      - "21118:21118/tcp"
    command: hbbs -r your-server.example.com:21117
    volumes:
      - ./data:/root
  hbbr:
    image: rustdesk/rustdesk-server:latest
    container_name: hbbr
    restart: unless-stopped
    ports:
      - "21117:21117/tcp"
      - "21119:21119/tcp"
    command: hbbr
    volumes:
      - ./data:/root

your-server.example.com 替换为实际主机名。启动:

cd /opt/godesk-relay
mkdir -p data
docker compose up -d
docker compose logs --tail 20

首次启动时你应在日志中看到 hbbs 打印的公钥——从日志中保存它(数据卷中的 id_ed25519.pub),因为客户端用它来验证它们连接的是你的中继而不是中间人。

步骤 4:配置 DNS

relay.yourdomain.com 添加 A 记录,指向 VPS 的 IP。RustDesk 也接受裸 IP,但如果将来迁移,主机名更灵活。

步骤 5:将客户端指向自托管中继

这是大多数指南略过的部分。每个客户端需要三个配置值:

  • ID 服务器 = relay.yourdomain.com:21116
  • 中继服务器 = relay.yourdomain.com:21117
  • 公钥 = 来自 VPS 的 data/id_ed25519.pub 的内容

在 Windows / macOS / Linux 上:

  1. 打开 GoDesk 或 RustDesk 客户端。
  2. 设置 → 网络 → ID/Relay server。
  3. 输入上述三项值。保存。
  4. 重启客户端。

状态指示应在几秒内变为绿色,表示已在你的中继上注册。若始终为红色,检查防火墙规则并确保证公钥完全匹配。

步骤 6:添加 TLS(可选,但推荐)

默认的 RustDesk 协议在应用层已经加密(你复制的公钥是其中一部分)。在其上再加一层 TLS 可提供额外保护,防御某些被动网络攻击。实现方法是在中继端口前放置一个反向代理(nginx 或 Caddy)。

Caddy 版本(更简单):

relay.yourdomain.com {
    reverse_proxy /ws/* localhost:21118
    reverse_proxy * localhost:21115
}

Caddy 会自动签发 Let's Encrypt 证书。更新客户端以使用启用 TLS 的 443 端口。

步骤 7:备份密钥

data/ 目录包含 rendezvous 服务器的密钥对。如果丢失,所有客户端都必须用新的公钥重新配置。请备份:

# Local backup
rsync -avz vps:/opt/godesk-relay/data/ ~/godesk-relay-backup-$(date +%Y%m%d)/
# OR copy the two key files
scp vps:/opt/godesk-relay/data/id_ed25519* ~/godesk-keys/

将备份存放在离线位置。如果 VPS 被攻破,你需要能够用相同的密钥启动新服务器,以便现有客户端在不重新配置的情况下继续工作。

文档未提及的故障模式

故障 1:客户端无法连接到中继。90% 的情况是防火墙问题。检查 ufw status,并确认云提供商的安全组也放通了相同端口;从客户端运行 nc -vz relay.yourdomain.com 21116 以验证可达性。

故障 2:P2P 总是回退到中继。对称 NAT 或严格的企业防火墙会强制所有流量走中继。这是正常的——性能通常不错,但会产生带宽计费。为 relay.yourdomain.com 选择高带宽的 VPS 方案。

故障 3:中继进程崩溃且未重启。Docker 的 restart: unless-stopped 能处理大多数情况。在 cron 中加入 docker compose ps 并在容器缺失时告警。

故障 4:SSL 证书过期。如果使用 Caddy,这会自动处理——它会在到期前 30 天续期。如果使用 nginx + certbot,请设置 cron 自动续期。certbot.eff.org 有官方指南。

带宽估算

质量在此处很重要。粗略估算:

  • 低质量(以文本为主的工作):约 50 KB/s = 180 MB/小时
  • 中等(常规办公):约 200 KB/s = 720 MB/小时
  • 高质量(视频、设计):约 1 MB/s = 3.6 GB/小时

一台 Hetzner CX22(每月 20 TB 带宽)大约可支持每月 5,500 小时的高质量会话——远超个人或小团队的需求。20 TB 的上限对有数百台设备的组织来说更为相关。

预构建选项:GoDesk 的可自托管中继

以上均为使用 RustDesk 开源栈的手动方式。GoDesk 发布了同样的 hbbs/hbbr 自托管打包,预置了合理的默认配置。如果你不想管理 Docker compose 文件,请参阅 我们的自托管指南——相同架构,提供一条命令的安装脚本,封装了上述步骤。

何时不应自托管

自托管会增加运维负担:监控、密钥备份、系统更新、证书续期。如果你的用例只是“我想远程访问家用电脑”,厂商托管的中继(免费 GoDesk 方案处理 5 GB/月)远比长期运行 VPS 要省心。

只有在有充分理由时才自托管——合规、主权或规模。若仅仅是“看起来很酷”,建议不要;运维成本最终会追上你。

回顾

  1. $5/月 的 VPS,位于你偏好的区域。
  2. Docker + UFW + RustDesk 的 hbbs/hbbr 容器。
  3. 指向 VPS 的 DNS A 记录。
  4. 每个客户端的三项配置值(ID 服务器、中继服务器、公钥)。
  5. 备份密钥。
  6. 可选:通过 Caddy/nginx 添加 TLS。

端到端配置时间:30 分钟。持续维护:最小化。结果是:你的远程桌面流量不再经过他人的基础设施。

如需了解更多 GoDesk 相关内容——自托管文档开源生态现状,或 客户端下载