Compose一键部署RustDesk服务端及API,编译新版客户端
一键部署RustDesk服务端及API
Compose一键部署RustDesk服务端及API
networks:
rustdesk-net:
external: false
services:
rustdesk:
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: lejianwen/rustdesk-server-s6:latest
environment:
- RELAY=<relay_server[:port]>
- ENCRYPTED_ONLY=1
- MUST_LOGIN=Y
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]>
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]>
- RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]>
- RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
- RUSTDESK_API_JWT_KEY=xxxxxx #
volumes:
- /data/rustdesk/server:/data
- /data/rustdesk/api:/app/data #将数据库挂载
networks:
- rustdesk-net
restart: unless-stopped
参数提示:
RELAY=<relay_server[:port]> #中继服务器:21117
MUST_LOGIN=N #默认为N,设置为Y 则必须登录才能链接
RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]> #ID服务器
RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]> #中继服务器
RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]> #API服务器
RUSTDESK_API_JWT_KEY=xxxxxx #随便设置个字符串
/data/rustdesk/server #查看 key
使用docker-compose up -d拉取docker镜像,一个compose文件,将rustdesk服务端,以及API都安装好了,服务端是lejianwen大佬基于原版修改,目的是更兼容作者的第三方API,同时也添加了一些功能,譬如,只有登录客户端,才能发起远程连接,这就有效杜绝客户端被滥用的情况。
- 通过docker挂载的路径,可以查看客户端所用的key。
- API登录地址为服务器IP:21114,用户名默认是admin,密码可以通过刚部署的容器里日志查看,登录API后台后,切记及时修改密码。
编译新版客户端
利用Github的环境变量,将服务器等信息,编译到客户端,现在已经失效,无法将服务器等信息编译到rustdesk客户端。现在只能用修改源码的方式,将服务器等信息,保存到客户端源码,并用Github的Actions自动编译客户端。
以前这个文件夹fork主项目以后是自动同步的,现在变成共享的了,所以我们就需要用fork子项目的方式来修改。
Fork 子模块仓库 首先确保 hbb_common
子模块对应的仓库已被 fork 到你的 GitHub 账户下。例如,原仓库若为 rustdesk/hbb_common
,需 fork 为 your-username/hbb_common
。
首先使用git bash,在运行搜索git bash
配置用户名和邮箱
#配置 Git 的用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"
生成密钥,一直回车就可以了
ssh-keygen -t rsa -C "邮箱"
查看公钥
cat ~/.ssh/id_rsa.pub
添加到github的ssh key里面
测试是否成功,如果提示连接不上那么就需要安装DevSidecar来辅助打开github,下载并安装DevSidecar然后根据提示安装证书
回到主页打开git代理
再次回到git bash测试是否连接成功,提示是否继续输入yes,这样就表示正常连接
ssh -T git@github.com
如果还是连接不上那就需要用梯子使用TUN模式来连接了
本地任意目录,运行Windows终端或者git bash,复制我们fork的rustdesk项目SSH地址,终端输入如下命令+SSH地址,将RustDesk源码仓库克隆到本地。
git clone --recurse-submodules <SSH地址> #--recurse-submodules参数,递归克隆子模块
在CMD输入命令克隆仓库
如果ssh的下载提示错误,那么就用https的方式(这个原因是主仓库通过 SSH 克隆,但子模块默认使用 HTTPS,导致认证失败。)
用https方式:
下载完成,一切正常
git clone --recurse-submodules <https地址> #--recurse-submodules参数,递归克隆子模块
输入命令,进入主仓库目
cd rustdesk
修改主目录下.gitmodules文件,将原作者的子模块 URL 替换为我们 Fork的 地址,运行HBuilder X,将文件直接拖放到HBuilder X主窗口,修改替换如下内容,修改完后保存。
同步子模块地址
git submodule sync
提交修改后的代码,并推送到主仓库:
git add .gitmodules
git commit -m "更新所有子模块"
git push origin <主仓库分支名,默认master>
如果提示The requested URL returned error: 403,那么就是前面使用https方式了,https没有权限,需要改回ssh模式
检查当前仓库的远程 URL 配置:
git remote -v
如果显示是这两个地址
origin https://github.com/XXX/rustdesk.git (fetch)
origin https://github.com/XXX/rustdesk.git (push)
那么就改用 SSH 协议
修改远程仓库 URL 为 SSH 格式:
git remote set-url origin git@github.com:仓库名/rustdesk.git
重新推送:
git push origin <主仓库分支名,默认master>
修改ID/中继服务器
进入子模块文件夹
cd libs/hbb_common
配置子模块并创建新分支,分支模块随意
git checkout -b <新建分支名>
修改子模块源码
修改101行和102行
提交修改后的代码,并推送到子模块仓库:
git add .
git commit -m "改为自己的ID/中继服务器"
git push origin <新建的分支名> # 推送分支到我们子模块Fork
如果提示需要输入用户名就Ctrl+c停止,然后添加子模块仓库
git remote set-url origin <子模块仓库>
添加完成后重新推送
git push origin <新建的分支名> # 推送分支到我们子模块Fork
回到主目录使用两个 cd..
更新子模块的 Commit ID:
git add libs/hbb_common
git commit -m "更新修改后的子模块"
git push origin <主仓库分支名,默认为master>
如果建有API那就修改API的地址,如果没有就可以编译了,我建了API。。。
仓库主目录,修改src下的common.rs文件:
947行修改API地址
提交修改并推送到主仓库:
git add .
git commit -m "修改替换API地址"
git push origin <主仓库分支名,默认master>
删除客户端自建服务器的提示
仓库主目录,修改flutter\lib\desktop\pages\connection_page.dart文件:
修改替换81-110行代码:
Widget setupServerWidget() => Flexible(
child: Offstage(
offstage: !(!_svcStopped.value &&
stateGlobal.svcStatus.value == SvcStatus.ready &&
_svcIsUsingPublicServer.value),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [],
),
),
);
有时候格式有问题会出错,下面是一个修改好的文件
提交修改并推送到主仓库:
git add .
git commit -m "修改自建服务端提示"
git push origin <主仓库分支名,默认master>
然后就是使用Actions自动编译客户端