前言
RustDesk 是一个开源的远程桌面应用,允许用户自建服务器,以替代 TeamViewer 等远程控制软件。为了方便自建服务的用户快速使用Rustdesk,构建内置自己服务器和key的RustDesk 客户端便成为了广大互联网爱好者的需求。
默认情况下,RustDesk 依赖 hbb_common 作为其基础库,并默认连接到官方服务器。如果你希望使用自己的服务器,则需要修改 hbb_common 代码并让 rustdesk 指向你修改后的 hbb_common 仓库。
本教程将介绍如何利用Github Actions 实现自动构建内置你服务器和key的Rustdesk客户端。
1. 准备工作
在开始之前,请确保你已经安装了 Git,并且拥有一个 GitHub 账户。建议你对 Git 的基本使用有一定了解,以便顺利完成后续操作。
2. Fork Rustdesk仓库
2.1 拉取 Fork 后的代码
请注意,替换仓库地址为你fork后的仓库地址,而不是直接复制我下面的命令
# 可选:如果需要使用代理
# 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.git3. 修改 hbb_common代码
打开 hbb_common 仓库下的 src/config.rs文件,修改 101-102 行 的默认服务器和密钥为你自己的服务器和密钥。
3.1 推送修改后的代码
# 将修改的代码添加到暂存区
git add .
# 将代码提交到本地仓库
git commit -m "修改默认的服务器和 key"
# 将本地仓库代码推送到远程仓库 如果你没有登录过GitHub会要求你登录github
git push3.2 查看最新提交的 commit ID
git log --oneline我这里提交后的commit id是b8d80ca,可用于后续验证rustdesk服务器和key是否修改成功
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仓库的地址
4.2 更新子模块
将上面修改好的代码保存,执行下面的命令更新子模块到最新的commit id
git submodule init
git submodule sync
git submodule update --remote4.3 提交并推送代码
git add .
git commit -m "修改子模块仓库地址"
git push4.4 确认 Commit ID 更新
代码推送完毕后,进入你Fork 后的 rustdesk 仓库的 libs 目录下,查看 hbb_common 后面的 commit id,确保它是3.2提到的b8d80ca(这个值每个人的是不同的),否则请回到上面的步骤重新检查是否遗漏了了某个操作。
5. 触发 GitHub Action 构建
5.1 创建 Tag
在本地 rustdesk 仓库中创建一个新 tag,例如 1.3.9,请使用 固定格式 (如 1.3.9 或 v1.3.9),以便于自动匹配构建规则。
git tag -a 1.3.9 -m "修改内置服务器和 key"5.2 触发 GitHub Actions 构建
在 rustdesk 仓库中,进入 Actions 页面,点击下面图中的按钮启用自动构建。启用后回到本地rustdesk代码中使用下面的命令将tag推送到Github后将自动开始构建。
git push --tags5.3 下载构建好的客户端
Tag推送完毕后会出现下面的构建进度。
等待 Action 执行完成后(时间比较长,一个半小时左右才能全部构建完成),进入 Releases 页面,即可下载构建好的客户端并使用。
下面是网友创建的QQ交流群,如有需要可加入一起讨论1065475191














我Actions的tag跟nightly构建,Windows的exe安装包都是失败的,是什么原因啊
是在签名那一步失败了吗?编辑下.github/workflows/flutter-build.yml,在48行后面有个-2删掉他然后git提交下代码再重新构建看下
大佬可以研究一下这个 rustdesk 客户端。
作者部署的(base64解码得地址): aHR0cHM6Ly9yZGdlbi5jcmF5b25lYXRlci5vcmcv
源码(github): bryangerlach/rdgen
公司的安全软件会识别rustdesk远程桌面然后禁止运行,我想改一改比如进程名、描述、等重新编译一份新的程序让安全软件无法识别rustdesk特征,绕过禁止运行。如何修改?
这个比较复杂,建议加群问下群里的大佬们。
大佬,怎么禁止更新啊
更新提示吗?hbb_common里面lib.rs文件的version_check_request方法中的429行有一个https://api.rustdesk.com/version/latest地址,随便改成一个不存在的地址应该就没有提示了
有谁知道添加默认配置 “允许远程修改配置”的这个选项的源码在哪里么,我想编译客户端,默认就允许远程修改配置!
可以试试用 rustdesk 客户端生成器。看了下有这个功能。
作者部署的(base64解码得地址): aHR0cHM6Ly9yZGdlbi5jcmF5b25lYXRlci5vcmcv
源码(github): bryangerlach/rdgen
感谢有你。必须是大哥。
请问为什么我按照全部操作完成后 我的rustdesk中的lib没有我的hbb_common
检查下操作步骤,lib下面hbb_common的id变更了就没问题。你只git clone肯定是不会拉取子模块的代码的
如果导入到私有仓库,编译的时候会报错,不知道是什么原因
是有仓库得自己看如何修改workflows的构建流程,看下拉取github代码时候添加认证才行。简单点你先设置成公共库,编译完成以后在设置层私有库就好了
谢谢大佬的保姆教程。互联网共享精神万岁~
感谢分享!