RustDesk自建服务器踩坑实录:从PM2进程守护到密钥配置的完整避坑指南

张开发
2026/4/13 13:54:09 15 分钟阅读

分享文章

RustDesk自建服务器踩坑实录:从PM2进程守护到密钥配置的完整避坑指南
RustDesk自建服务器实战避坑指南从进程守护到密钥管理的深度解析第一次在Linux服务器上部署RustDesk时我本以为按照官方文档就能轻松搞定。直到凌晨三点还在排查为什么客户端始终显示未就绪才意识到这远不是apt-get install那么简单。本文将分享我从五次完整部署中总结出的实战经验特别针对那些官方文档没细说、但实际部署必踩的坑。1. PM2进程管理的隐藏陷阱几乎所有教程都会告诉你用PM2守护hbbs和hbbr进程但没人提醒你PM2本身的安装方式会直接影响服务稳定性。第一次部署时我直接npm install pm2 -g结果服务器重启后服务全部丢失。正确的PM2持久化姿势# 使用系统级安装而非全局安装 sudo npm install pm2latest -g # 生成启动脚本关键步骤 sudo pm2 startup # 保存当前进程列表 pm2 save常见问题排查表现象可能原因解决方案重启后服务消失PM2未配置开机启动执行pm2 startuppm2 save端口占用但服务假死PM2未正确捕获子进程启动时添加--kill-timeout 5000参数内存持续增长Node.js内存泄漏配置max_memory_restart自动重启特别注意在低配服务器上建议为PM2配置内存限制pm2 start hbbs --max-memory-restart 300M2. 密钥系统的深度解析那个神秘的id_ed25519.pub文件困扰了我整整两天——为什么有的教程说它在解压目录有的说在/root目录而实际使用时客户端又提示密钥无效密钥生成机制真相首次运行hbbs时自动生成在当前工作目录文件包含两行第一行是公钥(客户端用)第二行是私钥(切勿泄露)常见路径混淆是因为用不同用户/路径启动服务实用诊断命令# 查找密钥文件位置所有用户 sudo find / -name id_ed25519.pub 2/dev/null # 验证密钥有效性应返回valid cat /path/to/id_ed25519.pub | cut -d -f1 | base64 -d | wc -c3. 防火墙与云安全的双重封锁即使本地测试通过云服务器上的RustDesk仍可能因网络配置功亏一篑。这是我在阿里云和腾讯云上实测的端口方案必须开放的端口矩阵服务端口协议云平台特殊要求hbbs21115TCP阿里云需额外配置内网互通hbbs21116TCPUDP腾讯云UDP需单独规则hbbr21117TCP部分区域需备案网页端21118-21119TCP安全组需关联到实例诊断网络问题的黄金命令# 从服务器自检端口 telnet 127.0.0.1 21116 # 从外部检测替换为你的公网IP nc -zv 你的公网IP 21116-211194. 日志分析的进阶技巧当客户端卡在正在连接时仅看PM2基础日志远远不够。这是我总结的日志诊断三板斧第一层实时监控模式pm2 logs --lines 100 --timestamp YYYY-MM-DD HH:mm:ss第二层解码加密日志# 查找NAT穿透相关错误 grep -a NAT ~/.pm2/logs/hbbs-error.log | awk -F| {print $4}第三层网络层诊断# 查看活跃连接 ss -tulnp | grep -E hbbs|hbbr # 抓取特定端口数据包需root tcpdump -i eth0 port 21116 -vv -X5. 高可用部署方案对于企业级应用单节点部署风险太高。这是我验证过的多服务器部署方案架构设计[负载均衡] | ------------------------------- | | | [主hbbshbbr] [备hbbshbbr] [纯hbbr节点]关键配置要点所有hbbs节点共享同一个密钥文件手动拷贝使用Nginx TCP负载均衡21115-21119端口配置DNS轮询实现客户端自动故障转移# Nginx的stream配置示例 stream { upstream rustdesk_hbbs { server 主节点IP:21116; server 备节点IP:21116 backup; } server { listen 21116; proxy_pass rustdesk_hbbs; } }6. 客户端配置的魔鬼细节服务端完美运行后客户端配置仍有这些坑等着你Android客户端必须手动允许后台VPN连接权限macOS版需在安全性与隐私中单独授权屏幕录制内网穿透若通过域名访问需在客户端添加--direct参数实测可用的全平台连接测试命令# Windows PowerShell Test-NetConnection -ComputerName 你的服务器IP -Port 21116 # Linux/macOS curl http://你的服务器IP:21115 -v在经历三次服务器迁移和无数次深夜排错后我发现最稳定的部署组合是Ubuntu 22.04 LTS PM2 5.3.0 RustDesk 1.3.8配合Cloudflare的TCP隧道规避运营商封锁。现在这套架构已经稳定运行半年支撑着公司200员工的远程办公需求。

更多文章