最近使用了一段时间后,发现Rustdesk是真的很好用,有了他之后我再也不用看ToDesk脸色行事了。自建服务器下画质、稳定性啥的都没话说。但美中不足的是,很多功能只能在PRO版本中提供,免费版的不带这个功能。正好这段时间裙下孤魂大佬推出了Rustdesk Server的套件,补上了API Server部分,可以在API服务器上看到相关客户端信息,自此完全体Rustdesk已经近在咫尺了。
一、需求
但每个人都有不同的需求,像我从事GPU虚拟化工作,一启动就是几十台虚拟机,如果挨个进去设置,将是非常费力的事情,那这里我例举了几个需求:
客户端内置 ID服务器;(安装后客户端可以直接连接我指定的ID服务器)
客户端内置 服务器Key
客户端内置 中继服务器
客户端内置 API服务器;(安装后客户端可以主动连接API服务器,在API服务器上可以看到相关的客户端信息)
客户端内置 固定连接密码;(安装后客户端里面会有一个固定密码,通过API服务器看到ID后,本地可通过ID+固定密码连接到客户端上)
安装包需要是一个exe,这样子方便部署。
但这样子打包的客户端程序,切记需要自己使用,因为内置了自己的相关服务器信息。请注意,你的上述信息千万不要泄露出去,不然会很麻烦。
二、服务器配置
2.1 网络配置
这里你需要预先准备一个域名,并将其指定到你的群晖的IP地址上,同时需要映射21114~21119这几个端口,这个教程很多,这里就先略过了,实在有必要再补充。
2.2 套件安装和配置
服务器是建立在群晖DSM 7.2.1系统中,是什么机型没有关系,都可以使用。这里服务器我就直接用裙下孤魂大佬修改的群晖套件默认账号: admin ;密码:admin,套件在矿神源中可直接下载到,
先添加矿神源(如果添加了的可以忽略掉这一步)
安装RustDesk服务器套件
配置套件
这里我输入的是演示域名,这里请输入你正确的域名,请不要照抄。 点击右下方的用户管理,可以进入到管理界面,此时可以修改密码:
这里通过上面的设置,我们有三个下面重要信息:
API服务器:你输入的域名和端口,上面的例子的话就是http://rd.example.com:21114。
ID服务器:你输入的域名,上面的例子的话就是rd.example.com。
KEY:套件中给的key,或者你自己定义的key,这里我的是RwsshqgwxIzcIVnIT6NZCR4jLgDRS+93D+vWBBHY9PQ=.
这三个信息下面编译客户端的时候会用到,请记录好,别出错了。
三、客户端编译
我这里准备遵循Rustdesk软件的设计流程去做,借助Github Actions整个改动方法非常简单,分为两个步骤:
Github Actions中添加对应的Secret Key。
遵循软件设计,小幅度修改代码,将固定密码植入到HARD_SETTINGS中。
3.1 github action设置
开始之前,我们需要确保你有github账户,且大致知道Github Actions是干啥的(如果不知道可以先问问通义千问、ChatGPT等)。编译过程中会需要提交内置密码的改动,为了更安全,所以这里通过导入代码库为私有的方式进行。
创建一个rustdesk_private项目,导入 rustdesk 这个项目为private项目(项目导入时间比较长,请耐心等待)。
点击Actions,并启用相关功能:
配置Actions两项权限
设置刚才创建的rustdesk_private项目的Actions secrets。
这里我们创建三组 Name : Secret,注意,这里需要根据你实际配置的服务器进行配置:
上面服务器中设置的KEY: RS_PUB_KEY : RwsshqgwxIzcIVnIT6NZCR4jLgDRS+93D+vWBBHY9PQ=
上面服务器中设置的ID服务器: RENDEZVOUS_SERVER : rd.example.com
上面服务器中设置的API服务器: API_SERVER : http://rd.example.com:21114
此处填写的都是根据服务器配置来的,需要根据实际情况填写,不能直接照抄我上面的配置。 三组建完过后:
3.2 修改代码内置固定连接密码
现在时间是2024.10.11,官网上下载到的客户端版本是1.3.1,我们知道master的代码提交比较密集,改动测试比较少,我担心可能会有什么bug,这里我并不准备使用master分支代码进行修改,这里基于1.3.1进行修改。(将来的有更新的版本,可考虑基于更新的版本进行此改动)
3.2.1 创建基于1.3.1版本的新分支
切换到1.3.1版本:
点击任意一个文件:
用github.dev打开文件此处耗时比较长,耐心等待:
创建分支
填写分支名,填写完成后敲回车,这里我写的是1.3.1-fixed。 看到下图后表示分支创建完毕了
3.2.3 基于新创建的分支提交改动
回到我们刚才新建的repo了,这里我们切换到刚才创建的1.3.1-fixed这个分支:
此时可以看到我们新提交的这个commit:
修改文件,创建PR
我们要改的文件路径在libs/hbb_common/src/config.rs这个路径下:
点击修改这个文件:
大概在73行左右,我们修改这个:
为下面这个:
pub static ref HARD_SETTINGS: RwLock<HashMap<String, String>> = {
let mut map = HashMap::new();
map.insert("password".to_string(), "aa123456".to_string());
RwLock::new(map)
};
请注意!!!!,上面代码中的的aa123456就是固定的连接密码,此处只是演示,需要改为你自己的密码,请不要用这么简单的密码。
修改完成后,点击Commit changes:
稍等一会儿会自动开始CI build:
3.3 触发Github Actions编包
注意:免费的Private仓库的Actions是有时间限制的,请不要多次重复编译将免费时间耗尽。
提交重新build
先点击Actions取消所有当前的CI流程: 把已经运行的两个都取消了。
再运行下面这个nightly build
等待这个任务完成,编译时间比较长,可能长达数个小时,请耐心等待:
3.4 收获客户端
在漫长的等待之后,这里终于大部分都编译好了。
这个就是我们需要的windows客户端。
这里在一个虚拟机中安装后,不需要进行任何设置,我们就可以通过API 服务器后台看到的ID和我们设定好的固定密码就可以正常登陆上去了。
虚拟机测试完成!成功通过验收
一切做完过后,可以考虑删除这个仓库,或者去Actions中找到Flutter Nightly Build,点击右上角的"...",选择Disable workflow,禁用这个定时触发的CI任务。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)