RustDesk 自建远程桌面服务器:Docker 部署替代 TeamViewer
痛点:TeamViewer 越来越难用了
做远程支持、运维服务器、帮家里人修电脑,手边总得有个远程桌面工具。但最近的体验越来越糟:
- TeamViewer — 商业检测越来越狠,动不动就弹窗「疑似商业用途」,断你连接
- AnyDesk — 被收购后免费版限制增多,连接质量下降
- 向日葵 — 免费版限速限功能,国内还要实名
- Chrome Remote Desktop — 必须登录 Google 账号,没账号的人用不了
有没有一个方案:自己搭服务器、数据自己控制、不限设备数、不限连接时长?
RustDesk 就是答案。
RustDesk 是什么?
RustDesk 是一个用 Rust 编写的开源远程桌面软件,代码在 GitHub 上完全开源,支持自建中继服务器。
核心指标:
| 指标 | 数据 |
|---|---|
| ⭐ GitHub Stars | 118k |
| 🦀 语言 | Rust(99%) |
| 📦 最新版 | v1.3.8(2026-06 活跃开发中) |
| 📄 许可证 | AGPL-3.0 |
| 🐳 Docker 镜像 | rustdesk/rustdesk-server |
| 💻 支持平台 | Windows / macOS / Linux / Android / iOS / Web |
架构原理:
RustDesk 自建服务器由两个组件组成:
| 组件 | 端口 | 作用 |
|---|---|---|
| hbbs | 21115-21117 | ID/Rendezvous 服务器,注册与发现 |
| hbbr | 21117-21119 | Relay 中继服务器,转发 P2P 失败时的流量 |
连接流程:hbbs 负责设备发现(ID 注册、配对),hbbr 负责 P2P 打洞失败时的流量中继。两台设备直连成功就不走 hbbr。
RustDesk vs 其他远程桌面
| 特性 | RustDesk(自建) | TeamViewer | AnyDesk | 向日葵 |
|---|---|---|---|---|
| 费用 | 完全免费 🏆 | ¥300+/月 | ¥200+/月 | ¥100+/月 |
| 数据自控 | ✅ 自建服务器 🏆 | ❌ 第三方 | ❌ 第三方 | ❌ 第三方 |
| 设备数限制 | ❌ 无限 | ✅ 有限 | ✅ 有限 | ✅ 有限 |
| P2P 直连 | ✅ 自动尝试 | ✅ | ✅ | ❌ 强制走中继 |
| 移动端 App | ✅ Android/iOS | ✅ | ✅ | ✅ |
| 文件传输 | ✅ | ✅ | ✅ | ✅ |
| 剪贴板共享 | ✅ | ✅ | ✅ | ✅ |
| 开源 | ✅ GPL-3.0 | ❌ | ❌ 部分 | ❌ |
一句话: 想免费、不限设备、数据自己控制 → RustDesk 自建服务器。
Docker 部署 RustDesk 服务器
方案一:快速部署(docker compose)
version: "3.8"
services: hbbs: image: rustdesk/rustdesk-server:latest container_name: rustdesk-hbbs command: hbbs ports: - "21115:21115" # NAT 类型测试 - "21116:21116" # ID 注册(TCP+UDP) - "21116:21116/udp" - "21117:21117" # 中继连接 volumes: - ./data:/root # 持久化密钥和配置 environment: - RELAY_SERVER=your-server-ip # 填写你的服务器 IP 或域名 restart: unless-stopped
hbbr: image: rustdesk/rustdesk-server:latest container_name: rustdesk-hbbr command: hbbr ports: - "21117:21117" - "21119:21119" # Web 控制台(v1.3+) volumes: - ./data:/root depends_on: - hbbs restart: unless-stopped启动:
docker compose up -d方案二:一行命令快速启动
# hbbs(ID 服务器)docker run -d --name rustdesk-hbbs \ --restart unless-stopped \ -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21117:21117 \ -v $(pwd)/data:/root \ -e RELAY_SERVER=你的IP或域名 \ rustdesk/rustdesk-server:latest hbbs
# hbbr(中继服务器)docker run -d --name rustdesk-hbbr \ --restart unless-stopped \ -p 21117:21117 -p 21119:21119 \ -v $(pwd)/data:/root \ rustdesk/rustdesk-server:latest hbbr配置客户端连接
服务器启动后,首次运行会生成密钥文件,查看密钥:
cat data/id_ed25519.pub然后在 RustDesk 客户端中设置:
| 设置项 | 填写内容 |
|---|---|
| ID 服务器 | 你的服务器IP:21116 |
| 中继服务器 | 你的服务器IP:21117(留空则使用 ID 服务器同一地址) |
| Key | 从 id_ed25519.pub 复制的公钥 |
在客户端设置 → 网络 → ID/中继服务器,填入以上信息后点应用。
安全加固
1. 使用防火墙限制端口
# 只开放必要的端口ufw allow 21115/tcpufw allow 21116/tcpufw allow 21116/udpufw allow 21117/tcp# 可选:Web 控制台ufw allow 21119/tcp2. 配置白名单
在 data/id_ed25519.pub 同一目录下创建 whitelist 文件:
# 只允许这些 ID 连接1234567899876543213. 使用 Nginx 反代 Web 控制台(v1.3+)
server { listen 443 ssl; server_name rustdesk.yourdomain.com;
location / { proxy_pass http://127.0.0.1:21119; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; }}性能调优
1. 限制带宽
RustDesk 连接设置中可限制最大带宽,避免占满上行:
- 客户端 → 设置 → 显示 → 限制帧率(建议 15-30fps)
- 客户端 → 设置 → 网络 → 限制带宽
2. 选择编码方式
| 编码 | 带宽占用 | 画质 | 适用场景 |
|---|---|---|---|
| H.264 | 低 | 高 | 大多数场景,默认推荐 |
| H.265 | 更低 | 更高 | 4K 屏幕,CPU 需支持 |
| VP8 | 中 | 中 | 兼容性最佳 |
| RGB | 极高 | 无损 | 局域网内高要求场景 |
3. 启用硬件编码
客户端 → 设置 → 显示 → 硬件编码(开启后可大幅降低 CPU 占用)
FAQ
Q:自建服务器需要多大配置?
A:极低。1 核 512MB 内存就能跑,一个服务器可以支持几十个设备同时在线。
Q:两台设备在不同内网,能 P2P 直连吗?
A:RustDesk 会自动尝试 UDP 打洞。如果打洞成功,流量不经过你的中继服务器(延迟最低)。只有打洞失败时,才走 hbbr 中继。
Q:公钥丢了怎么办?
A:停止容器,删除 data/id_ed25519 和 data/id_ed25519.pub,重启容器会重新生成。但所有客户端需要更新 Key。
Q:可以用域名而不是 IP 吗?
A:可以。客户端 ID 服务器填 your-domain.com:21116,中继服务器填 your-domain.com:21117。
Q:RustDesk 安全吗?
A:端到端加密,使用 NaCl 加密库(Curve25519 + XSalsa20-Poly1305)。自建服务器后,连 RustDesk 官方也无法窥探你的连接。
Q:支持文件传输吗?
A:支持。连接后直接在 RustDesk 窗口右键或使用工具栏的文件传输功能,支持拖拽。
总结
RustDesk 是远程桌面领域的开源黑马:
- ✅ 完全免费——自建服务器,无设备限制,无时长限制
- ✅ 数据自控——所有通信经过你的服务器,数据不经过第三方
- ✅ 极低配置——1 核 512MB 就能带起几十个设备
- ✅ 跨平台——Windows/macOS/Linux/Android/iOS 全支持
- ✅ Docker 一行部署——创建两个容器,配置客户端,搞定
告别 TeamViewer 的商业检测和价格屠刀,拥抱 RustDesk 自建方案——远程运维、帮人修电脑、管理多台服务器,一套搞定。
本文由小啪撰写,基于 RustDesk v1.3.8。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!