一、为什么越来越多的开发者选择自建远程桌面?

在日常工作与多设备远程运维中,远程桌面软件(如向日葵、ToDesk、AnyDesk 等)曾经是许多技术人员的装机标配。然而近两年来,主流商业远控软件的免费策略持续收紧,甚至出现严重的体验退化:

  • 严重限速与帧率锁死:免费版常被限制在 30 FPS 甚至更低,操作鼠标拖影严重、延迟极高,复杂代码翻页卡顿明显;
  • 设备数量与连接频次限制:频繁弹窗提示购买专业版,甚至在跨网段或高峰期直接限制连接时长并强制中断;
  • 数据隐私与合规担忧:远程画面与按键输入全部经由第三方商业云厂商服务器中转,对于涉及敏感生产代码或企业内网环境的开发者而言存在安全隐患。

RustDesk 是一款基于 Rust 语言开发的完全开源、开箱即用的远程桌面套件。它不仅支持端到端完全加密,而且官方提供了完整的自建服务器端程序(hbbs 与 hbbr)。只要你拥有一台低配置的轻量云服务器(即使是 1 核 1G 的轻量 VPS),就能搭建属于自己的专属远程桌面中继,畅享 60 FPS 满速丝滑直连!

二、RustDesk 服务端核心组件与工作机制

RustDesk 的自建服务器体系非常轻巧,核心由两个微服务组成:

  1. hbbs(ID / 会晤服务器):负责客户端的 ID 注册、在线状态心跳探测与 P2P 打洞握手。当两台控制端与被控端处于同一局域网或锥形 NAT 下时,hbbs 会协助双方建立点对点直连(P2P Direct Connection),此时数据完全不经过服务器中转,速度仅取决于双方网络上行;
  2. hbbr(Relay 中继服务器):当两端处于复杂的对称型 NAT(Symmetric NAT)或严格防火墙内网无法打洞成功时,所有音视频加密数据流将经由 hbbr 进行中转传输。

三、实战部署:Docker Compose 一键编排

通过 Docker 容器化部署是维护成本最低、迁移最便捷的方案。我们在服务器上创建一个独立的目录进行配置。

1. 创建项目目录并编写编排文件

登录你的 Linux VPS,创建 /opt/rustdesk-server 目录并新建 docker-compose.yml:

services:
  hbbs:
    container_name: rustdesk-hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r 你的服务器IP或域名:21117 -k _
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped
    depends_on:
      - hbbr

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

关键参数解析:

  • -r 你的服务器IP或域名:21117:指定中继服务器(hbbr)的外部访问地址与端口;
  • -k _:开启强制 Key 端到端加密验证。该参数非常关键,能够有效防止未经授权的他人扫描到你的中继服务并盗用你的服务器带宽;
  • network_mode: "host":采用 Host 网络模式,省去大量的 Docker 端口映射开销,极大降低 NAT 延迟。

2. 放行防火墙与云安全组端口

RustDesk 依赖以下端口进行心跳与数据传输,务必在云服务器提供商的控制台(安全组)及系统防火墙(ufw / iptables)中全部放行:

  • 21115 (TCP):hbbs NAT 类型测试端口;
  • 21116 (TCP/UDP):hbbs 核心心跳与打洞注册端口(注意:必须同时开放 TCP 和 UDP);
  • 21117 (TCP):hbbr 中继服务数据转发端口;
  • 21118 / 21119 (TCP):网页端 Web Client 支持(若不使用网页版可不开放)。

3. 启动容器并获取加密公钥

执行以下命令拉取镜像并启动:

docker compose up -d

首次启动后,容器会在 ./data 目录下自动生成公私钥对。执行以下命令查看你的专属公钥:

cat ./data/id_ed25519.pub

终端会输出一串类似于 7kM9pX...= 的 Base64 字符串,将其妥善复制保存,客户端连接时必须填入此 Key。

四、客户端极简配置与连接验证

RustDesk 官方提供了 Windows、macOS、Linux、Android 以及 iOS 的跨平台全套客户端,且完全免安装绿色运行。

1. 填写自建服务器信息

  1. 在被控端和主控端分别打开 RustDesk 客户端;
  2. 点击左侧菜单的 设置 -> 网络 -> ID/中继服务器;
  3. 分别填入配置参数:
    • ID 服务器:你的服务器IP或解析域名(端口默认 21116,可省略);
    • 中继服务器:你的服务器IP或解析域名:21117;
    • Key:粘贴刚才从 id_ed25519.pub 中获取的公钥内容。
  4. 点击确定保存。回到主界面下方,若显示 “就绪 (Ready)”,即代表已成功连接至专属自建中继。

2. 快速分发技巧(免手动输入配置)

如果你需要给朋友或家人批量配置客户端,RustDesk 支持将配置直接编码进可执行文件名中。例如在 Windows 下将客户端重命名为:

rustdesk-host=你的服务器IP,key=你的公钥.exe

对方双击打开后,软件会自动识别并应用自建服务器地址与 Key,实现零学习成本一键上手!

五、性能优化与生产建议

  • 服务器地理位置选择:自建中继的延迟直接取决于服务器与控制两端的物理距离。国内办公场景推荐选用大陆轻量云(如阿里云、腾讯云,延迟通常低于 30ms);跨国协助则优先选用香港、日本等亚太三网优化线路 VPS;
  • 带宽需求估算:P2P 直连打洞成功时完全不消耗云服务器带宽;即使走中继转发,1080P 60FPS 桌面动态传输在 H.264/H.265 编码下通常仅需 2~4 Mbps 带宽,一台 5Mbps~10Mbps 的普通轻量服务器即可轻松带动多台机器同时远控。

六、总结与相关阅读

通过自建 RustDesk 体系,我们用极低的技术门槛彻底摆脱了商业软件的层层捆绑与限速枷锁,打造出真正可控、高清、端到端安全的私有远程办公工具。

相关建站、自建服务与面板运维阅读:
• Docker、Nginx Proxy Manager 与哪吒监控一站式部署实战
• 1Panel 运维与网站图片 403 拦截排错排查指南
• Claude Code 接入国内大模型指南:Kimi / GLM-4 / DeepSeek 极简适配实操
• Cloudflare Tunnel 内网穿透实战:免公网 IP、免端口映射安全发布 NAS/本地服务