远程桌面软件有很多,比如QQ远程协助、向日葵、ToDesk、TeamViewer等,但是都用注册后才可以使用,
所以我选择了自建服务器和客户端,不用登录不用安装即可使用,使用开源的远程桌面软件 RustDesk.
服务端部署
这次直接使用服务端基于S6的镜像进行搭建,所以不用构建两个容器,它会自己帮我们管理 RustDesk 的ID服务和中继服务。
https://github.com/rustdesk/rustdesk-server#s6-overlay-based-images (S6版叠加单服务)
我使用的图形界面管理docker
添加模板->添加自定义模板
模板内容,docker-compose file,下面的rustdesk.example.com替换成你自己的域名
version: '3' services: rustdesk-server: container_name: rustdesk-server ports: - 21115:21115 - 21116:21116 - 21116:21116/udp - 21117:21117 - 21118:21118 - 21119:21119 image: rustdesk/rustdesk-server-s6:latest environment: - "RELAY=rustdesk.example.com:21117" - "ENCRYPTED_ONLY=1" volumes: - ./data:/data restart: unless-stopped
添加好后,进入
点部署堆栈,等待部署完成
要实现外网使用,所以在路由器上还需要做下端口映射
注册和中继端口需要映射的:21116、21117、WEB客户端使用的:21118、21119,如果你没有WEB客户端可以不用对外映射
在Linux系统里找到KEY文件,作为控制端的时候需要使用,被控端不需要填写
下载客户端就可以使用了,下载地址:https://github.com/rustdesk/rustdesk/releases/tag/1.3.1
客户端配置
配置中继
连接成功
生成自己的客户端
使用官方客户端首次都需要配置服务器地址和密钥,对我来说非常不友好,不利于分享,还可能暴露服务器信息和密钥,存在安全隐患。
所以这次我们根据 RustDesk 开源项目构建属于自己的客户端软件,把服务端信息直接写入客户端,做到开箱即用,最大的好处是可以生成被控端,给别人远程解决问题时,只给对方被控端就行了.
在浏览器中打开客户端的开源项目地址。(客户端和服务端是不同的两个项目,不要搞混了)
利用 Github Actions 编译 RustDesk 客户端
打开客户端地址,并点击右上角的Fork按钮。
https://github.com/rustdesk/rustdesk
把代码Fork到自己的仓库。(去掉仅copy the master 分支,可以克隆所有分支代码)
Fork完毕后,点击右上角的 Settings 进入到设置界面,新增 Actions 的密钥。
1.Name 输入RENDEZVOUS_SERVER,Secret 输入我们群晖的DDNS域名。(不要加端口号)
2.再增加一个密钥。Name 输入RS_PUB_KEY,Secret 输入服务端映射data目录下pub文件的内容。(客户端里填写的KEY内容)
注:如果你需要把客户端给别人使用就不要把KEY编进去,这样生成的客户端就只能成为被控端,不会让人白漂你的服务器
接下来就运行 Actions。点击 Actions 选项,可以看到左侧有很多 workflows。点击 Flutter Tag Build ,选择Run workflow,找到Tags下最新的版本。
最后点击绿色的Run workflow按钮就会自动进行编译。
稍等片刻,列表中就会出现一条记录,显示 workflow 正在运行,我们可以点击记录进到详情页查看编译的状态。
整个编译过程大概需要一小时,借着这个时间,我们来简单了解下前面服务器的配置是如何写到代码中的。
可以看到 flutter-tag.yml 调用了 flutter-build.yml 脚本。
从 flutter-build.yml 脚本中可以看到它读取了secrets.RS_PUB_KEY、secrets.RENDEZVOUS_SERVER等其他配置。这些带有secrets.开头的都是引用的前面Settings下Actions选项中的secrets。
workflow 运行完成后会自动把编译好的各个客户端发布到 Releases 界面。
在Releases 界面下载并安装客户端后,打开首页可以发现状态直接显示为就绪。
打开设置,可以发现ID/中继服务器的配置为空。说明服务端信息已经被编译到了客户端。
MacOS 上可能出现的的问题,用 Github Actions 编译的dmg程序在Mac上始终无法打开,排查后发现应该是 workflow 脚本中的证书导致的。
默认的 workflow 脚本中有关于苹果开发者证书相关配置,如果没有上传相关证书就会导致无法打开,所以我们在 Mac 上安装完客户端后,需要重新对APP进行签名。
签名的代码也非常简单,只需在终端执行如下命令即可。
codesign -s - --deep --force --timestamp=none /Applications/RustDesk.app
常见问题:
在Windows上重新安装RustDesk并清除配置记录,CMD里面执行:
rmdir /s /q %APPDATA%\RustDesk
安装后的RustDesk,发现每次打开软件,服务没有启动,要手动启动,在Rustesk的快捷方式,右键-属性,在后面加上一行,
--install-service -wait -Verbose,变成下面,以后打开Rustesk就会自动开启服务了
开机自启
复制RustDesk快捷方式到
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
目录下即可开机启动,快捷方式名称不能是“RustDesk Tray”。
本文为 小风原创文章,转载无需和我联系,但请注明来自 小风博客www.hotxf.com
墨殇:请问如何把控制密码和修改设置的pin码加到变量里,并且开启需要pin码才能修改设置?
2025-01-21 09:42:27 回复