AI 摘要 基于文章说明生成

从零部署 RustDesk 自建服务器,使用 Docker Compose 运行 hbbs 与 hbbr,涵盖云服务器端口、安全组、密钥保护、客户端配置、P2P 直连和中继排错。

3,186 字 15 分钟

自建 RustDesk 中继服务器教程:Docker 部署 hbbs 与 hbbr

远程办公
RustDesk 自建中继服务器与远程桌面连接示意图
PRIVATE REMOTE DESKTOP / RUSTDESK
自建 RustDesk 中继服务器

用 Docker Compose 部署 hbbs 与 hbbr,把远程桌面的连接入口、密钥和中继带宽放在自己能管理的服务器上。

开源客户端P2P 优先自有中继成本可控

如果你需要从外部设备访问家中的开发环境、文件和桌面应用,自建 RustDesk 可以把部署控制权交给你自己。它并不等于“零维护”或“绝对安全”,但通过固定版本、限制端口、保护密钥和定期更新,可以形成一条边界清晰、便于审计的远程访问链路。

一、为什么选择自建 RustDesk

商业远控软件通常更省配置,公共组网工具更适合轻量互联,而 RustDesk 自建方案适合希望掌握服务端入口、连接密钥和中继带宽的个人或小团队。它支持 Windows、macOS、Linux、Android 和 iOS,远程桌面、文件传输等能力仍由 RustDesk 客户端完成。

适合的理由

  • 入口可控:客户端指向自己的 ID 与中继服务器。
  • P2P 优先:网络条件允许时,桌面数据可在两端直连。
  • 平台覆盖广:适合办公、开发和临时协作。
  • 成本可预估:主要成本是云服务器、带宽和维护时间。

需要承担的工作

  • 维护系统补丁、防火墙规则和 Docker 版本。
  • 保管服务器密钥并准备备份与恢复方案。
  • 中继流量会消耗带宽,体验取决于两端网络。
  • 服务升级前需要阅读版本变更并验证回滚。

二、hbbs、hbbr 与 P2P 的工作原理

出门设备登录 RustDesk 并发起连接
hbbs 信令服务注册 ID、发现设备、协商路径
家中设备在线等待连接并验证密钥
hbbs 主要负责控制面;它不等同于持续转发桌面画面的中继。
两端客户端尝试 NAT 打洞与点对点连接
P2P 直连成功时延迟与带宽更接近两端网络
hbbr 中继直连失败时转发加密数据包
直连失败并不表示服务不可用,连接会回退到 hbbr;中继带宽决定此时的画面和文件传输上限。

三、服务器准备与端口规划

项目建议说明
系统Ubuntu 22.04/24.04 或 Debian 12选择仍在支持周期内的发行版
资源1 核 1 GB 起步轻量个人使用通常足够,中继并发高时再扩容
带宽按中继并发量规划画面、文件和音频都可能占用出口带宽
域名rd.example.com便于更换服务器时只更新 DNS
镜像固定 RustDesk Server 版本不要把 latest 直接用于生产环境
端口协议用途是否必需
21115TCPNAT 类型检测按客户端版本与功能确认
21116TCPID 服务的 TCP 通道建议开放
21116UDPID 注册、心跳和打洞相关流量必须重点检查
21117TCPhbbr 中继服务使用中继时必需
21118/21119TCPWebSocket 与 Web 中继需要网页客户端时再开放

四、Docker Compose 部署 hbbs 与 hbbr

  1. 安装 Docker

    确认 Docker Engine 与 Compose 插件可用,并设置 Docker 开机启动。

  2. 创建数据目录

    把服务数据和 Ed25519 密钥放在独立目录,便于备份和迁移。

  3. 启动两个服务

    使用固定版本镜像运行 hbbs 与 hbbr,检查容器日志和监听端口。

  4. 复制公钥

    只把 id_ed25519.pub 填入客户端,私钥 id_ed25519 不离开服务器。

services:
hbbs:
  container_name: hbbs
  image: rustdesk/rustdesk-server:1.1.16
  command: hbbs
  volumes:
    - ./data:/root
  network_mode: "host"
  depends_on:
    - hbbr
  restart: unless-stopped

hbbr:
  container_name: hbbr
  image: rustdesk/rustdesk-server:1.1.16
  command: hbbr
  volumes:
    - ./data:/root
  network_mode: "host"
  restart: unless-stopped

五、客户端配置与首次连接

01安装并打开 RustDesk 客户端
02进入设置 → 网络
03ID 服务器填写 rd.example.com:21116
04中继服务器填写 rd.example.com:21117
05粘贴 id_ed25519.pub 内容并保存
字段示例注意事项
ID 服务器rd.example.com:21116确认 DNS、TCP/UDP 安全组和系统防火墙
中继服务器rd.example.com:21117只在直连失败或策略要求时承担桌面流量
Keyid_ed25519.pub不要粘贴私钥或把密钥提交到仓库

六、安全加固与性能优化

密钥

限制数据目录权限,备份私钥并记录恢复流程。

防火墙

只开放必需端口,SSH 管理入口限制来源。

更新

固定镜像版本,升级前查看发布说明并保留回滚点。

带宽

监控中继出口流量,避免把高并发会话压在低带宽实例上。

问题优先处理原因
连接延迟高检查是否走 hbbr、选择近端机房、优化两端网络中继路径和丢包会直接影响交互
画面卡顿降低画质、关闭不必要的文件/剪贴板重定向减少带宽与编码压力
中继带宽不足限制并发或升级出口带宽hbbr 会转发完整的加密会话流量

七、常见问题排查

客户端一直显示未就绪

现象

客户端能打开,但无法注册 ID 或连接服务器。

原因

最常见是 21116/UDP 未在云安全组或系统防火墙放行,也可能是域名解析到了旧地址。

解决方案

  • 检查 DNS 与服务器监听端口
  • 分别放行 21116 TCP 和 UDP,并确认本机防火墙
  • 查看 hbbs 日志,重启客户端后再次观察状态

可以连接,但速度明显变慢

现象

连接成功,画面却卡顿,文件传输速度也低。

原因

两端 NAT 无法打洞,连接回退到 hbbr;或中继实例的出口带宽不足。

解决方案

  • 确认连接路径并查看 hbbr 日志
  • 选择距离两端更近的机房或提升出口带宽
  • 在客户端降低画质并关闭不需要的重定向

服务器重启后没有恢复

现象

容器停止,客户端全部离线。

原因

Docker 未设置开机启动、Compose 文件路径不对,或固定镜像版本拉取失败。

解决方案

  • 执行 systemctl is-enabled docker
  • 执行 docker compose ps 和 docker compose logs
  • 恢复数据目录与密钥后再启动,不要重新生成客户端 Key

密钥错误或无法验证服务器

现象

填写服务器地址后,客户端提示 Key 不匹配。

原因

客户端粘贴了错误公钥,或服务端数据目录被替换导致密钥对变化。

解决方案

  • 重新读取服务端 data/id_ed25519.pub
  • 确认所有客户端使用同一套公钥
  • 不要删除旧密钥后直接重建,先完成备份和迁移

八、与其他远程方案怎么选

方案控制权复杂度适合场景
自建 RustDesk服务端、密钥与中继可控中等多平台远控、希望掌握连接入口
Tailscale + RDP网络策略可控,依赖官方控制平面较低Windows 主机与可信设备组网
ZeroTier + RDP虚拟网络可控,需理解网络成员管理较低需要虚拟局域网语义的设备互联
商业远控依赖厂商账号与服务最低临时协助、移动端和复杂网络

九、部署完成检查清单

SUPPORT & SHARE

支持与分享

觉得这篇文章有点用,就把它递给下一位读者。

打赏
自建 RustDesk 中继服务器教程:Docker 部署 hbbs 与 hbbrhttps://blog.demius.tech/posts/rustdesk-self-hosted-relay-server/
作者
Demius
发布于
2026年9月25日
许可协议
CC BY-NC-SA 4.0
SMART PICKS
按分类与标签整理
01RustDesk + Tailscale 远程桌面教程:免自建服务器的安全组网方案远程办公 · 9月25日02Tailscale + Windows RDP 远程桌面教程:安全访问家中电脑远程办公 · 9月25日
SERENDIPITY

随便看看

每次来都重新洗牌
01腾讯云 EdgeOne 加速图床与博客全记录网站部署 · 9月20日02收藏夹终于不用放养了:我做了个 Demius导航扩展开发 · 9月16日03我只是想换个头像,怎么最后折腾出了一套 npm 图床?网站部署 · 9月14日04新建了一个论坛方便交流讨论论坛 · 9月5日05粉丝专属福利|¥3/月拿下 CN2 GIA 线路云服务器福利 · 7月30日
SHARE POST

把这篇文章带走

打开后生成分享海报

评论区

分享你的想法,与大家交流讨论。

评论区将在接近时加载

滚轮或双击缩放 · 拖动查看细节 · 方向键切换 · 下拉关闭