V2EX 20小时前
[分享发现] 使用 github action 编译自定义 rustdesk 客户端指南(内置服务器信息、内置固定密码、内置自定义 api 服务器)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了如何通过修改 RustDesk 源代码,并结合自托管服务器,构建个性化的远程桌面客户端。文章详细介绍了 fork 项目、修改配置文件、替换子模块、使用 GitHub Actions 编译等关键步骤,实现了自定义服务器地址、固定被控端密码等功能。最终,用户可以获得一个专属的 RustDesk 客户端,满足个性化需求。

🛠️ Fork 并修改 RustDesk 项目:用户需要 fork `rustdesk/hbb_common` 和 `rustdesk/rustdesk` 两个项目,并导入到自己的 GitHub 仓库。在 `hbb_common` 项目中,需要修改 `src/config.rs` 文件中的服务器地址和密钥,以及设置被控端固定密码。

⚙️ 配置 hbb_common 仓库:在本地克隆 `hbb_common` 仓库后,修改 `src/config.rs` 文件中的服务器地址和密钥,将 `HARD_SETTINGS` 字段替换为包含固定被控端密码的代码块。修改完成后,将更改 push 到 GitHub 仓库。

🔗 修改 rustdesk 仓库并添加子模块:在本地克隆 `rustdesk` 仓库,删除官方的 `hbb_common` 子模块,并添加自己修改过的 `hbb_common` 子模块。同时,修改 `src/common.rs` 文件中的 API 地址,替换为自己的地址。

🚀 使用 GitHub Actions 编译:在 `rustdesk` 项目中,配置 GitHub Actions 允许所有操作。在本地仓库创建一个 tag,并 push 到远程仓库。然后在 Actions 页面运行 Full Flutter CI 工作流程,选择创建的标签,编译完成后即可在 Releases 页面下载自定义的 RustDesk 客户端。

为何青睐 rustdesk

远程功能刚需,parsec 近期总是延迟莫名爆表,故而转投 rustdesk 。在搭建了自己的信号、中继服务器和第三方 api 以后,无比心水官方付费的自定义客户端功能,因此采用了本篇的廉价 0 元方案。

前期准备

    会使用 git 远程连接 github 仓库,并会简单的 git push 指令已搭建好 rustdesk 自托管服务器和 api 服务器本指南适用于目前最新的 1.4.0 版本

操作指南

    fork 或者 import rustdesk/hbb_common 和 rustdesk/rustdesk 这两个项目(建议 import 并设置不公开,因为后面如果需要固定被控端密码的话,你的密码会以明文的形式公开在自己名下的仓库中)针对 hbb_common 仓库的操作git clone 你自己名下的 hbb_common 仓库到本地,在 src/config.rs 中修改 RSENDZVOUS_SERVER 字段为自己的服务器地址,修改 RS_PUB_KEY 字段为自己的服务器 key (简单的替换即可)

还是 src/config.rs 文件,找到 HARD_SETTINGS 字段将那一整行替换为如下代码块:

 pub static ref HARD_SETTINGS: RwLock<HashMap<String, String>> = {        let mut map = HashMap::new();        map.insert("password".to_string(), "<明文填写你要固定的被控端密码>".to_string());        RwLock::new(map)    };

最后,将以上所有调整 push 到 github 仓库( hbb_common 仓库的相关改动直接在网页修改也可以)

    针对 rustdesk 仓库的操作git clone 你自己名下的 rustdesk 仓库到本地,首先删除官方源码中的引用 hbb_common 子模块(直接在本地删除 libs/hbb_common 那个空文件夹即可)cd 到本地 rustdesk 仓库根目录,添加上面自己修改过的 hbb_common 子模块
git submodule add https://github.com/<你自己的 github 用户名>/hbb_common libs/hbb_common

替换过子模块后 push ,再输一次如下指令强制更新子模块

git submodule sync

查找到 rustdesk 仓库中 src/common.rs 文件的 get_custom_rendezvous_server 这个函数,下面有个官方的 api 地址,将其替换成自己的,最后 push (这一步其实也可以直接在网页操作)

对两个仓库所作的修改完毕,务必记得一定要 push 到 github 上自己名下的仓库!!!

    使用 github action 在线编译在<自己名下的>/rustdesk 项目,找到 Settings -> Actions -> General ,确保勾选 Allow all actions and reusable workflows 和 Read and write permissions 两项

回到本地 rustdesk 仓库,创建一个 tag

git tag -a <自己拟一个 tag 名> -m "这是我的自定义客户端 tag"

在<自己名下的>/rustdesk 项目,找到 Actions ,点击"i understand xxxx"那个按钮

回到本地 rustdesk 仓库,输入

git push --tags

将刚才新创建的标签同步到远程仓库

在 actions 页找到 Full Flutter CI ,选择"run workflow"并点开 branch 下拉,选择刚才创建的标签

然后,愉快的开始 run ,等跑完去 releases 就能下到自己的专属 rustdesk 客户端啦~

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RustDesk 远程桌面 自定义客户端 GitHub Actions
相关文章