RustDesk自建服务器与客户端编译全指南

📅 发布时间:2026/9/14 15:32:34
RustDesk自建服务器与客户端编译全指南
1. RustDesk自编译与自建服务器全攻略RustDesk作为一款开源的远程桌面工具其自建服务器方案越来越受到企业和技术爱好者的青睐。今天我要分享的是从源码编译RustDesk客户端并将自建服务器配置信息直接写入客户端的完整流程。这个方案特别适合需要完全掌控远程协助环境的企业或技术团队能够实现从服务器到客户端的全链路自主可控。2. 环境准备与工具链配置2.1 基础开发环境搭建编译RustDesk需要准备以下环境组件以Ubuntu 22.04为例sudo apt update sudo apt install -y build-essential git cmake libgtk-3-dev libxcb-randr0-dev \ libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev \ libasound2-dev libpulse-dev libjsoncpp-dev libcurl4-openssl-dev \ libssl-dev libvpx-dev libavcodec-dev libavutil-dev libswscale-dev \ libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly gstreamer1.0-libav特别提醒如果编译过程中出现依赖缺失错误可以通过apt-file search 文件名命令查找对应的包。2.2 Rust工具链安装RustDesk的核心组件使用Rust编写需要安装最新稳定版Rust工具链curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env rustup default stable验证安装rustc --version cargo --version2.3 额外依赖项处理对于视频编解码支持还需要安装以下额外组件sudo apt install -y libx264-dev libx265-dev libavformat-dev3. 源码获取与编译配置3.1 克隆源码仓库建议使用官方GitHub仓库的最新release分支git clone https://github.com/rustdesk/rustdesk cd rustdesk git checkout tags/1.1.9 -b release-1.1.9 # 使用最新稳定版3.2 编译配置调整修改Cargo.toml中的以下配置项[features] default [hwcodec] # 启用硬件加速对于需要嵌入自建服务器信息的编译需要修改src/ui/common.rs中的默认配置pub const DEFAULT_ID_SERVER: str your.server.address; # 改为你的服务器地址 pub const DEFAULT_KEY: str your_public_key_here; # 替换为你的公钥3.3 编译过程实操执行完整编译流程mkdir -p build cd build cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc)编译时间视机器性能可能需要15-30分钟。成功编译后会在target/release目录下生成可执行文件。重要提示首次编译会下载大量依赖项建议保持网络畅通。如果遇到网络问题可以配置Rust国内镜像源。4. 自建服务器配置4.1 服务器端部署自建服务器需要部署以下两个组件hbbs (ID服务器)hbbr (中继服务器)使用Docker部署最为简便docker run --name hbbs -p 21115-21119:21115-21119 -v /data:/root -d rustdesk/rustdesk-server hbbs -r your_domain_or_ip docker run --name hbbr -p 21116:21116 -v /data:/root -d rustdesk/rustdesk-server hbbr4.2 密钥生成与管理服务器首次运行时会自动生成密钥对位于/data目录下id_ed25519 (私钥)id_ed25519.pub (公钥)公钥内容需要写入客户端配置可以通过以下命令查看docker exec hbbs cat /root/id_ed25519.pub安全提示私钥必须严格保密泄露会导致安全风险。建议定期轮换密钥。4.3 防火墙配置确保服务器开放以下端口TCP 21115-21119UDP 21116企业部署建议配置NAT规则和防火墙白名单。5. 客户端定制化配置5.1 硬编码服务器信息在src/ui/settings.rs中修改以下配置项pub fn default_id_server() - String { your.server.address.to_string() # 改为实际服务器地址 } pub fn default_key() - String { your_public_key.to_string() # 填入实际的公钥 }5.2 客户端品牌定制可以在flutter/web/assets目录下替换以下资源文件logo.png - 应用图标favicon.ico - 浏览器标签页图标banner.png - 登录页面横幅5.3 构建各平台客户端Windows平台构建cargo build --release --target x86_64-pc-windows-gnuLinux平台构建cargo deb # 生成Debian包 cargo rpm # 生成RPM包macOS平台构建cargo bundle --release --target x86_64-apple-darwin6. 部署与问题排查6.1 客户端安装包制作对于Windows平台可以使用NSIS制作安装包makensis installer.nsi示例NSIS脚本配置!define VERSION 1.1.9 !define NAME MyCompany Remote Desktop InstallDir $PROGRAMFILES\MyCompany\RemoteDesktop6.2 常见问题解决连接失败问题检查服务器端口是否开放telnet your.server 21116验证客户端和服务端密钥是否匹配查看服务器日志docker logs hbbs视频卡顿问题确保编译时启用了硬件加速检查网络延迟和带宽调整客户端设置中的视频质量参数编译错误处理缺少依赖项根据错误信息安装对应开发包链接错误尝试清理后重新编译cargo clean cargo build版本冲突确保使用官方推荐的Rust和依赖版本6.3 性能优化建议对于企业部署建议在多区域部署中继服务器配置负载均衡启用TCP BBR拥塞控制客户端优化// 在src/network/relay.rs中调整以下参数 const BUFFER_SIZE: usize 1024 * 1024; // 增加缓冲区大小 const TIMEOUT: Duration Duration::from_secs(30); // 超时设置7. 高级定制与扩展7.1 API集成开发RustDesk提供丰富的API接口可以集成到自有系统中。主要API端点包括/api/login- 用户认证/api/connections- 连接管理/api/status- 服务状态检查示例调用curl -X POST https://your.server:21114/api/login \ -H Content-Type: application/json \ -d {username:admin,password:your_password}7.2 插件系统开发RustDesk支持通过插件扩展功能开发步骤创建插件项目cargo new --lib rustdesk-plugin-example实现Plugin traitpub trait Plugin { fn name(self) - str; fn on_event(self, event: PluginEvent); }编译为动态库(.so/.dll)并放入plugins目录7.3 安全加固措施启用TLS加密# 启动参数添加 hbbs --key /path/to/key.pem --cert /path/to/cert.pem配置IP白名单# 在服务器配置文件中添加 allowed_ips [192.168.1.0/24, 10.0.0.2]实现双因素认证修改src/ui/login.rs添加2FA支持集成TOTP或短信验证码在实际部署中我们发现将自建服务器信息直接编译进客户端可以显著降低用户配置复杂度特别适合企业批量部署场景。但需要注意定期更新客户端以应对服务器配置变更。一个实用的做法是通过版本检测自动提醒用户更新可以在src/ui/update.rs中实现这个逻辑。