最近使用了一段时间后,发现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任务。
感谢
如果你想交流心得,欢迎来 新QQ群 或者 TG群 一起吹水~(老Q群因不明原因被封,所以只加Q群有概率迷路)
写在最后
非常感谢你能看到这里,皮蛋熊已经尽力把教程做的完善,如果你觉得皮蛋熊的努力值得肯定,皮蛋熊非常感谢你的支持。
如果皮蛋熊的努力解决了你的问题,不妨请皮蛋熊喝杯咖啡犒劳一下。
如果远方的朋友实力雄厚,知道皮蛋熊更喜欢吃烤鸭,想要犒劳皮蛋熊吃烤鸭:
or paypal: https://www.paypal.com/paypalme/pdbearme
在此,无比感谢愿意请皮蛋熊吃烤鸭超过88R的朋友,请凭记录直接加皮蛋熊Q好友([email protected]) 或者 TG好友(@dpawsbearr),皮蛋熊将会邀请你到体验/测试群中,你将获得额外的支持包括但不限于:
- 皮蛋熊将会尽力抽出时间解决你使用显卡、NAS过程中的疑惑,问题等。
- 额外获得vGPU/GPU AI监控驱动的技术支持: 详见此网站
- 群晖监控相关问题的答疑。
- 优先支持你提出的特性适配、问题修复等。
- 你有什么好玩的设备需要某些内核驱动级别的支持,皮蛋熊也会优先挤出时间进行学习适配。
- 不同厂家显卡的探索支持。
评论区