使用 GitHub Actions 编译打包最新版本 RustDesk 自定义客户端详细流程
前期准备
1、拥有 GitHub 账号
2、本地电脑安装有 Git 客户端
3、私有部署了 RustDesk Server 服务器
注:本教程适用于 RustDesk v1.3.9 + 版本
Import 导入项目
- 登录 GitHub 后,分别 Import 导入官方的
rustdesk、hbb_common

- 填写导入的项目地址以及项目名称,点击导入
rustdesk
https://github.com/rustdesk/rustdesk

- 同样,再次点击导入项目功能,填写导入的项目地址以及项目名称,点击导入
hbb_common
https://github.com/rustdesk/hbb_common

- 出现如下画面时,即导入成功


Git 项目到本地并修改配置
- 在电脑的任意文件夹中,右键点击,选择 Open Git Bash here

- 执行
git clone命令,克隆你导入的项目到本地 - 注:本文中,GitHub地址中的
Suery均需修改为你的GitHub用户名
git clone https://github.com/你的用户名/rustdesk.git
- 例:
git clone https://github.com/Suery/rustdesk.git
- 默认克隆时,一般会克隆 master 分支代码,该分支代码可能包含待测试代码,不建议克隆master分支到本地,也可以只克隆指定标签版本 - 推荐
- 下述命令中的1.4.1为当前最新稳定版本的版本号,若需其他版本,修改克隆即可
git clone -b 1.4.1 https://github.com/Suery/rustdesk.git
- 克隆完成后,执行命令
cd rustdesk/,进入到项目主目录下,

- 执行命令,修改 .gitmodules 中的子模块 URL
git config -f .gitmodules submodule.libs/hbb_common.url https://github.com/Suery/hbb_common.git

- 重新初始化并同步子模块
git submodule sync
git submodule update --init --recursive

- 本地电脑打开主项目文件,编辑修改
src/common.rs和flutter/lib/desktop/pages/connection_page.dart - 打开src\common.rs,在1007行替换API地址,可以通过搜索
get_api_server_,然后往下翻找到 .to_owned(),替换前面的URL即可

- 将
https://admin.rustdesk.com修改为自己的API服务地址,如果没有也可以修改为部署Rustdesk Server服务器地址,例https://192.168.10.10

- 打开
flutter/lib/desktop/pages/connection_page.dart文件

- 将 81-110 行代码替换如下
Widget setupServerWidget() => Flexible(
child: Offstage(
offstage: !(!_svcStopped.value &&
stateGlobal.svcStatus.value == SvcStatus.ready &&
_svcIsUsingPublicServer.value),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [],
),
),
);

- 替换后

- 保存编辑修改后的
src/common.rs和flutter/lib/desktop/pages/connection_page.dart文件,在rustdesk主目录执行以下命令,提交修改
git checkout -b fix-branch
git add .gitmodules
git add src/common.rs
git add flutter/lib/desktop/pages/connection_page.dart
git commit -m "更新配置文件"
git push origin fix-branch

- API地址修改并提交后,执行命令
cd libs/hbb_common,进入到引用模块目录下
cd libs/hbb_common

- 本地电脑打开主项目文件,编辑修改
libs/hbb_common/src/config.rs,将103、104行中的rs-ny.rustdesk.com、OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=修改为自己部署的Rustdesk Server服务器的IP地址以及KEY


- 返回 Git Bash 页面,执行以下命令提交修改
git checkout -b fix-branch
git add src/config.rs
git commit -m "修改 config.rs"
git push origin fix-branch

- 提交完成后,返回
rustdesk项目主目录,执行以下命令更新libs/hbb_common并提交
cd ../..
git add libs/hbb_common
git commit -m "更新子模块引用"
git push origin fix-branch

- 提交完成后,浏览器打开你 Import 的
rustdesk的项目主页,查看是否有fix-branch分支出现,有的话,则点击进入fix-branch分支

- 在
fix-branch分支中,点击进入到libs目录,进入libs目录后,查看 hbb_common 是否为刚刚提交的修改,是的话,则点击hbb_common目录,正常情况下,点击hbb_common目录会自动跳转到你 Import 的 hbb_common 项目地址

- 在 hbb_common 项目地址,查看
src/config.rs文件中的服务器IP地址和KEY是否已修改,如果已修改,则可以开始执行编译打包操作,否则,则检查上述步骤中是否有遗漏

设置默认分支
- 返回 rustdesk 项目地址,点击 Settings

- 点击编辑按钮,调整默认分支为
master



GitHub Actions 编译打包
- 返回 rustdesk 项目地址,点击 Settings

- 左侧点击 Actions-->General,确保
Allow all actions and reusable workflows和Read and write permissions为选中状态,若不是则勾选并点击下方的Save按钮


- 再次返回 rustdesk 项目地址,点击 Actions

- 左侧选择
Flutter Nightly Build后,点击页面中的Run workflow

- 在出现的模态框中,我们要选择
fix-branch分支

- 选择好分支后,点击
Run workflow按钮开始编译打包

Run workflow按钮点击后,等待一会,即可在页面中看到在运行的打包工作流

- 点击进去,即可查看打包进度,全部流程跑完,大约一个小时左右


- 全部编译打包完成后,即可返回 rustdesk 项目地址,点击跳转至 Releases 页面下载所需


标题:使用 GitHub Actions 编译打包最新版本 RustDesk 自定义客户端详细流程
作者:Mune
地址:https://cnxiaobai.com/articles/2025/08/05/1754384458268.html
src/config.rs 如过是这个文件里面的,103,104行修改服务器信息的话,其实填服务器IP和Key就可以的,除非修改过服务端默认端口,我编译的时候就是用的IP和Key
git 拉代码的时候,你是拉1.4.3分支还是直接拉的master?
抱歉 教程没有问题 是服务端问题 hbbs需要指定域名而不是ip 楼主教程很赞 目前看到过思路最清晰 成功率最高的!感谢!
是的 完全按教程走的 我也觉得奇怪 看步骤也没错 编译也OK 就是成品出来连接不正常 唉
你完全按照我上面的教程试试呢?我试过1.4.3版本可以的,我现在用的就是自己编译后的1.4.3版本
你克隆项目的时候是克隆的这两个项目不:
https://github.com/rustdesk/rustdesk
https://github.com/rustdesk/hbb_common
另外克隆rustdesk主程序何意?没太理解
编译是没有问题,我替换的服务器(域名)也没问题的,因为手动填写是OK的,但是内嵌编译成品被控就是无法连接,我是公网ip,群晖nas搭建的api服务和server服务,做了端口映射,同样的数据手动填写就没有问题,最后发现按您这个编译的1.4.3成品被控端必须得手动再加一个中继服务器地址才行,反正搞的有点懵,原则上RENDEZVOUS_SERVERS赋值的服务器地址中继也是公用的 反正现在头大 明天试试git rm --cached libs/hbb_common 删除后重建 看看能否OK 感谢您的教程和指点!
我是直接在公网服务器搭建了rustdesk服务端,你直接试试克隆rustdesk主程序和hbb_common,然后修改hbb_common的连接信息,就可以编译了,编译后不需要填写中继服务器地址的,如果服务端地址是内网地址,同IP段还好,不同IP得你这边调整网络策略了,目前我这个教程的法子,我从1.3.9开始到1.4.3编译都是没有问题的。
这个没有
docker编译有教程吗?
不是API的问题 我后面重新编译了一版直接去掉了API内嵌 还是不行 发现:成品显示就绪(克隆的最新1.4.3官方正式版),ID服务器没有问题,连接不成功,提示无法中继,手动仅配置一下中继服务器就OK,明天试试直接克隆master分支并重建hbb_common试试,之前旧版就是克隆两个,然后git tag方式是没有问题的,楼主您测试过跨网连接吗?按您这个教程编译成品 局域网连接没有任何问题 但是跨网就不行 必须手动再单独添加一下中继服务器才行 不过你这个方法确实简单 高效 而且编译成功率非常高 !
API 这个倒是没有试过
API服务器修改内嵌后连接受限,API服务器采用的第三方https://github.com/lejianwen/rustdesk-api 按https://github.com/lejianwen/rustdesk-api/issues/92修改server和rustdesk源代码也无法解决 不知道是不是新版又有代码改动!
我也是踩了好几次坑,主要是这软件版本升级后不像以前很简单的就可以直接在GitHub Actions编译,编译后,最好也还是在GitHub删掉克隆下来的代码
到编译阶段了,教程对小白非常友好,继续寻找可以定制客户端界面的技术贴
确实是变了,我补一下教程
我试了一堆教程没成功,用docker方式构建,一次完成!没那么麻烦!
刚才重试过了,确定要切换默认分支,不然Action里边没有内容。
不用的,我测试过了
似乎需要设置 default branch,否则 Actions 里是空的