前言
RustDesk 是一个开源的远程桌面应用,允许用户自建服务器,以替代 TeamViewer 等远程控制软件。为了方便自建服务的用户快速使用Rustdesk,构建内置自己服务器和key的RustDesk 客户端便成为了广大互联网爱好者的需求。
默认情况下,RustDesk 依赖 hbb_common
作为其基础库,并默认连接到官方服务器。如果你希望使用自己的服务器,则需要修改 hbb_common
代码并让 rustdesk
指向你修改后的 hbb_common
仓库。
本教程将介绍如何利用Github Actions 实现自动构建内置你服务器和key的Rustdesk客户端。
1. 准备工作
在开始之前,请确保你已经安装了 Git,并且拥有一个 GitHub 账户。建议你对 Git 的基本使用有一定了解,以便顺利完成后续操作。
2. Fork Rustdesk仓库
2.1 拉取 Fork 后的代码
请注意,替换仓库地址为你fork后的仓库地址,而不是直接复制我下面的命令
# 可选:如果需要使用代理
# git config --global http.proxy http://127.0.0.1:10808
# git config --global https.proxy http://127.0.0.1:10808
# 拉取仓库代码到本地 请替换为你fork后的仓库地址
git clone https://github.com/irains/hbb_common.git
git clone https://github.com/irains/rustdesk.git
3. 修改 hbb_common代码
打开 hbb_common
仓库下的 src/config.rs
文件,修改 101-102 行 的默认服务器和密钥为你自己的服务器和密钥。
3.1 推送修改后的代码
# 将修改的代码添加到暂存区
git add .
# 将代码提交到本地仓库
git commit -m "修改默认的服务器和 key"
# 将本地仓库代码推送到远程仓库 如果你没有登录过GitHub会要求你登录github
git push
3.2 查看最新提交的 commit ID
git log --oneline
我这里提交后的commit id是b8d80ca,可用于后续验证rustdesk服务器和key是否修改成功
4. 修改 rustdesk 仓库代码
我们切换到克隆下来的rustdesk代码目录下,按照下面的方式修改子模块地址并更新。
4.1 更新 .gitmodules
打开并编辑 .gitmodules
文件,将 url
替换为你Fork后的 hbb_common
仓库地址。
比如我fork后的仓库地址是https://github.com/irains/hbb_common
则将https://github.com/rustdesk/hbb_common
地址换为前面这个地址即可,记住是hbb_common的地址,而不是rustdesk仓库的地址
4.2 更新子模块
将上面修改好的代码保存,执行下面的命令更新子模块到最新的commit id
git submodule init
git submodule sync
git submodule update --remote
4.3 提交并推送代码
git add .
git commit -m "修改子模块仓库地址"
git push
4.4 确认 Commit ID 更新
代码推送完毕后,进入你Fork 后的 rustdesk
仓库的 libs
目录下,查看 hbb_common
后面的 commit id,确保它是3.2提到的b8d80ca
(这个值每个人的是不同的),否则请回到上面的步骤重新检查是否遗漏了了某个操作。
5. 触发 GitHub Action 构建
5.1 创建 Tag
在本地 rustdesk
仓库中创建一个新 tag,例如 1.3.9
,请使用 固定格式 (如 1.3.9
或 v1.3.9
),以便于自动匹配构建规则。
git tag -a 1.3.9 -m "修改内置服务器和 key"
5.2 触发 GitHub Actions 构建
在 rustdesk
仓库中,进入 Actions
页面,点击下面图中的按钮启用自动构建。启用后回到本地rustdesk代码中使用下面的命令将tag推送到Github后将自动开始构建。
git push --tags
5.3 下载构建好的客户端
Tag推送完毕后会出现下面的构建进度。
等待 Action 执行完成后(时间比较长,一个半小时左右才能全部构建完成),进入 Releases
页面,即可下载构建好的客户端并使用。
你好,大佬,有两个问题咨询一下
1.我看config.rs只有server和key,但是我们如果去客户端设置去设置需要配置id服务器中继服务器,这里只需要这一个是吗?
2.修改api服务器在哪里?
3.fork到github无法设为私有,容易泄露自己的服务器信息,本地编译又麻烦有好的办法吗师傅
4.如果我不想设置直接用ip,像官方一下使用域名,是只需要域名解析到使用的ip就行还是需要反向代理到某个端口?
1.在id服务器和中继服务器是同一台服务器的情况下,可以只配置id服务器(不带端口),中继服务器会自动使用id服务器的配置,id服务器默认是21116端口,中继服务器默认是21117端口,所以只需要配置server为ip或者绑定的域名就可以了。不是这两个端口的情况下可能你得自己看下如何修改代码了。
2.api服务器如何修改我在评论区有回复过,你可以翻翻。
3.fork不能设置为私有,你可以先git clone到你本地,然后github创建好仓库,在用git push --mirror 你的仓库地址,把代码推到你新建的仓库。
4.域名a记录解析到ip就行。
感谢大佬,说的太详细了,马上动手实操,因为自己搭建的远程与朋友分享使用,有新的人要用我还得教他们配置,但是我又不想直接暴露自己的服务器ip。
有办法修改名称吗,默认名称英文的不好叫
尝试过,但是打包出来的挺多地方有问题,没仔细研究过,所以你要改的话估计也要踩很多坑。
雨殇大佬我有一个疑惑,为什么我没有同步更新,跑action客户端的版本从1.3.9就到1.4.0了,action不应该是在跑我的源码而不是官方的吗
官方代码就是这样的如果发布了1.3.9版本,他们后续就会把代码里面改成1.4.0版本,也就是你fork过来的代码打包出来的版本一般都比官方发布的大一个小版本,如果你是在想改版本号自己全局搜索代码里面的1.4.0版本号改为1.3.9吧。。
原来是这样,感谢大佬!
大佬你好,请问按照教程编译后,可以编译通过也有包,但是在Mac上打开没反应,可能是什么原因?
打包出来的app没签名,找个软件签名下就好了,比如macwk.com的macos助手。
好的,谢谢
大佬你好,想直接作用于局域网,只用IP连接,需要删除哪些代码?
按理来说局域网用,只需要在局域网搭建一个服务端,然后hbb_common配置都用局域网ip就好了吧。
不过只在局域网使用的话rdp、vnc不是更好的选择吗?
怎么可以把连接密码写死到程序里面
感觉写死不安全就没研究过
我在群辉NAS里面搭建了这个服务了。
但是我按您说的构建完客户端下载安装后我在后台看不到我的客户端,还是要在网络里面配置了才能看到
我是按教程一步步来的,是不是还需要修改什么地方?API地址要修改吗
如果你搭建的有api服务器就需要在客户端设置里面填你的api服务器地址,或者改代码内置在客户端里面,具体在文件rustdesk仓库/src/common.rs文件的937行,将https://admin.rustdesk.com改成你的api服务器地址。
在修改自己的API地址的时候是要带端口吗?
ip:21114?
你没做反代就要
run-ci / i686-pc-windows-msvc (windows-2022)
The process 'C:\Program Files\Git\bin\git.exe' failed with exit code 128
这样报错怎么办呢?
没遇到过,重新试试吧。
感谢分享
我根据您的教程成功编译好了客户端,打开就可以连接上自己的服务器使用,也可以控制连接服务器的其他设备,但是有个问题,如果连接上服务器后,左下角应该是 就绪 两个字,但是这里后面还显示 如果需要更快的连接速度,你可以选择自建服务器 的提示,同时在登陆账户的时候也没办法登陆,哪怕是在网络里填写API服务器也没办法登陆,提示 Unknown Error: ClientException with SocketException: 远程计算机拒绝网络连接。
(OS Error: 远程计算机拒绝网络连接。
, errno = 1225), address = rd.xxx.com, port = 10784, uri=http://rd.xxx.com/api/login这个情况怎么解决。
直接改代码的方式,左下角还有自建提示是正常的,只有在设置里面填了服务器信息才不显示自建的字样。api服务器的问题你检查下你api服务器是否正常吧,我用着都是正常的。你api服务器用是哪一款?