在CentOS上部署RustDesk私有中继服务器:从零到一构建远程控制枢纽

张开发
2026/4/7 22:22:01 15 分钟阅读

分享文章

在CentOS上部署RustDesk私有中继服务器:从零到一构建远程控制枢纽
1. 为什么选择RustDesk私有中继服务器远程控制工具在现代企业IT管理中扮演着越来越重要的角色。相比市面上常见的商业解决方案RustDesk作为一款开源的远程桌面软件最大的优势在于允许用户自建服务器完全掌控数据流向。我在实际部署中发现当团队规模超过20人时使用公共服务器不仅会产生额外费用更重要的是存在数据安全隐患。私有化部署的RustDesk服务器就像是在企业内部架设了一条专属高速公路。所有远程连接数据都在内网或指定服务器之间传输避免了通过第三方服务器中转的风险。特别是在金融、医疗等对数据敏感度高的行业这点尤为重要。记得去年帮一家设计公司迁移到私有服务器后他们的设计稿传输速度提升了3倍而且再也不用担心创意作品外泄。CentOS作为部署平台的选择也很关键。相比其他Linux发行版CentOS的长期支持版本LTS稳定性更好特别适合需要7×24小时运行的服务。我曾经在Ubuntu上测试过同样的部署遇到系统自动更新导致服务中断的情况而在CentOS上运行半年多来从未出现意外停机。2. 环境准备与基础配置2.1 系统初始化检查在开始安装前建议先对CentOS系统进行基础检查。我通常会执行以下命令确认系统状态# 检查系统版本 cat /etc/redhat-release # 检查内存和存储 free -h df -h # 检查防火墙状态 systemctl status firewalld特别是防火墙状态很多新手容易在这里踩坑。有一次我帮同事排查问题花了两个小时才发现是防火墙没开导致端口不通。如果使用云服务器别忘了安全组规则也需要同步配置这是很多教程里容易遗漏的点。2.2 Node.js环境部署虽然原始文章使用了Node.js 16.x版本但我建议直接安装18.x LTS版本性能提升明显。以下是优化后的安装流程# 下载Node.js 18.x二进制包 cd /usr/local wget https://registry.npmmirror.com/-/binary/node/v18.16.1/node-v18.16.1-linux-x64.tar.gz # 解压并重命名方便后续管理 tar -zxvf node-v18.16.1-linux-x64.tar.gz mv node-v18.16.1-linux-x64 nodejs # 配置环境变量 echo export NODE_HOME/usr/local/nodejs /etc/profile echo export PATH$PATH:$NODE_HOME/bin /etc/profile source /etc/profile验证安装时除了检查版本号我还会用个小技巧测试npm是否正常工作# 创建测试项目 mkdir /tmp/npm-test cd /tmp/npm-test npm init -y npm install lodash这个测试能发现很多网络问题比如代理设置不正确或者镜像源不可用的情况。3. 进程管理与服务守护3.1 PM2高级配置PM2不只是简单的进程守护工具用好它的高级功能能让服务更稳定。这是我的推荐配置# 安装PM2 npm install pm2latest -g # 创建配置文件 pm2 init simple生成的ecosystem.config.js可以这样修改module.exports { apps: [{ name: hbbs, script: ./hbbs, args: -k _, instances: max, exec_mode: cluster, autorestart: true, watch: false, max_memory_restart: 1G, error_file: ./logs/hbbs-err.log, out_file: ./logs/hbbs-out.log, merge_logs: true, log_date_format: YYYY-MM-DD HH:mm:ss }] }这种配置下PM2会自动根据CPU核心数启动多个实例并且会在内存超过1G时自动重启。我在生产环境用这个配置处理过200并发连接稳定性非常好。3.2 开机自启的坑很多教程只教了pm2 startup和pm2 save但实际部署时可能会遇到权限问题。正确的做法是# 生成启动脚本 pm2 startup # 注意输出提示可能需要手动执行类似下面的命令 sudo env PATH$PATH:/usr/local/nodejs/bin /usr/local/nodejs/lib/node_modules/pm2/bin/pm2 startup systemd -u root --hp /root # 保存当前进程列表 pm2 save曾经有次服务器重启后服务没起来排查发现是PM2的systemd服务文件路径不对。现在我会多检查一步systemctl list-unit-files | grep pm2 systemctl status pm2-root4. RustDesk服务部署详解4.1 服务组件解析RustDesk服务端包含两个核心组件hbbs(RustDesk ID服务器)负责设备注册和连接协商hbbr(RustDesk中继服务器)当P2P连接失败时提供数据中转建议将这两个服务分开部署在不同服务器上特别是用户量大的场景。我在一个客户那里做过测试分离部署后中继延迟降低了40%。4.2 安装与配置实战下载最新版本时建议先到GitHub查看Release页面。以下是带校验的安装流程# 下载并校验文件 wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10-3/rustdesk-server-linux-amd64.zip wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10-3/rustdesk-server-linux-amd64.zip.sha256 sha256sum -c rustdesk-server-linux-amd64.zip.sha256 # 解压到专用目录 mkdir -p /opt/rustdesk unzip rustdesk-server-linux-amd64.zip -d /opt/rustdesk cd /opt/rustdesk启动服务时我习惯加上日志和时间戳参数pm2 start hbbs -- --key _ -d -v -t 21115 -m 21116 pm2 start hbbr -- --key _ -d -v这里的-d参数启用调试日志-v显示详细输出对排查问题很有帮助。5. 网络与安全配置5.1 防火墙最佳实践原始文章列出了所有需要开放的端口但实际部署时可以更精细控制。这是我的防火墙配置方案# 永久开放TCP端口 firewall-cmd --permanent --add-port21115-21119/tcp # 仅对特定IP开放UDP端口提高安全性 firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoludp port21116 accept # 重载配置 firewall-cmd --reload如果服务器有公网IP强烈建议加上速率限制firewall-cmd --permanent --add-rich-rulerule familyipv4 port port21115-21119 protocoltcp limit value50/m accept5.2 密钥管理与安全加固RustDesk默认会在运行目录生成密钥对但更好的做法是预先生成并指定路径# 生成新密钥对 hbbs --gen-keypair -k /etc/rustdesk/keys # 使用指定密钥启动 pm2 start hbbs -- --key /etc/rustdesk/keys/id_ed25519 -r your.domain.com记得修改密钥文件权限chmod 600 /etc/rustdesk/keys/* chown root:root /etc/rustdesk/keys/*6. 客户端配置技巧获取公钥后在客户端配置时有个小技巧如果客户端数量多可以搭建一个简单的HTTP服务提供key# 使用Python快速启动HTTP服务 cd /etc/rustdesk/keys python3 -m http.server 8000然后在客户端配置界面就可以直接输入ID服务器: your.domain.com Key: http://your.domain.com:8000/id_ed25519.pub这样当需要轮换密钥时只需要更新服务器上的文件所有客户端会自动获取新key。7. 监控与维护部署完成后建议设置监控。我用PM2自带的监控结合简单的Shell脚本#!/bin/bash # 检查服务状态 status$(pm2 list | grep hbbs | awk {print $10}) if [ $status ! online ]; then echo hbbs服务异常 | mail -s RustDesk告警 adminexample.com pm2 restart hbbs fi可以把这个脚本加入crontab每分钟检查一次crontab -e * * * * * /path/to/monitor_script.sh对于日志管理推荐使用logrotate防止日志文件过大# /etc/logrotate.d/rustdesk /root/.pm2/logs/*.log { daily missingok rotate 7 compress delaycompress notifempty copytruncate }

更多文章