当前位置: 首页 > news >正文

【实战指南】利用Docker快速搭建RustDesk私有中继服务器

1. 为什么需要自建RustDesk中继服务器

最近几年远程控制软件越来越火,但商业软件的各种限制让人头疼。我自己就遇到过这样的问题:用某款知名软件远程控制手机,结果免费版每天只能连接3次;换另一款又发现手机端需要额外付费插件;再试一个倒是能用,但免费流量只有200MB。这种处处受限的体验,相信不少朋友都深有感触。

RustDesk的出现确实给了我们新选择。作为开源方案,它基础功能完全免费,但默认使用官方中继服务器时,经常会遇到卡顿问题。实测下来,2Mbps带宽的云服务器自建中继,延迟能降低60%以上。特别是在跨运营商访问时(比如电信用户访问联通服务器),私有中继的稳定性优势更加明显。

Docker化部署更是让整个过程变得简单。传统方式搭建中继服务需要处理各种依赖和编译问题,现在一条docker run命令就能搞定。我去年帮一个小型设计团队部署时,从零开始到完全可用只用了不到20分钟,他们现在日常传输大型设计文件都靠这个自建通道。

2. 环境准备与基础配置

2.1 服务器选购建议

根据实测经验,建议选择至少2核CPU、4GB内存的云服务器。我试过在1核2G的机器上部署,当同时有3个以上连接时CPU就会跑满。操作系统推荐Ubuntu 20.04或CentOS 7+,这两个系统对Docker的支持最完善。

带宽选择需要根据使用场景:

  • 仅文字操作:1Mbps够用
  • 偶尔文件传输:建议2Mbps
  • 频繁图像/视频传输:最好5Mbps以上

最近帮一个跨境电商团队配置时,他们需要经常远程查看商品拍摄效果,我们最终选了5Mbps带宽的香港节点,实测1080P画面传输延迟在150ms左右。

2.2 Docker环境部署

不同系统的安装命令略有差异:

# Ubuntu/Debian sudo apt update sudo apt install docker.io -y sudo systemctl enable --now docker # CentOS/RHEL sudo yum install docker -y sudo systemctl enable --now docker

安装完成后建议执行以下检查:

docker --version # 确认版本 docker run hello-world # 测试运行

常见问题排查:

  • 如果遇到权限问题,记得把用户加入docker组:
    sudo usermod -aG docker $USER newgrp docker
  • 国内服务器拉取镜像慢时,可以配置镜像加速器

3. 实战部署RustDesk服务

3.1 镜像选择与注意事项

官方镜像rustdesk/rustdesk-server目前需要商业授权,我们可以改用社区维护的thtom/rustdesk-server镜像。这两个镜像的主要区别在于:

特性官方镜像社区镜像
授权要求需要付费注册完全免费
更新频率每月定期更新按需更新
功能完整性100%功能支持核心功能支持

拉取镜像的命令如下:

docker pull thtom/rustdesk-server

3.2 关键服务部署

中继服务器实际包含两个服务:

  • hbbs(ID服务器):负责设备注册和连接协商
  • hbbr(中继服务器):负责实际数据传输

部署hbbs服务(注意替换<你的服务器IP>):

docker run --name hbbs -p 21115:21115 -p 21116:21116 \ -p 21116:21116/udp -p 21118:21118 \ -v `pwd`:/root -td --net=host \ thtom/rustdesk-server hbbs -r <你的服务器IP>

部署hbbr服务:

docker run --name hbbr -p 21117:21117 -p 21119:21119 \ -v `pwd`:/root -td --net=host \ thtom/rustdesk-server hbbr

端口使用说明:

  • 21115:hbbs的TCP监听端口
  • 21116:设备注册和连接端口(需TCP+UDP)
  • 21117:hbbr的TCP监听端口
  • 21118/21119:网页客户端支持(非必需)

4. 网络与防火墙配置

4.1 防火墙规则设置

云服务器通常有两层防护:

  1. 系统防火墙(firewalld/iptables)
  2. 云平台安全组

检查系统防火墙状态:

systemctl status firewalld # 或 firewall-cmd --state

开放必要端口:

# TCP端口 firewall-cmd --zone=public --add-port=21115-21119/tcp --permanent # UDP端口(必须单独设置) firewall-cmd --zone=public --add-port=21116/udp --permanent # 重载配置 firewall-cmd --reload

4.2 云平台安全组配置

以阿里云为例配置步骤:

  1. 进入ECS控制台 → 安全组
  2. 添加入方向规则:
    • 协议类型:自定义TCP,端口范围:21115-21119
    • 协议类型:自定义UDP,端口范围:21116
  3. 源IP可以设为0.0.0.0/0(允许所有IP)或指定IP段

常见连接问题排查:

  • 测试端口连通性:telnet 你的IP 21116
  • 查看服务日志:docker logs hbbs
  • 检查端口监听状态:netstat -tulnp | grep 2111

5. 客户端配置与优化技巧

5.1 多端客户端设置

在所有需要连接的设备上配置:

  1. 打开RustDesk → 设置 → 网络
  2. ID服务器填写:你的IP:21116
  3. 中继服务器填写:你的IP:21117
  4. 保存后重启客户端

实测发现,Windows和macOS客户端最稳定,Linux客户端偶尔需要手动重连。移动端配置有个小技巧:在连接前先关闭移动数据,仅用WiFi连接成功后再开启,能减少NAT类型导致的连接问题。

5.2 性能调优建议

通过修改启动参数可以提升性能:

# hbbs增加工作线程数 docker run ... hbbs -r <IP> --workers 4 # hbbr启用压缩传输 docker run ... hbbr --compress

监控服务状态命令:

# 查看实时资源占用 docker stats hbbs hbbr # 查看连接数 docker exec hbbs netstat -an | grep 21116

对于团队使用,建议:

  • 每50个并发连接增加1个CPU核心
  • 定期清理日志文件:docker exec hbbs rm -f /root/*.log
  • 设置定时重启:docker update --restart=unless-stopped hbbs hbbr

6. 常见问题解决方案

6.1 服务启动失败排查

如果docker logs显示"Registered email required"错误,说明使用了需要授权的官方镜像。解决方案是:

  1. 停止并删除原有容器:
    docker stop hbbs hbbr docker rm hbbs hbbr
  2. 改用社区镜像重新部署(如前面3.1节所示)

6.2 连接稳定性优化

当出现频繁断开时,可以尝试:

  1. 修改MTU值(适合高延迟网络):
    docker run ... --sysctl net.ipv4.tcp_mtu_probing=1 ...
  2. 启用TCP BBR拥塞控制:
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p
  3. 调整内核参数(针对高并发场景):
    echo "net.ipv4.tcp_max_syn_backlog=8192" >> /etc/sysctl.conf echo "net.core.somaxconn=8192" >> /etc/sysctl.conf

6.3 数据持久化配置

默认情况下,设备注册信息存储在容器内,重启后会丢失。要实现持久化:

# 创建数据目录 mkdir -p /data/rustdesk # 启动时挂载目录 docker run ... -v /data/rustdesk:/root ...

备份建议:

  1. 定期打包关键文件:
    tar czf rustdesk-backup-$(date +%F).tar.gz /data/rustdesk/*.db
  2. 重要版本更新前创建完整快照

7. 进阶应用场景

7.1 多节点负载均衡

对于大型团队,可以在不同地域部署多个节点:

# 北京节点 docker run ... hbbs -r bj.yourdomain.com ... # 上海节点 docker run ... hbbs -r sh.yourdomain.com ...

客户端配置技巧:

  • 使用DNS轮询或智能解析
  • 客户端根据地理位置自动选择最近节点

7.2 与企业现有系统集成

通过API实现自动化管理:

# 查询在线设备 curl http://你的IP:21115/api/online-users # 获取连接统计 curl http://你的IP:21115/api/statistics

与LDAP/AD集成的方案:

  1. 编译自定义镜像加入PAM支持
  2. 通过Nginx配置反向代理和认证
  3. 使用OAuth2.0中间件

7.3 安全加固措施

建议的安全实践:

  1. 修改默认端口:
    docker run ... -p 30000:21115 ... hbbs -r <IP>:30000
  2. 启用IP白名单:
    iptables -A INPUT -p tcp --dport 21115 -s 允许的IP -j ACCEPT iptables -A INPUT -p tcp --dport 21115 -j DROP
  3. 定期轮换加密密钥:
    docker exec hbbs rm -f /root/key* docker restart hbbs hbbr

8. 成本与性能实测对比

自建方案与商业软件的成本对比(按年计算):

项目商业软件VIP自建服务器(2Mbps)
基础费用¥300/设备¥500(服务器)
连接数限制通常5设备无硬性限制
额外功能费文件传输另收费全部功能可用
带宽限制通常2Mbps可自由升级

实测性能数据(基于2Mbps带宽):

  • 1080P屏幕共享:延迟180-250ms
  • 文件传输速度:稳定在200KB/s左右
  • 多路并发测试:5个并发连接时CPU使用率约65%

实际使用中发现,凌晨时段网络质量最好,建议把大型文件传输安排在这个时段。有个客户反馈他们跨国团队使用时,通过香港节点中转后,中美之间的延迟从800ms降到了400ms左右。

http://www.jsqmd.com/news/641310/

相关文章:

  • RK3568 EDP显示适配实战:从硬件连接到软件调试全解析
  • 如何高效利用vectorizer:专业图像矢量化转换的完整实战指南
  • 拒绝模糊边界!5分钟为Qt应用添加智能弹窗遮罩层(QDialog版)
  • 从建图到导航:手把手教你用Gmapping + AMCL + Move_Base完成机器人小车的完整自主导航流程
  • 5分钟学会Qwen3-ASR:1.7B语音识别模型部署与API调用
  • 权限管理+备份
  • ncmdumpGUI:解锁网易云音乐NCM文件的终极指南,让音乐随处可听
  • 如何安全使用R3nzSkin:3步掌握英雄联盟换肤工具完整指南
  • UVa 11165 Galactic Travel
  • 【限时解密】SITS2026多模态预训练权重初始化协议:3步规避模态坍缩,附可运行PyTorch模板
  • AO3镜像站终极指南:7个关键步骤轻松访问全球最大同人创作平台
  • 千问3.5-2B在内容审核场景:UGC图片敏感主体识别与文字合规初筛
  • 【原创】IgH EtherCAT主站详解(一)--EtherCAT协议、帧格式和ESC
  • [具身智能-360]:部署和调用大语言模型主要有两种路径:云服务API调用和私有化部署。
  • 别再为UniApp和WebView通信发愁了!一个真实项目中的消息传递实战(附完整SDK配置流程)
  • MySL优化全攻略:索引、SL与分库分表的最佳实践
  • Linux内存管理全解析:从原理到实践,让你的服务器不再“内存不足”
  • 混合有源滤波器(HAPF)的MATLAB-Simulink仿真及补偿前后系统谐波对比
  • OpenClaw进阶实战(十三):电商比价工作流(二)——智能比价与动态调价
  • TGRS 2026 即插即用 | 注意力篇 | HEWL:小波上采样,通道-空间-频域交互联合高频增强,细节全保留!
  • K8s Ingress实战:从零配置Nginx Ingress Controller,实现基于路径和域名的灵活路由
  • 卫星通信是利用地球同步卫星作为中继站转发微波信号,实现地面站之间远距离通信的技术
  • ZYNQ中断编程避坑指南:从定时器中断看GIC配置与常见错误排查
  • ST7789显示屏终极指南:用STM32硬件SPI实现快速DMA驱动的完整方案
  • 如何永久保存您的微信聊天记录?WeChatExporter完整备份方案详解
  • 避开JDK8 Stream流的这些坑:filter/map/collect的7个易错点详解
  • 2026届学术党必备的五大AI科研工具实际效果
  • 机器学习工程师的瓶颈突破:高需求领域清单
  • day1 Vue学习
  • 实战指南:Intel I350系列网卡PXE功能精准配置与状态诊断