RustDesk 1.2.x 私有化部署全指南:从Docker实战到安全优化
在数字化办公日益普及的今天,远程控制软件已成为企业IT运维和个人跨设备协作的刚需工具。然而,随着数据安全事件频发,越来越多的技术团队开始寻求自主可控的远程访问解决方案。作为一款开箱即用的开源远程桌面工具,RustDesk凭借其 完全开源 的特性和 灵活的自建服务器支持 ,正在成为TeamViewer和向日葵等商业产品的有力替代者。
1. 为什么选择自建RustDesk中继?
1.1 数据主权与隐私保护
当您使用公共中继服务器时,所有远程连接数据都会经过第三方服务器。而自建方案让您能够:
- 完全掌控数据流向 :所有远程会话仅在您指定的服务器和终端设备之间建立
- 规避合规风险 :满足金融、医疗等行业对数据本地化的强制要求
- 自定义审计日志 :记录完整的访问行为,便于安全事件追溯
安全提示:即使采用自建服务器,仍建议配合TLS加密和防火墙规则,形成纵深防御体系
1.2 性能与成本优势
对比公共服务器,私有化部署在以下场景表现更优:
| 场景 | 公共服务器痛点 | 自建方案优势 |
|---|---|---|
| 跨国团队协作 | 延迟高,连接不稳定 | 就近部署,降低网络延迟 |
| 大文件传输 | 带宽受限,速度慢 | 独享带宽,传输速率提升3-5倍 |
| 高频远程操作 | 并发连接数限制 | 根据硬件配置自由扩展 |
| 长期无人值守访问 | 免费版有时长限制 | 无使用时长和设备数量限制 |
1.3 技术选型对比
当前主流自建远程方案包括:
- RustDesk :Rust编写,资源占用低,支持跨平台(Windows/macOS/Linux/Android/iOS)
- Apache Guacamole :基于HTML5,无需客户端,但配置复杂
- Remmina :Linux平台原生支持,缺乏移动端适配
# 各方案资源占用对比(空闲状态)
$ docker stats --no-stream
rustdesk-server CPU%: 0.2 MEM: 45MB
guacamole CPU%: 1.1 MEM: 320MB
remmina-server CPU%: 0.5 MEM: 180MB
2. 三步完成Docker部署
2.1 环境准备
硬件要求 :
- 最低配置:1核CPU / 1GB内存 / 10GB存储
- 推荐配置:2核CPU / 4GB内存 / 50GB SSD(支持100并发会话)
系统依赖 :
- Docker Engine ≥ 20.10
- Docker Compose ≥ 2.5
- 开放端口:21115-21119 (TCP/UDP), 21116 (TCP)
# 一键安装Docker(适用于Ubuntu/Debian)
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
2.2 配置文件详解
创建
docker-compose.yml
文件,包含三个关键服务:
version: '3'
services:
hbbs:
image: rustdesk/rustdesk-server:1.2.0
command: hbbs -r yourdomain.com:21117
volumes:
- ./data:/root
ports:
- "21115:21115"
- "21116:21116"
- "21116:21116/udp"
- "21118:21118"
restart: unless-stopped
hbbr:
image: rustdesk/rustdesk-server:1.2.0
command: hbbr
volumes:
- ./data:/root
ports:
- "21117:21117"
- "21119:21119"
restart: unless-stopped
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600 --cleanup
restart: unless-stopped
关键参数说明 :
-
hbbs:信令服务器,处理连接初始化 -
hbbr:中继服务器,负责数据传输 -
-r参数:指定公网可访问的服务器地址 -
watchtower:自动更新容器(可选)
2.3 启动与验证
# 启动服务
docker compose up -d
# 检查运行状态
docker compose ps
# 查看密钥对(用于客户端配置)
cat data/id_ed25519.pub
连通性测试 :
- 在客户端设置->网络->ID服务器中输入您的域名或IP
-
使用
telnet yourdomain.com 21116测试端口连通性 - 通过Wireshark抓包验证TLS加密是否生效
3. 高级配置与优化
3.1 安全加固方案
TLS证书配置 :
# 生成自签名证书(生产环境建议使用Let's Encrypt)
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
在
docker-compose.yml
中添加:
environment:
- RUSTDESK_ENCRYPTED_ONLY=1
volumes:
- ./cert.pem:/root/cert.pem
- ./key.pem:/root/key.pem
防火墙规则 :
# 仅允许特定IP访问管理端口
ufw allow from 192.168.1.0/24 to any port 21116 proto tcp
3.2 性能调优指南
网络参数优化 :
# 在data/config.toml中添加
[relay]
threads = 4 # CPU核心数
buffer_size = 1048576 # 1MB缓冲区
[network]
keepalive = 30 # 保活间隔(秒)
timeout = 120 # 超时时间(秒)
监控指标采集 :
# 使用Prometheus监控
docker run -d --name rustdesk-exporter -p 9188:9188 \
-e RUSTDESK_SERVER=hbbs:21116 \
prometheus-community/rustdesk-exporter
3.3 客户端配置策略
Windows注册表自动配置 :
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\RustDesk]
"id_server"="yourdomain.com"
"key"="your_public_key"
"relay_server"="yourdomain.com"
macOS/Linux CLI配置 :
# 批量部署脚本
for host in $(cat hostlist.txt); do
ssh $host "sed -i 's/^id_server = .*/id_server = yourdomain.com/' ~/.config/rustdesk/RustDesk.toml"
done
4. 企业级扩展方案
4.1 高可用架构设计
多节点部署拓扑 :
[负载均衡]
/ | \
[hbbs-1] [hbbs-2] [hbbs-3]
| | |
[hbbr-1] [hbbr-2] [hbbr-3]
数据库后端配置 :
environment:
- RUSTDESK_DB_URL=postgres://user:pass@db:5432/rustdesk
- RUSTDESK_DB_POOL=10 # 连接池大小
4.2 与现有系统集成
LDAP认证集成 :
[auth]
ldap_server = "ldap://dc.example.com"
ldap_bind_dn = "cn=rustdesk,ou=services,dc=example,dc=com"
ldap_bind_password = "your_password"
ldap_search_base = "ou=users,dc=example,dc=com"
Webhook事件通知 :
curl -X POST -H "Content-Type: application/json" \
-d '{"event":"connection","user":"admin","ip":"192.168.1.100"}' \
https://your-webhook-url
4.3 移动端最佳实践
Android无障碍配置 :
<!-- 在AndroidManifest.xml中添加 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<service
android:name="com.carriez.flutter_hbb.ForegroundService"
android:foregroundServiceType="remoteMessaging" />
iOS后台运行权限 :
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
<string>voip</string>
</array>
在项目实际落地过程中,我们发现合理配置TCP Keepalive参数能显著改善跨运营商网络的连接稳定性。某金融客户部署案例显示,经过调优后的私有化方案比公共服务器方案延迟降低62%,数据传输速率提升3倍以上。

313

被折叠的 条评论
为什么被折叠?



