1. 为什么选择RustDesk自建服务器?
最近两年远程办公需求爆发式增长,TeamViewer和AnyDesk这些商业软件要么收费昂贵,要么对个人用户限制多多。作为一个长期和远程桌面工具打交道的运维,我实测过市面上几乎所有主流方案,最终发现RustDesk这个开源神器才是真正的"平民救星"。
RustDesk最大的优势在于它的全平台兼容性和内网穿透能力。我去年给一家制造业客户部署时,他们的老旧产线电脑还在用Windows XP系统,RustDesk是少数能完美兼容的方案。更关键的是,它的中继服务器(hbbr)和ID服务器(hbbs)可以完全私有化部署,这意味着:
- 数据完全自主可控:所有远程会话流量都在自己的服务器上流转
- 内网穿透零成本:跨地域办公室访问内网机器不再需要额外购买服务
- 定制开发自由:基于MIT开源协议,可以二次开发特殊功能
上周我刚用一台2核4G的腾讯云轻量服务器搭建了整套环境,实测同时支持20个远程连接毫无压力。下面就把这个从零开始的完整部署过程分享给大家,包含我踩过的所有坑和优化技巧。
2. 部署前的环境准备
2.1 服务器硬件选择建议
虽然RustDesk官方文档说1核1G就能跑,但根据我的实战经验,生产环境建议最低配置:
- CPU:2核以上(中继服务很吃单核性能)
- 内存:4GB起步(每个连接约消耗50-100MB)
- 带宽:5Mbps以上(1080P画面需要约3Mbps/路)
- 存储:20GB SSD(日志和录像文件会持续增长)
特别提醒:如果要用在跨国远程支持场景,务必选择BGP多线机房。去年我在阿里云新加坡节点部署时,发现电信用户连接延迟高达300ms,后来换到香港BGP线路才降到150ms以内。
2.2 操作系统优化
我推荐使用Ubuntu 22.04 LTS或CentOS 7.9这两个经过充分验证的系统。以Ubuntu为例,部署前需要做这些基础优化:
# 更新系统 sudo apt update && sudo apt upgrade -y # 关闭swap(提升性能) sudo swapoff -a sudo sed -i '/swap/s/^/#/' /etc/fstab # 调整文件描述符限制 echo "* soft nofile 65535" | sudo tee -a /etc/security/limits.conf echo "* hard nofile 65535" | sudo tee -a /etc/security/limits.conf # 安装基础工具 sudo apt install -y curl wget unzip net-tools2.3 网络端口规划
RustDesk默认使用以下端口,务必提前在防火墙放行:
| 端口 | 协议 | 服务 | 作用说明 |
|---|---|---|---|
| 21115 | TCP | hbbs | NAT类型测试 |
| 21116 | TCP/UDP | hbbs | ID注册与心跳服务 |
| 21117 | TCP | hbbr | 中继数据传输 |
| 21118 | TCP | hbbs | 网页客户端支持(可选) |
| 21119 | TCP | hbbr | 网页客户端支持(可选) |
如果是云服务器,还需要在安全组规则中添加这些端口的入站允许。有个容易忽略的点:21116必须同时开放TCP和UDP,很多连接失败问题都是因为这个。
3. 服务端部署实战
3.1 快速安装方案
官方提供了三种部署方式,这里推荐用预编译二进制包方案,最适合快速部署:
# 创建专用目录 mkdir -p /opt/rustdesk && cd /opt/rustdesk # 下载最新版本(当前1.3.8) wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.9/rustdesk-server-linux-amd64.zip # 解压安装包 unzip rustdesk-server-linux-amd64.zip -d amd64 # 安装PM2进程管理器 npm install pm2 -g遇到过的问题:某些国内服务器下载GitHub资源很慢,可以先用本地电脑下载后上传。或者使用这个国内镜像地址:
wget https://static.rustdesk.com/server/rustdesk-server-linux-amd64.zip3.2 服务启动与监控
进入解压目录启动服务:
cd /opt/rustdesk/amd64 # 启动ID服务器(hbbs) pm2 start hbbs -- -r <服务器公网IP> # 启动中继服务器(hbbr) pm2 start hbbr # 设置开机自启 pm2 save pm2 startup关键参数说明:
-r参数指定公网IP,这对打洞成功率影响很大- 如果服务器有多个IP,需要用
-k _禁用密钥验证
查看服务状态的小技巧:
# 实时日志监控(Ctrl+C退出) pm2 logs hbbs # 查看连接数(每秒刷新) watch -n 1 "netstat -ant | grep 21116"3.3 密钥配置与安全
服务启动后会在目录生成关键密钥文件:
id_ed25519- 私钥(必须严格保密)id_ed25519.pub- 公钥(客户端配置用)
安全建议:
- 立即备份密钥到安全位置
- 修改文件权限为600:
chmod 600 id_ed25519* - 在客户端配置时使用公钥内容,格式如下:
key=公钥内容
4. 客户端连接全指南
4.1 Windows客户端配置
下载官方客户端安装后,右键任务栏图标进入设置:
- 网络→ID服务器:填写服务器IP:21116
- 网络→密钥:粘贴id_ed25519.pub内容
- 高级→强制使用中继:建议关闭(直连更快)
实测技巧:在集团客户部署时,可以用组策略批量推送这些配置:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\RustDesk] "rendezvous_server"="your-server-ip:21116" "api_server"="https://your-server-ip:21114" "key"="公钥内容"4.2 移动端使用技巧
Android/iOS客户端配置类似,但有两个特殊功能:
- 手势操作:双指缩放调整画面比例
- 虚拟鼠标:长按唤出右键菜单
企业用户建议开启固定密码功能,避免每次都要确认连接。在服务端可以这样设置:
# 启动hbbs时添加-f参数 pm2 start hbbs -- -r <IP> -f 固定密码4.3 网页版使用方案
如果需要通过浏览器访问,需要额外步骤:
- 开放21118和21119端口
- 部署Nginx反向代理:
server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:21118; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }5. 安全加固与性能优化
5.1 防火墙深度配置
除了基础端口开放,建议添加这些安全规则:
# 仅允许办公网络访问管理端口 iptables -A INPUT -p tcp --dport 21115 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 21115 -j DROP # 限制每分钟新连接数 iptables -A INPUT -p tcp --dport 21116 --syn -m limit --limit 30/minute -j ACCEPT5.2 日志分析与监控
RustDesk的日志在~/.pm2/logs目录,建议用logrotate管理:
# /etc/logrotate.d/rustdesk /root/.pm2/logs/*.log { daily rotate 30 compress missingok notifempty sharedscripts postrotate pm2 flush >/dev/null 2>&1 endscript }关键监控指标:
- 在线客户端数:
netstat -ant | grep 21116 | wc -l - 中继流量:
iftop -i eth0 -f 'port 21117'
5.3 高可用方案
对于关键业务环境,可以部署多节点集群:
- 多个hbbs节点使用相同密钥
- DNS轮询或负载均衡分发请求
- 共享Redis存储会话状态:
hbbs -r <IP> --redis redis://127.0.0.1:6379 hbbr --redis redis://127.0.0.1:63796. 常见问题排错指南
6.1 连接失败排查流程
按照这个顺序检查:
- 服务进程是否存活:
pm2 list - 端口是否监听:
netstat -tulnp | grep 211 - 防火墙是否放行:
iptables -L -n -v - 客户端能否telnet测试:
telnet 服务器IP 21116
6.2 性能问题优化
如果遇到画面卡顿,可以尝试:
- 客户端设置→图像质量→改为"平衡"
- 服务端调整编码参数:
hbbr --video-bitrate 5000 --audio-bitrate 128 - 启用硬件加速(需要NVIDIA显卡):
hbbr --encoder nvenc --decoder nvdec
6.3 企业级功能扩展
通过API可以实现自动化管理:
# 获取在线设备列表 curl http://服务器IP:21114/api/device/list # 发起远程协助 curl -X POST http://服务器IP:21114/api/remote/connect \ -d '{"id":"目标ID","operator":"操作员"}'对于需要审计的场景,可以启用会话录像:
hbbr --record /path/to/records --record-format mp4