RustDesk自建服务器全攻略(手把手教学版)
文章目录
-
- 一、为什么要自建服务器?(血泪教训预警)
- 二、环境准备(避坑指南)
-
- 2.1 硬件要求
- 2.2 软件环境
- 2.3 源码获取
- 三、编译安装(魔鬼在细节里)
-
- 3.1 编译hbbs(信令服务器)
- 3.2 编译hbbr(中继服务器)
- 四、配置实战(配置文件详解)
- 五、客户端配置(关键步骤!)
- 六、性能优化(压测数据说话)
- 七、常见故障排查(救急指南)
-
- 7.1 连接超时
- 7.2 画面卡顿
- 7.3 ID服务器不可用
- 八、安全加固(企业级方案)
- 九、高级玩法(骚操作预警)
-
- 9.1 Docker部署(一行命令起飞)
- 9.2 集群部署(负载均衡方案)
- 9.3 对接LDAP(企业用户认证)
- 十、性能监控(运维必备)
- 结语(血泪总结)
一、为什么要自建服务器?(血泪教训预警)
上个月帮客户部署远程办公系统时,公共服务器突然抽风导致项目延期(说多了都是泪😭)!这才痛下决心研究自建RustDesk服务器。实测自建后连接速度提升300%+,数据完全私有化存储(老板直呼内行👍)!
二、环境准备(避坑指南)
2.1 硬件要求
- CPU:双核起步(实测树莓派4B都能跑)
- 内存:1GB+(低于这个数等着卡成PPT吧)
- 带宽:5Mbps起步(视频传输吃带宽大户)
2.2 软件环境
# Ubuntu/Debian必装依赖sudo apt install -y build-essential cmake libssl-dev libx11-dev libxext-dev# CentOS用户看这里(别装错依赖!)sudo yum install -y gcc-c++ cmake openssl-devel libX11-devel libXext-devel
2.3 源码获取
git clone https://github.com/rustdesk/rustdesk-servercd rustdesk-server# 切换稳定分支(新手别碰dev分支!)git checkout 1.1.9
三、编译安装(魔鬼在细节里)
3.1 编译hbbs(信令服务器)
cd hbbs# 这个参数不加会报错(别问我怎么知道的)RUSTFLAGS=\"-C target-feature=+crt-static\" cargo build --release# 生成的可执行文件在:target/release/hbbs
3.2 编译hbbr(中继服务器)
cd ../hbbrcargo build --release# 检查是否生成成功ls target/release/hbbr
四、配置实战(配置文件详解)
创建配置文件config.toml
:
[server]# 绑定地址(0.0.0.0才能外网访问!)bind_addr = \"0.0.0.0:21116\"[relay]# 中继服务器设置(带宽不够的调低这个值)max_bandwidth = \"10M\"[network]# NAT穿透设置(内网必配项!)stun_server = \"stun.rustdesk.com:3478\"
启动命令(带守护进程):
nohup ./hbbs -c config.toml > hbbs.log 2>&1 &nohup ./hbbr -c config.toml > hbbr.log 2>&1 &
五、客户端配置(关键步骤!)
- 下载对应平台客户端
- 进入设置->网络->ID服务器
- 输入你的服务器IP(格式:
域名或IP:21116
) - 勾选\"私有服务器模式\"(不勾等于白搭!)
(示意图:红框标注关键配置项)
六、性能优化(压测数据说话)
经过10台设备同时连接的压测,优化前后对比:
优化秘籍:
# 高级配置追加[advanced]# 调整线程池大小(根据CPU核心数)thread_pool_size = 4# 开启内存缓存(减少磁盘IO)memory_cache_size = \"256MB\"
七、常见故障排查(救急指南)
7.1 连接超时
- ✅检查防火墙:
sudo ufw allow 21114-21119/tcp
- ✅验证端口开放:
telnet your_server_ip 21116
- ❌千万别关SELinux!(正确做法是配策略)
7.2 画面卡顿
# 实时监控带宽iftop -i eth0 -P# 查看服务器负载htop
7.3 ID服务器不可用
- 检查hbbs进程是否存活:
ps aux | grep hbbs
- 查看日志:
tail -f hbbs.log
八、安全加固(企业级方案)
- 启用HTTPS:
# 使用Let\'s Encrypt证书sudo certbot certonly --standalone -d yourdomain.com
- 配置访问白名单:
[security]allowed_ips = [\"192.168.1.0/24\", \"10.0.0.2\"]
- 定期备份密钥:
# 密钥文件位置(丢了就完蛋!)/var/lib/rustdesk/id_ed25519
九、高级玩法(骚操作预警)
9.1 Docker部署(一行命令起飞)
docker run -d --name rustdesk-server \\ -p 21115-21119:21115-21119/tcp \\ -v /path/to/config:/config \\ rustdesk/rustdesk-server:latest
9.2 集群部署(负载均衡方案)
#mermaid-svg-lBRDby69TStC1O2V {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lBRDby69TStC1O2V .error-icon{fill:#552222;}#mermaid-svg-lBRDby69TStC1O2V .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lBRDby69TStC1O2V .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-lBRDby69TStC1O2V .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lBRDby69TStC1O2V .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lBRDby69TStC1O2V .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lBRDby69TStC1O2V .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lBRDby69TStC1O2V .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lBRDby69TStC1O2V .marker.cross{stroke:#333333;}#mermaid-svg-lBRDby69TStC1O2V svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lBRDby69TStC1O2V .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-lBRDby69TStC1O2V .cluster-label text{fill:#333;}#mermaid-svg-lBRDby69TStC1O2V .cluster-label span{color:#333;}#mermaid-svg-lBRDby69TStC1O2V .label text,#mermaid-svg-lBRDby69TStC1O2V span{fill:#333;color:#333;}#mermaid-svg-lBRDby69TStC1O2V .node rect,#mermaid-svg-lBRDby69TStC1O2V .node circle,#mermaid-svg-lBRDby69TStC1O2V .node ellipse,#mermaid-svg-lBRDby69TStC1O2V .node polygon,#mermaid-svg-lBRDby69TStC1O2V .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lBRDby69TStC1O2V .node .label{text-align:center;}#mermaid-svg-lBRDby69TStC1O2V .node.clickable{cursor:pointer;}#mermaid-svg-lBRDby69TStC1O2V .arrowheadPath{fill:#333333;}#mermaid-svg-lBRDby69TStC1O2V .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lBRDby69TStC1O2V .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lBRDby69TStC1O2V .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-lBRDby69TStC1O2V .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-lBRDby69TStC1O2V .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lBRDby69TStC1O2V .cluster text{fill:#333;}#mermaid-svg-lBRDby69TStC1O2V .cluster span{color:#333;}#mermaid-svg-lBRDby69TStC1O2V div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lBRDby69TStC1O2V :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 客户端 LB Server1 Server2 Server3
9.3 对接LDAP(企业用户认证)
[auth]ldap_server = \"ldap://corp.example.com\"ldap_base_dn = \"ou=users,dc=example,dc=com\"
十、性能监控(运维必备)
推荐Prometheus+Granafa监控方案:
# prometheus.yml 配置scrape_configs: - job_name: \'rustdesk\' static_configs: - targets: [\'rustdesk-server:21116\']
结语(血泪总结)
自建服务器最大的坑:以为配置完就完事了?Too young!定期维护才是真正的开始。上周因为没更新证书导致全员断连,被同事追杀三条街…(别学我!)
最后送大家八字真言:勤备份!多监控!常更新!有任何问题欢迎评论区交流(看到必回)!