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自动编译客户端



                
THE END
分享
二维码
< <上一篇
下一篇>>