编译rustdesk客户端linux、windows、android、mac 内嵌自建服务器IP

github actions云编译

```markdown
On your fork you just created go to “Settings → Secrets and variables → Actions”.

Click “New repository secret”, for the name put RENDEZVOUS_SERVER, for the secret put your servers name/ip address.

Click “Add secret”.

Click “New repository secret”, for the name put RS_PUB_KEY, for the secret put your servers public key.

Click “Add secret”.
```


RustDesk 是一个开源的远程桌面应用,允许用户自建服务器,以替代 TeamViewer 等远程控制软件。为了方便自建服务的用户快速使用 Rustdesk,构建内置自己服务器和 key 的 RustDesk 客户端便成为了广大互联网爱好者的需求。


默认情况下,RustDesk 依赖 `hbb_common` 作为其基础库,并默认连接到官方服务器。如果你希望使用自己的服务器,则需要修改 `hbb_common` 代码并让 `rustdesk` 指向你修改后的 `hbb_common` 仓库。


本教程将介绍如何利用 Github Actions 实现自动构建内置你服务器和 key 的 Rustdesk 客户端。


## 1. 准备工作


在开始之前,请确保你已经安装了 Git,并且拥有一个 GitHub 账户。建议你对 Git 的基本使用有一定了解,以便顺利完成后续操作。


## 2. Fork Rustdesk 仓库

1. [rustdesk/hbb_common](https://github.com/rustdesk/hbb_common)
2. [rustdesk/rustdesk](https://github.com/rustdesk/rustdesk)

### 2.1 拉取 Fork 后的代码


> 请注意,替换仓库地址为你 fork 后的仓库地址,而不是直接复制我下面的命令


```javascript
# 可选:如果需要使用代理
# git config --global http.proxy http://127.0.0.1:10808
# git config --global https.proxy http://127.0.0.1:10808
# 拉取仓库代码到本地 请替换为你fork后的仓库地址
git clone https://github.com/irains/hbb_common.git
git clone https://github.com/irains/rustdesk.git
```


Bash


Copy


[bookmark](https://resource.upcdn.rainss.cn/2025/03/1764540511.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134233648.png/sh2.png)


## 3. 修改 hbb_common 代码


打开 `hbb_common` 仓库下的 `src/config.rs`文件,修改 **101-102 行** 的默认服务器和密钥为你自己的服务器和密钥。


[bookmark](https://resource.upcdn.rainss.cn/2025/03/2788021068.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134246570.png/sh2.png)


### 3.1 推送修改后的代码


```javascript
# 将修改的代码添加到暂存区
git add .
# 将代码提交到本地仓库
git commit -m "修改默认的服务器和 key"
# 将本地仓库代码推送到远程仓库 如果你没有登录过GitHub会要求你登录github
git push
```


Bash


Copy


[bookmark](https://resource.upcdn.rainss.cn/2025/03/1475807105.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134253028.png/sh2.png)


### 3.2 查看最新提交的 commit ID


```javascript
git log --oneline
```


Bash


Copy


> 我这里提交后的 commit id 是 b8d80ca,可用于后续验证 rustdesk 服务器和 key 是否修改成功


[bookmark](https://resource.upcdn.rainss.cn/2025/03/3262190668.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134303709.png/sh2.png)


## 4. 修改 rustdesk 仓库代码


我们切换到克隆下来的 rustdesk 代码目录下,按照下面的方式修改子模块地址并更新。


### 4.1 更新 `.gitmodules`


打开并编辑 `.gitmodules` 文件,将 `url` 替换为你 Fork 后的 `hbb_common` 仓库地址。


> 比如我 fork 后的仓库地址是`https://github.com/irains/hbb_common`则将 `https://github.com/rustdesk/hbb_common`地址换为前面这个地址即可,记住是 hbb_common 的地址,而不是 rustdesk 仓库的地址


[bookmark](https://resource.upcdn.rainss.cn/2025/03/2063474262.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134310583.png/sh2.png)


### 4.2 更新子模块


将上面修改好的代码保存,执行下面的命令更新子模块到最新的 commit id


```javascript
git submodule init
git submodule sync
git submodule update --remote
```


Bash


Copy


[bookmark](https://resource.upcdn.rainss.cn/2025/03/79605812.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134324215.png/sh2.png)


### 4.3 提交并推送代码


```javascript
git add .
git commit -m "修改子模块仓库地址"
git push
```


Bash


Copy


[bookmark](https://resource.upcdn.rainss.cn/2025/03/3789247376.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134330690.png/sh2.png)


### 4.4 确认 Commit ID 更新


代码推送完毕后,进入你 Fork 后的 `rustdesk` 仓库的 `libs` 目录下,查看 `hbb_common` 后面的 commit id,确保它是 3.2 提到的`b8d80ca`(这个值每个人的是不同的),否则请回到上面的步骤重新检查是否遗漏了了某个操作。


[bookmark](https://resource.upcdn.rainss.cn/2025/03/3550275522.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134343298.png/sh2.png)


[bookmark](https://resource.upcdn.rainss.cn/2025/03/572935490.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134351253.png/sh2.png)


## 5. 触发 GitHub Action 构建


### 5.1 创建 Tag


在本地 `rustdesk` 仓库中创建一个新 tag,例如 `1.3.9`,请使用 **固定格式** (如 `1.3.9` 或 `v1.3.9`),以便于自动匹配构建规则。


```javascript
git tag -a 1.3.9 -m "修改内置服务器和 key"
```


Bash


Copy


[bookmark](https://resource.upcdn.rainss.cn/2025/03/2202844556.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134359037.png/sh2.png)


### 5.2 触发 GitHub Actions 构建


在 `rustdesk` 仓库中,进入 `Actions` 页面,点击下面图中的按钮启用自动构建。启用后回到本地 rustdesk 代码中使用下面的命令将 tag 推送到 Github 后将自动开始构建。


```javascript
git push --tags
```


Bash


Copy


[bookmark](https://resource.upcdn.rainss.cn/2025/03/4016350702.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134423659.png/sh2.png)


### 5.3 下载构建好的客户端


Tag 推送完毕后会出现下面的构建进度。


[bookmark](https://resource.upcdn.rainss.cn/2025/03/3171890824.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134439367.png/sh2.png)


等待 Action 执行完成后(时间比较长,一个半小时左右才能全部构建完成),进入 `Releases` 页面,即可下载构建好的客户端并使用。


[bookmark](https://resource.upcdn.rainss.cn/2025/03/3359492975.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134447973.png/sh2.png)


[bookmark](https://resource.upcdn.rainss.cn/2025/03/3354848215.png)


![sh2.png](https://img.blog.jiangqing.xyz/img/20250727134457607.png/sh2.png)

克隆Rustdesk的源码

git clone https://github.com/rustdesk/rustdesk
cd rustdesk

安装依赖

curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs/) | sh
#选1默认安装

apt-get update
apt-get install -y  binutils-mingw-w64 build-essential gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 cmake libssl-dev mingw-w64

#安装windows编译依赖
rustup target add x86_64-pc-windows-msvc 
#安装x86_64-pc-windows-msv编译工具
rustup target add x86_64-pc-windows-gnu
rustup toolchain install stable-x86_64-pc-windows-msvc
 #安装windows编译工具链

#读取环境变量
source $HOME/.cargo/env
source $HOME/.config/fish/conf.d/rustup.fish
export CC=x86_64-w64-mingw32-gcc
export CXX=x86_64-w64-mingw32-g++
export AR=x86_64-w64-mingw32-ar
export RANLIB=x86_64-w64-mingw32-ranlib
export PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig
export PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib

修改服务端IP端口和key

libs/hbb_common/src/config.rs

pub const RENDEZVOUS_SERVERS: &[&str] = &["服务器ip"];
pub const PUBLIC_RS_PUB_KEY: &str = "key";

pub const RS_PUB_KEY: &str = match option_env!("RS_PUB_KEY") {
    Some(key) if !key.is_empty() => key,
    _ => PUBLIC_RS_PUB_KEY,
};

pub const RENDEZVOUS_PORT: i32 = 21116;
pub const RELAY_PORT: i32 = 21117;

修改代码内置固定连接密码

我们要改的文件路径在libs/hbb_common/src/config.rs这个路径下:

sh2.png

sh2.png

点击修改这个文件:

sh2.png

大概在 73 行左右,我们修改这个:

sh2.png

为下面这个:

pub static ref HARD_SETTINGS: RwLock<HashMap<String, String>> = {
        let mut map = HashMap::new();
        map.insert("password".to_string(), "aa123456".to_string());
        RwLock::new(map)
    };

**请注意!!!!**,上面代码中的的aa123456就是固定的连接密码,此处只是演示,需要改为你自己的密码,请不要用这么简单的密码。

修改完成后,点击Commit changes

sh2.png

编译命令

windows

cargo install cargo-wix

cargo build --release --target x86_64-pc-windows-msvc
#或使用 cargo build --release --target x86_64-pc-windows-gnu


#手工配置环境变量

linux

cargo build --release --target x86_64-unknown-linux-gnu

自建API保存连接信息

kingmo888/rustdesk-api-server: 基于Django的RustDesk Api&Web Server,除了支持api所有功能,还支持web注册、管理、展示等。已支持到最新1.2.7版本。 (github.com)

客户端编译带 API 服务器

上期视频已经讲解了客户端编译时把服务端信息和 key 编译进客户端,这期视频就不重复讲解,只讲解再把 API 服务器编译进客户端

路径:src/common.rs

20240828123950633-截屏2024-08-28-12.39.28-1024x830.png

把里面的 https://admin.rustdesk.com 地址修改为我们服务器 API 的地址即可

本地搭建的 API 服务端有 7000 的端口,需要加上


欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//