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

 

本文详细介绍了如何基于RustDesk开源项目,通过修改源码、自建服务器和利用GitHub Actions,定制个性化的远程桌面客户端。文章首先阐述了选择RustDesk的原因,并逐步指导读者进行Fork、修改配置文件、替换子模块、使用GitHub Actions编译等操作,最终生成自定义的RustDesk客户端。整个过程注重细节,步骤清晰,适合有一定Git和编程基础的用户,实现对RustDesk的深度定制,满足个性化需求。

🛠️ **环境准备与项目获取**:首先,你需要fork或import `rustdesk/hbb_common` 和 `rustdesk/rustdesk` 两个项目到你自己的GitHub仓库中,为后续的修改和编译做准备。确保你已经搭建好RustDesk自托管服务器和API服务器。

⚙️ **修改hbb_common仓库配置**:在本地clone你的 `hbb_common` 仓库,修改 `src/config.rs` 文件中的服务器地址和密钥,使其指向你的自建服务器。同时,通过修改 `HARD_SETTINGS` 字段,可以固定被控端的密码,方便管理。

🔄 **修改rustdesk仓库配置**:在本地clone你的 `rustdesk` 仓库,删除官方引用的 `hbb_common` 子模块,并添加你自己修改后的子模块。修改 `src/common.rs` 文件中的API地址,指向你的自建API服务器。

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

为何青睐 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 自托管
相关文章