RustDesk 全流程自建指南:开源远程桌面解决方案
RustDesk 全流程自建指南:开源远程桌面解决方案
1. RustDesk 概述
RustDesk 是一款采用 Rust 语言编写的开源远程桌面软件,具有以下核心特性:
- 完全开源:客户端和服务器端代码均在 GitHub 公开
- 数据自主可控:支持自建服务器,确保数据隐私
- 跨平台支持:Windows、Linux、macOS、Android 和 iOS 全平台兼容
- P2P 连接:支持直接点对点连接,减少延迟
- 中继备用:当 P2P 不可用时自动切换至中继服务器
项目地址:
- 客户端: https://github.com/rustdesk/rustdesk
- 服务器端: https://github.com/rustdesk/rustdesk-server
- 官网下载: https://rustdesk.com/zh-cn/
这里给一个下载:
2. 核心架构
2.1 组件构成
RustDesk 系统由三个主要组件组成:
- 客户端:提供用户界面和连接功能
- ID/会合服务器 (hbbs):管理设备ID和协助建立P2P连接
- 中继服务器 (hbbr):当P2P不可用时提供数据转发
2.2 网络协议
- 使用 TCP/UDP 协议进行数据传输
- 支持 TCP 打洞技术建立直接连接
- 数据加密传输保障安全性
3. 服务器部署指南
3.1 二进制部署
3.1.1 从源码构建
# 安装构建依赖
sudo apt install -y build-essential cmake git
# 克隆仓库
git clone https://github.com/rustdesk/rustdesk-server
cd rustdesk-server
# 构建发布版本
cargo build --release
# 生成的可执行文件位于
# target/release/hbbs - ID/会合服务器
# target/release/hbbr - 中继服务器
# target/release/rustdesk-utils - 实用工具
3.1.2 直接下载预编译二进制
可从 GitHub Releases 页面下载预编译的二进制文件:
https://github.com/rustdesk/rustdesk-server/releases
3.2 Docker 部署
3.2.1 经典镜像部署
# 部署hbbs
docker run --name hbbs --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]>
# 部署hbbr
docker run --name hbbr --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr
3.2.2 S6-overlay 镜像部署(单容器)
docker run --name rustdesk-server \
--net=host \
-e "RELAY=your.relay.server" \
-e "ENCRYPTED_ONLY=1" \
-v "$PWD/data:/data" \
-d rustdesk/rustdesk-server-s6:latest
3.3 关键配置参数
参数 | 说明 | 默认值 |
---|---|---|
-r | 中继服务器地址 | 无 |
--encrypted-only | 仅允许加密连接 | false |
-k _ | 允许任何密钥 | 需要匹配密钥 |
-k <key> | 指定密钥 | 无 |
--relay-servers | 多个中继服务器 | 无 |
4. 客户端配置
4.1 连接自建服务器
- 打开 RustDesk 客户端
- 进入设置 → ID/中继服务器
- 填写自建服务器地址:
- ID服务器:
hbbs
运行的IP或域名 - 中继服务器:
hbbr
运行的IP或域名
- ID服务器:
- 如需密钥认证,在"密钥"字段输入服务器配置的密钥
4.2 高级网络配置
-
端口映射:
- hbbs: TCP 21115-21119, UDP 21116
- hbbr: TCP 21117, 21119
-
防火墙规则:
# 示例ufw规则 sudo ufw allow 21115:21119/tcp sudo ufw allow 21116/udp
5. 安全配置
5.1 密钥管理
RustDesk 使用 Ed25519 密钥对进行认证:
# 生成密钥对
rustdesk-utils genkeypair
# 输出示例
Public Key: 8BLLhtzUBU/XKAH4mep3p+IX4DSApe7qbAwNH9nv4yA=
Secret Key: egAVd44u33ZEUIDTtksGcHeVeAwywarEdHmf99KM5ajwEsuG3NQFT9coAfiZ6nen4hfgNICl7upsDA0f2e/jIA==
5.2 强制加密
在服务器启动时添加 --encrypted-only
参数或设置环境变量 ENCRYPTED_ONLY=1
可强制所有连接必须加密。
6. 性能调优
6.1 带宽控制
环境变量 | 说明 | 示例值 |
---|---|---|
LIMIT_SPEED | 总速度限制 | 10 (Mb/s) |
SINGLE_BANDWIDTH | 单连接带宽限制 | 5 (Mb/s) |
TOTAL_BANDWIDTH | 总带宽限制 | 100 (Mb/s) |
6.2 数据库配置
默认使用 SQLite 数据库,可通过 DB_URL
指定路径:
# 使用自定义数据库路径
hbbs --db-url /path/to/db_v2.sqlite3
7. 监控与维护
7.1 日志查看
设置日志级别:
# 设置日志级别
export RUST_LOG=info # error|warn|info|debug|trace
# 查看hbbs日志
docker logs -f hbbs
# 查看hbbr日志
docker logs -f hbbr
7.2 性能监控
使用 rustdesk-utils
工具获取服务器状态:
rustdesk-utils stats
8. 故障排除
8.1 常见问题
-
无法建立P2P连接:
- 检查两端NAT类型
- 确认UDP 21116端口开放
- 尝试禁用防火墙临时测试
-
连接速度慢:
- 检查中继服务器带宽限制
- 确认网络路径质量
- 考虑部署多地中继服务器
-
认证失败:
- 确认客户端和服务器的密钥匹配
- 检查
--encrypted-only
设置
9. 高级主题
9.1 多服务器部署
可以部署多个hbbs和hbbr实例实现负载均衡:
# 启动多个hbbr实例
docker run --name hbbr1 -p 21117:21117 -d rustdesk/rustdesk-server:latest hbbr
docker run --name hbbr2 -p 21120:21117 -d rustdesk/rustdesk-server:latest hbbr
# hbbs配置多个中继服务器
hbbs -r "relay1.example.com,relay2.example.com:21120"
9.2 自定义开发
RustDesk 提供了开发接口,支持:
- 自定义UI界面
- 扩展协议功能
- 集成到现有系统
开发文档参考项目中的 CONTRIBUTING.md
文件。
10. 版本升级
- 备份现有数据和配置
- 停止旧版本服务
- 部署新版本二进制或Docker镜像
- 恢复配置并启动服务
- 验证功能正常
建议在测试环境验证后再进行生产环境升级。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 yb9803
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果