侧边栏壁纸
博主头像
蔚然小站博主等级

未来会有的,不要辜负了梦想

  • 累计撰写 39 篇文章
  • 累计创建 15 个标签
  • 累计收到 63 条评论

目 录CONTENT

文章目录

有手就行,编译Rustdesk内置Server、Key和连接密码,一键部署!小白也不怕了!

皮蛋熊
2024-10-13 / 10 评论 / 11 点赞 / 3758 阅读 / 11312 字
温馨提示:
本文最后更新于 2024-10-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

最近使用了一段时间后,发现Rustdesk是真的很好用,有了他之后我再也不用看ToDesk脸色行事了。自建服务器下画质、稳定性啥的都没话说。但美中不足的是,很多功能只能在PRO版本中提供,免费版的不带这个功能。正好这段时间裙下孤魂大佬推出了Rustdesk Server的套件,补上了API Server部分,可以在API服务器上看到相关客户端信息,自此完全体Rustdesk已经近在咫尺了。

一、需求

但每个人都有不同的需求,像我从事GPU虚拟化工作,一启动就是几十台虚拟机,如果挨个进去设置,将是非常费力的事情,那这里我例举了几个需求:

  1. 客户端内置 ID服务器;(安装后客户端可以直接连接我指定的ID服务器
  2. 客户端内置 服务器Key
  3. 客户端内置 中继服务器
  4. 客户端内置 API服务器;(安装后客户端可以主动连接API服务器,在API服务器上可以看到相关的客户端信息)
  5. 客户端内置 固定连接密码;(安装后客户端里面会有一个固定密码,通过API服务器看到ID后,本地可通过ID+固定密码连接到客户端上)
  6. 安装包需要是一个exe,这样子方便部署。

但这样子打包的客户端程序,切记需要自己使用,因为内置了自己的相关服务器信息。请注意,你的上述信息千万不要泄露出去,不然会很麻烦。

二、服务器配置

2.1 网络配置

这里你需要预先准备一个域名,并将其指定到你的群晖的IP地址上,同时需要映射21114~21119这几个端口,这个教程很多,这里就先略过了,实在有必要再补充。

2.2 套件安装和配置

服务器是建立在群晖DSM 7.2.1系统中,是什么机型没有关系,都可以使用。这里服务器我就直接用裙下孤魂大佬修改的群晖套件默认账号: admin ;密码:admin,套件在矿神源中可直接下载到,

  • 先添加矿神源(如果添加了的可以忽略掉这一步) 3d275b8624fd5ed5cb74d790012b18ba.png 1fa233b82154b18ba7b97b4cb0b7eba9.png
  • 安装RustDesk服务器套件 6962dcd6e8067451819243acf57ce1f4.png
  • 配置套件 a71c12face66bc822884e710427b70cb.png 这里我输入的是演示域名,这里请输入你正确的域名,请不要照抄。 点击右下方的用户管理,可以进入到管理界面,此时可以修改密码: 23b34a26bf21841d268aa404cf0bd0b2.png 这里通过上面的设置,我们有三个下面重要信息:
  1. API服务器:你输入的域名和端口,上面的例子的话就是http://rd.example.com:21114
  2. ID服务器:你输入的域名,上面的例子的话就是rd.example.com
  3. KEY:套件中给的key,或者你自己定义的key,这里我的是RwsshqgwxIzcIVnIT6NZCR4jLgDRS+93D+vWBBHY9PQ=.

这三个信息下面编译客户端的时候会用到,请记录好,别出错了。

三、客户端编译

我这里准备遵循Rustdesk软件的设计流程去做,借助Github Actions整个改动方法非常简单,分为两个步骤:

  1. Github Actions中添加对应的Secret Key
  2. 遵循软件设计,小幅度修改代码,将固定密码植入到HARD_SETTINGS中。

3.1 github action设置

开始之前,我们需要确保你有github账户,且大致知道Github Actions是干啥的(如果不知道可以先问问通义千问、ChatGPT等)。编译过程中会需要提交内置密码的改动,为了更安全,所以这里通过导入代码库为私有的方式进行。

  • 创建一个rustdesk_private项目,导入 rustdesk 这个项目为private项目(项目导入时间比较长,请耐心等待)。

e514f6e3df2e6b0dfc2025aff4211a4c.png 45abbe72e1ae6bfff7c81c46936aa5d9.png 30f57a451778f1de97931e7d7c153876.png

  • 点击Actions,并启用相关功能:

1544b0492b89ec4ddbc93e2c796623a6.png

  • 配置Actions两项权限

188332af6f8af9e1c8bc69a5d67f7dbc.png

  • 设置刚才创建的rustdesk_private项目的Actions secrets

6426c45ed627947985cfcbc2e521064c.png e9cfd18980c070ef1cd12745a4983288.png 这里我们创建三组 Name : Secret,注意,这里需要根据你实际配置的服务器进行配置:

  • 上面服务器中设置的KEY: RS_PUB_KEYRwsshqgwxIzcIVnIT6NZCR4jLgDRS+93D+vWBBHY9PQ=
  • 上面服务器中设置的ID服务器: RENDEZVOUS_SERVER : rd.example.com
  • 上面服务器中设置的API服务器: API_SERVER : http://rd.example.com:21114

此处填写的都是根据服务器配置来的,需要根据实际情况填写,不能直接照抄我上面的配置。 三组建完过后: d9c81f6c30918b25ecd3112da7817fde.png

3.2 修改代码内置固定连接密码

现在时间是2024.10.11,官网上下载到的客户端版本是1.3.1,我们知道master的代码提交比较密集,改动测试比较少,我担心可能会有什么bug,这里我并不准备使用master分支代码进行修改,这里基于1.3.1进行修改。(将来的有更新的版本,可考虑基于更新的版本进行此改动)

3.2.1 创建基于1.3.1版本的新分支

  • 切换到1.3.1版本:

6d9c16b68004717ef865fee07853c27a.png

  • 点击任意一个文件:

dd20e2ce936984f34fcee79f91d00abe.png

  • github.dev打开文件此处耗时比较长,耐心等待

259ba3f401659df87ddbd8e78eff0f17.png

  • 创建分支

194f7b5b8ee63afb8ae2d45f93cf72fb.png 8c063dd1f1474c4d3263cfb3dfdcdb67.png 1bc8020665044b0864cf7ee84bb80ced.png dbe0e7edde5bf050b454f48e34206738.png 填写分支名,填写完成后敲回车,这里我写的是1.3.1-fixed。 看到下图后表示分支创建完毕了 6f1d65f5f16a3903ddd7812e6ec822c4.png

3.2.3 基于新创建的分支提交改动

回到我们刚才新建的repo了,这里我们切换到刚才创建的1.3.1-fixed这个分支: e727cf0cf7850056da533f242ca2e88e.png 此时可以看到我们新提交的这个commit: 146bf56d7dde1cb0ba0563b22b83049c.png

  • 修改文件,创建PR

我们要改的文件路径在libs/hbb_common/src/config.rs这个路径下: 4b3b65aca7b7b910846cf16d86ad9835.png 149f887ce8a9b40d6d2dbb5cead93277.png 点击修改这个文件: 93327bb11a6786a6dc90aea53b9ee7b9.png 大概在73行左右,我们修改这个: 473dbf6f247f1b4bb33a9056de0befad.png 为下面这个:

 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 changesbf9d479f5b0a8c5791f632dbefc43932.png e39200e5fe6f06b03c97a50d1e56f10b.png cd6faee80ef7b28269aa7fdd2917fb0c.png 稍等一会儿会自动开始CI build0495615c6f8e24b0769953ac5085801b.png

3.3 触发Github Actions编包

注意:免费的Private仓库的Actions是有时间限制的,请不要多次重复编译将免费时间耗尽。

  • 提交重新build

先点击Actions取消所有当前的CI流程: 把已经运行的两个都取消了。 368ca0f04dc87dffd2598871ed833fe8.png

再运行下面这个nightly build

8266879350d69e1e30a99442ef53dc2d.png a8f03889ec47e839df47157688d00fe6.png

等待这个任务完成,编译时间比较长,可能长达数个小时,请耐心等待: eddeb7beede8a3f7b236c0ac2d0584c5.png 7d6757afaa854ca548225af3f9b6dc21.png

3.4 收获客户端

在漫长的等待之后,这里终于大部分都编译好了。 1c99ec8afc57917de83e2fcc0508c916.png 0a2c97d21df9d321e8b88a8fd016a451.png 这个就是我们需要的windows客户端。 9aaa87ab495021058ddff56203accc53.png

这里在一个虚拟机中安装后,不需要进行任何设置,我们就可以通过API 服务器后台看到的ID和我们设定好的固定密码就可以正常登陆上去了。 fdf14f7c7c1499cd418695be0b99c225 1ddda94541d896280f893a94a543c81a.png

虚拟机测试完成!成功通过验收

一切做完过后,可以考虑删除这个仓库,或者去Actions中找到Flutter Nightly Build,点击右上角的"...",选择Disable workflow,禁用这个定时触发的CI任务。

感谢

如果你想交流心得,欢迎来 新QQ群 或者 TG群 一起吹水~(老Q群因不明原因被封,所以只加Q群有概率迷路)

写在最后

非常感谢你能看到这里,皮蛋熊已经尽力把教程做的完善,如果你觉得皮蛋熊的努力值得肯定,皮蛋熊非常感谢你的支持。


如果皮蛋熊的努力解决了你的问题,不妨请皮蛋熊喝杯咖啡犒劳一下。

wechat-caffe.png


如果远方的朋友实力雄厚,知道皮蛋熊更喜欢吃烤鸭,想要犒劳皮蛋熊吃烤鸭wechat-kaoyano88.png

or paypal: https://www.paypal.com/paypalme/pdbearme

在此,无比感谢愿意请皮蛋熊吃烤鸭超过88R的朋友,请凭记录直接加皮蛋熊Q好友([email protected]) 或者 TG好友(@dpawsbearr),皮蛋熊将会邀请你到体验/测试群中,你将获得额外的支持包括但不限于:

  1. 皮蛋熊将会尽力抽出时间解决你使用显卡、NAS过程中的疑惑,问题等。
  2. 额外获得vGPU/GPU AI监控驱动的技术支持: 详见此网站
  3. 群晖监控相关问题的答疑。
  4. 优先支持你提出的特性适配、问题修复等。
  5. 你有什么好玩的设备需要某些内核驱动级别的支持,皮蛋熊也会优先挤出时间进行学习适配。
  6. 不同厂家显卡的探索支持。

11
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区