使用 GitHub Actions 编译打包最新版本 RustDesk 自定义客户端详细流程

前期准备

1、拥有 GitHub 账号
2、本地电脑安装有 Git 客户端
3、私有部署了 RustDesk Server 服务器
注:本教程适用于 RustDesk v1.3.9 + 版本

Import 导入项目

  • 登录 GitHub 后,分别 Import 导入官方的 rustdeskhbb_common

image.png

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

image.png

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

image.png

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

image.png

image.png

Git 项目到本地并修改配置

  • 在电脑的任意文件夹中,右键点击,选择 Open Git Bash here

image.png

  • 执行 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/,进入到项目主目录下,

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

  • 替换后

image.png

  • 保存编辑修改后的 src/common.rsflutter/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

image.png

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

image.png

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

image.png

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

设置默认分支

  • 返回 rustdesk 项目地址,点击 Settings

image.png

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

image.png

image.png

image.png

GitHub Actions 编译打包

  • 返回 rustdesk 项目地址,点击 Settings

image.png

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

image.png

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

image.png

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

image.png

image.png


标题:使用 GitHub Actions 编译打包最新版本 RustDesk 自定义客户端详细流程
作者:Mune
地址:https://cnxiaobai.com/articles/2025/08/05/1754384458268.html

    评论
    21 评论
    Mune 2025-11-15 15:22
    回复» @小磊

    src/config.rs 如过是这个文件里面的,103,104行修改服务器信息的话,其实填服务器IP和Key就可以的,除非修改过服务端默认端口,我编译的时候就是用的IP和Key

    Mune 2025-11-15 15:12
    回复» @小磊

    git 拉代码的时候,你是拉1.4.3分支还是直接拉的master?

    小磊 2025-11-15 15:10

    抱歉 教程没有问题 是服务端问题 hbbs需要指定域名而不是ip 楼主教程很赞 目前看到过思路最清晰 成功率最高的!感谢!

    小磊 2025-11-15 09:37
    回复» @Mune

    是的 完全按教程走的 我也觉得奇怪 看步骤也没错 编译也OK 就是成品出来连接不正常 唉

    Mune 2025-11-15 01:01
    回复» @小磊

    你完全按照我上面的教程试试呢?我试过1.4.3版本可以的,我现在用的就是自己编译后的1.4.3版本

    Mune 2025-11-15 00:53
    回复» @小磊

    你克隆项目的时候是克隆的这两个项目不:

    https://github.com/rustdesk/rustdesk

    https://github.com/rustdesk/hbb_common

    小磊 2025-11-14 22:24
    回复» @Mune

    另外克隆rustdesk主程序何意?没太理解

    小磊 2025-11-14 22:22
    回复» @Mune

    编译是没有问题,我替换的服务器(域名)也没问题的,因为手动填写是OK的,但是内嵌编译成品被控就是无法连接,我是公网ip,群晖nas搭建的api服务和server服务,做了端口映射,同样的数据手动填写就没有问题,最后发现按您这个编译的1.4.3成品被控端必须得手动再加一个中继服务器地址才行,反正搞的有点懵,原则上RENDEZVOUS_SERVERS赋值的服务器地址中继也是公用的 反正现在头大 明天试试git rm --cached libs/hbb_common 删除后重建 看看能否OK 感谢您的教程和指点!

    Mune 2025-11-14 22:07
    回复» @小磊

    我是直接在公网服务器搭建了rustdesk服务端,你直接试试克隆rustdesk主程序和hbb_common,然后修改hbb_common的连接信息,就可以编译了,编译后不需要填写中继服务器地址的,如果服务端地址是内网地址,同IP段还好,不同IP得你这边调整网络策略了,目前我这个教程的法子,我从1.3.9开始到1.4.3编译都是没有问题的。

    Mune 2025-11-14 22:04
    回复» @小磊

    这个没有

    小磊 2025-11-14 22:04
    回复» @ycllwl

    docker编译有教程吗?

    小磊 2025-11-14 22:00
    回复» @Mune

    不是API的问题 我后面重新编译了一版直接去掉了API内嵌 还是不行 发现:成品显示就绪(克隆的最新1.4.3官方正式版),ID服务器没有问题,连接不成功,提示无法中继,手动仅配置一下中继服务器就OK,明天试试直接克隆master分支并重建hbb_common试试,之前旧版就是克隆两个,然后git tag方式是没有问题的,楼主您测试过跨网连接吗?按您这个教程编译成品 局域网连接没有任何问题 但是跨网就不行 必须手动再单独添加一下中继服务器才行 不过你这个方法确实简单 高效 而且编译成功率非常高 !

    Mune 2025-11-14 18:44
    回复» @小磊

    API 这个倒是没有试过

    小磊 2025-11-14 15:59

    API服务器修改内嵌后连接受限,API服务器采用的第三方https://github.com/lejianwen/rustdesk-apihttps://github.com/lejianwen/rustdesk-api/issues/92修改server和rustdesk源代码也无法解决 不知道是不是新版又有代码改动!

    Mune 2025-11-05 19:00
    回复» @Henry_函

    我也是踩了好几次坑,主要是这软件版本升级后不像以前很简单的就可以直接在GitHub Actions编译,编译后,最好也还是在GitHub删掉克隆下来的代码

    Henry_函 2025-11-05 17:16

    到编译阶段了,教程对小白非常友好,继续寻找可以定制客户端界面的技术贴

    Mune 2025-09-24 21:13
    回复» @arvin.duan

    确实是变了,我补一下教程

    ycllwl 2025-09-24 16:09

    我试了一堆教程没成功,用docker方式构建,一次完成!没那么麻烦!

    arvin.duan 2025-09-06 09:13

    刚才重试过了,确定要切换默认分支,不然Action里边没有内容。

    Mune 2025-08-10 03:08
    回复» @233

    不用的,我测试过了

    233 2025-08-09 16:27

    似乎需要设置 default branch,否则 Actions 里是空的

avatar

取消