干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

2024-10-03 11:50:06 89点赞 1046收藏 60评论

在上一篇文章中,我们通过最新的 S6-overlay 基础镜像完成了 RustDesk 服务端的搭建,并且使用了官方编译好的客户端实现了免费、安全的远程控制。

使用官方客户端首次都需要配置服务器地址和密钥,对家人来说非常不友好,不利于分享,还可能暴露服务器信息和密钥,存在安全隐患。

所以这次我们根据 RustDesk 开源项目构建属于自己的客户端软件,把服务端信息直接写入客户端,做到开箱即用!

PS:如果没有搭建过 RustDesk 服务端的小伙伴可以先看前面一篇文章完成服务端的搭建。

客户端

在浏览器中打开客户端的开源项目地址。(客户端和服务端是不同的两个项目,不要搞混了)

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

根据文档可以发现 RustDesk 提供了多重编译客户端的方式,比如 Linux、Docker,这些编译方式在编译速度上可能较快,但是操作起来十分复杂。

一般大型开源项目都会提供基于 Github Actions 的 workflows 脚本,利用这些脚本我们可以直接在 利用 Github 的服务器直接编译写好的代码,这样无需在本地配置复杂的编译环境,省时省力。

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

所以下面直接演示利用 Github Actions 编译 RustDesk 客户端。

Github 编译

🔻 打开客户端地址,并点击右上角的Fork按钮。

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

🔻 Fork完毕后的样子。

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

整个编译过程大概需要一小时,借着这个时间,我们来简单了解下前面服务器的配置是如何写到代码中的。

🔻 点击 Flutter Tag Build 下面的链接可以查看 workflow 的源代码。

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

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

干掉ToDesk和TeamViewer,群晖部署远程控制服务,编译属于自己的客户端(二)

后期如果想要控制其他设备,只需下载对应平台的客户端即可,再也不用单独给每个客户端配置服务器信息了。

后记

经过我多次在不同 MacOS 上的测试,发现在利用 Github Actions 编译的dmg程序在Mac上始终无法打开,排查后发现应该是 workflow 脚本中的证书导致的。

默认的 workflow 脚本中有关于苹果开发者证书相关配置,如果没有上传相关证书就会导致无法打开,所以我们在 Mac 上安装完客户端后,需要重新对APP进行签名。

签名的代码也非常简单,只需在终端执行如下命令即可。

codesign -s - --deep --force --timestamp=none /Applications/RustDesk.app

我是老宁

一个热爱技术的程序员和极客,群晖NAS深度玩家!

专注NAS相关技术分享,原创!干货!

觉得老宁的文章对你有帮助,记得点赞、收藏、加关注

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
60评论

  • 精彩
  • 最新
  • 控制win或许不是最好的方法,但是控制安卓,我觉得是最好的免费方案。

    校验提示文案

    提交
    安卓控制起来很流畅

    校验提示文案

    提交
    请教控制win最好方案是什么?没有ipv4公网、有ipv6的情况下

    校验提示文案

    提交
    收起所有回复
  • 部署过一次,太占用资源了,老机器吃不消,还连带着一直出现网络问题,最后放弃了。简单的用用向日葵就好了。

    校验提示文案

    提交
    没理解,是占用服务端的资源还是被控电脑的资源

    校验提示文案

    提交
    我自建的用得是非常流量,体验最佳的远控软件,比向日..,todesk等好多了,前提是自建独家使用

    校验提示文案

    提交
    收起所有回复
  • 网易的gameviwei超好用

    校验提示文案

    提交
    改天去试试 [张小草_心心]

    校验提示文案

    提交
    已用了半年,很快

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 公开库生成的客户端会不会被随意下载别人使用。不晓得为啥改为私有库的按钮按不了

    校验提示文案

    提交
    好问题 [赞一个]

    校验提示文案

    提交
    会,编译了把release删了

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 怎么才能不用对方确认就控制对方电脑?就像远程桌面

    校验提示文案

    提交
    搞个固定密码

    校验提示文案

    提交
    目标windows系统有登录密码也能连上吗?

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 大佬,我想问一下能编译1.19版本的吗?1.19连接都是毫秒级别的,而且可以用api服务器,不报病毒,现在新版本编译好以后,连接速度有点慢而且杀毒软件报病毒

    校验提示文案

    提交
    可以的,有个脚本可以指定tag

    校验提示文案

    提交
    什么脚本,麻烦指点一下,需要1.1.9

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 是不是没有安卓的?另外原作者更新后,会同步更新到自己的fork吗?

    校验提示文案

    提交
    要自己同步下

    校验提示文案

    提交
    好的 谢谢

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 感谢,这应该是最适合小白的方法了。

    校验提示文案

    提交
  • 问一下,和向日葵,anydesk那些远程工具有啥区别?

    校验提示文案

    提交
    玩群晖的都是小众,折腾而已。九成九的人用不上。win的功能绝大部分人都够了。 [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 客户端的开源项目地址 去看看

    校验提示文案

    提交
  • 看标题就知道是rustdesk,不过只适用于私人,比如突然想远程客户还得老牌

    校验提示文案

    提交
  • 大佬,现在1.3.8版本的编译不了了,能否出个新的教程教一下新版怎么编译,感谢!

    校验提示文案

    提交
    同求,我也发现现在好像无效了,新的脚本里不出现RS_PUB_KEY了

    校验提示文案

    提交
    收起所有回复
  • 跨运营商连不上,显示在线也白搭

    校验提示文案

    提交
    不至于吧

    校验提示文案

    提交
    What??我电信连联通没有问题啊!倒是还没连过移动!

    校验提示文案

    提交
    收起所有回复
  • 没有公网有啥用

    校验提示文案

    提交
    那是你自己的问题了

    校验提示文案

    提交
    收起所有回复
  • 有ddns,直接远程桌面不好?

    校验提示文案

    提交
  • 不能代理。。

    校验提示文案

    提交
  • 有专线用什么最合适?

    校验提示文案

    提交
    搭ipsec vpn然后mstsc

    校验提示文案

    提交
    收起所有回复
  • 国内外互联,有啥好推荐的吗?

    校验提示文案

    提交
  • 内网穿透+微软远程桌面不比这个好用。rustdesk会莫名其妙的卡顿

    校验提示文案

    提交
  • 正是我想要的

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.0K
扫一下,分享更方便,购买更轻松