干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)
在上一篇文章中,我们通过最新的 S6-overlay 基础镜像完成了 RustDesk 服务端的搭建,并且使用了官方编译好的客户端实现了免费、安全的远程控制。
使用官方客户端首次都需要配置服务器地址和密钥,对家人来说非常不友好,不利于分享,还可能暴露服务器信息和密钥,存在安全隐患。
所以这次我们根据 RustDesk 开源项目构建属于自己的客户端软件,把服务端信息直接写入客户端,做到开箱即用!
PS:如果没有搭建过 RustDesk 服务端的小伙伴可以先看前面一篇文章完成服务端的搭建。
客户端
在浏览器中打开客户端的开源项目地址。(客户端和服务端是不同的两个项目,不要搞混了)

根据文档可以发现 RustDesk 提供了多重编译客户端的方式,比如 Linux、Docker,这些编译方式在编译速度上可能较快,但是操作起来十分复杂。
一般大型开源项目都会提供基于 Github Actions 的 workflows 脚本,利用这些脚本我们可以直接在 利用 Github 的服务器直接编译写好的代码,这样无需在本地配置复杂的编译环境,省时省力。

所以下面直接演示利用 Github Actions 编译 RustDesk 客户端。
Github 编译
🔻 打开客户端地址,并点击右上角的Fork按钮。

🔻 把代码Fork到自己的仓库。(去掉仅copy the master 分支,可以克隆所有分支代码)

🔻 Fork完毕后的样子。

🔻 点击右上角的 Settings 进入到设置界面,新增 Actions 的密钥。

🔻 Name 输入RENDEZVOUS_SERVER,Secret 输入我们群晖的DDNS域名。(不要加端口号)

🔻 再增加一个密钥。Name 输入RS_PUB_KEY,Secret 输入服务端映射data目录下pub文件的内容。(具体可以看前一篇的说明)

🔻 这样就把客户端要连接的服务信息配置到了 Github Actions 的环境变量中,后面运行 Github Actions 脚本的时候就可以直接写入到代码中了。

🔻 接下来就运行 Actions。点击 Actions 选项,可以看到左侧有很多 workflows。

🔻 点击 Flutter Tag Build ,选择Run workflow,找到Tags下最新的版本。(也可以选择nightly)

🔻 最后点击绿色的Run workflow按钮就会自动进行编译。

🔻 稍等片刻,列表中就会出现一条记录,显示 workflow 正在运行。

🔻 我们可以点击记录进到详情页查看编译的状态。

整个编译过程大概需要一小时,借着这个时间,我们来简单了解下前面服务器的配置是如何写到代码中的。
🔻 点击 Flutter Tag Build 下面的链接可以查看 workflow 的源代码。

🔻 可以看到 flutter-tag.yml 调用了 flutter-build.yml 脚本。

🔻 从 flutter-build.yml 脚本中可以看到它读取了secrets.RS_PUB_KEY、secrets.RENDEZVOUS_SERVER等其他配置。这些带有secrets.开头的都是引用的前面Settings下Actions选项中的secrets。

🔻 如果需要每天凌晨都进行客户端的编译,那么可以启用 Flutter Nightly Build 工作流。

🔻 workflow 运行完成后会自动把编译好的各个客户端发布到 Releases 界面。

🔻 在 Releases 界面下载并安装客户端后,打开首页可以发现状态直接显示为就绪。

🔻 打开设置,可以发现ID/中继服务器的配置为空。说明服务端信息已经被编译到了客户端。

后期如果想要控制其他设备,只需下载对应平台的客户端即可,再也不用单独给每个客户端配置服务器信息了。
后记
经过我多次在不同 MacOS 上的测试,发现在利用 Github Actions 编译的dmg程序在Mac上始终无法打开,排查后发现应该是 workflow 脚本中的证书导致的。
默认的 workflow 脚本中有关于苹果开发者证书相关配置,如果没有上传相关证书就会导致无法打开,所以我们在 Mac 上安装完客户端后,需要重新对APP进行签名。
签名的代码也非常简单,只需在终端执行如下命令即可。
codesign -s - --deep --force --timestamp=none /Applications/RustDesk.app
我是老宁
一个热爱技术的程序员和极客,群晖NAS深度玩家!
专注NAS相关技术分享,原创!干货!
觉得老宁的文章对你有帮助,记得点赞、收藏、加关注!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

班尼冒险团
校验提示文案
芒果胖胖
校验提示文案
aboutme
校验提示文案
solekg
校验提示文案
不中奖誓不改名
校验提示文案
crdz
校验提示文案
一口一锅小布丁
校验提示文案
猥琐老梁
校验提示文案
我的评论_
校验提示文案
他们都叫我老宁
校验提示文案
Frozennnnnn
校验提示文案
值友3180691624
校验提示文案
网络咖啡吧
校验提示文案
90后的以后
校验提示文案
值友5715504242
校验提示文案
CupTeen
校验提示文案
小万只
校验提示文案
张贱宝
校验提示文案
二手的垃圾佬
校验提示文案
djzxpg
校验提示文案
djzxpg
校验提示文案
值友3180691624
校验提示文案
值友3280750110
校验提示文案
liuju1
校验提示文案
monife
校验提示文案
tutugreen
校验提示文案
班尼冒险团
校验提示文案
浩淼锋
校验提示文案
值友3267312130
校验提示文案
djzxpg
校验提示文案
芒果胖胖
校验提示文案
二手的垃圾佬
校验提示文案
张贱宝
校验提示文案
一口一锅小布丁
校验提示文案
我的评论_
校验提示文案
crdz
校验提示文案
小万只
校验提示文案
CupTeen
校验提示文案
solekg
校验提示文案
值友5715504242
校验提示文案