介绍rustdesk
rustdesk远程桌面软件,开箱即用,无需任何配置。您完全掌控数据,不用担心安全问题。
服务端本地部署.数据安全可控.
客户端支持 Windows Mac Android linux 平台.
前言
要求
需要有服务器
需要有frp 内网穿透服务.
服务器安装有1panel或者宝塔
服务器已安装docker
教程
教程不会写的很细节。但流程是保障有的。
服务端是使用的学习版。地址仓库:https://github.com/lejianwen/rustdesk-api
部署服务端
使用docker compose 部署
请根据注释自行替换为你的服务器ip ,volumes数据地址根据自己需求更改,默认是官方的。
参数提示:
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 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=你的服务器ip:21117 #中继服务器
- ENCRYPTED_ONLY=1
- MUST_LOGIN=Y #默认为N,设置为Y 则必须登录才能链接
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=你的服务器ip:21116 #ID服务器
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=你的服务器ip:21117 #中继服务器
- RUSTDESK_API_RUSTDESK_API_SERVER=你的服务器ip:21118 #API服务器
- RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
- RUSTDESK_API_JWT_KEY=xxxxxxxx #随便设置个字符串
volumes:
- /home/yueliang/docker/rustdesk/server:/data #将数据库挂载 自行更改
- /home/yueliang/docker/rustdesk/api:/app/data #将数据库挂载 自行更改
networks:
- rustdesk-net
restart: unless-stopped注意:
如果是云服务器一定要把对应端口防火墙打开。
如果是本地服务器 + 用frp内网穿透的需要把对应端口映射出来。并把docker compose 端口替换为你映射的端口。frp说明文档地址:https://gofrp.org/zh-cn/docs/examples/stcp/
保存好ip和端口信息还有key值,编译客户端需要。
将docker compose 文件保存到服务器合适的位置。最好用一个文件夹来统一管理docker 所有项目,再把docker compose 文件放一起方便管理减少沉没成本。
配置完成后,打开终端 CD 到存放 docker compose 文件的文件夹。
比如我的地址是 /home/yueliang/docker/rustdesk 那么就在终端输入 cd /home/yueliang/docker/rustdesk以此类推

在终端输入 sudo docker compose up -d

结果与图中一样就成功部署服务端了。
可以在1panel或者宝塔查看,如图
云服务器现在可以直接在浏览器输入 服务器ip:21114 打开web网页服务了
frp内网穿透可以输入映射后的ip + 端口。 详情见frp说明文档地址:https://gofrp.org/zh-cn/docs/examples/stcp/
登录账号是 admin
密码需要进入容器终端 ./apimain reset-admin-pwd 你的密码
就可以进入

在服务端设置如同配置

客户端编译
1 仓库创建
注册登录github,进入rustdesk页面,点击
Fork,默认选项,创建分支。进入自己创建分支仓库,点击
libs,再点击hbb_common@d6dd7ae
进入官方hbb_common仓库,再点击
Fork,默认选项,创建分支。
到此完成仓库创建
2 环境配置
电脑下载安装git,下载地址Git ,全部默认下一步安装完成。
安装 vs code ,下载地址vs code ,全部默认下一步安装完成。 本地任意目录创建文件夹,用vs code 打开。并在目录右键打开终端。
返回桌面,右键打开 Open Git Bash here

把下面命令替换为自己的信息,在终端输入。
#配置 Git 的用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"
#生成密钥(一直回车直至这个界面)
ssh-keygen -t rsa -C "邮箱"
#查看公钥
cat ~/.ssh/id_rsa.pub打开 github 设置中的 SSH and GPG keys 。点击 New SSH key ,将终端公钥填入key。
打开新的Windows终端或者git bash,运行如下代码,测试是否可以成功链接gtihub,终端询问是否继续连接,输入Yes回车确认,出现这个提示,就意味着我们通过SSH方式,可以正常连接gtihub 。 注意如果链接失败检查是否开代理。
#测试连接github
ssh -T git@github.com环境配置完成
3 拉取并修改源码
返回vs code,复制我们fork的rustdesk项目SSH地址,终端输入如下命令+SSH地址,将RustDesk源码仓库克隆到本地。
git clone --recurse-submodules <SSH地址> #--recurse-submodules参数,递归克隆子模块输入如下命令,进入主仓库目
cd RestDesk修改子模块路径
修改主目录下.gitmodules文件,将原作者的子模块 URL 替换为我们 Fork的 地址,修改替换如下内容:
[submodule "libs/hbb_common"]
path = libs/hbb_common
url = <替换为我们fork的hbb_common项目地址>
同步子模块地址
git submodule sync提交修改后的代码,并推送到主仓库:
git add .gitmodules
git commit -m "更新所有子模块地址至我的Fork(备注内容)"
git push origin <主仓库分支名,默认master>修改ID/中继服务器⭐️⭐️⭐️⭐️⭐️
进入子模块文件夹⭐️
cd libs/hbb_common配置子模块并创建新分支
git checkout -b <新建分支名,我的是yueliang>修改子模块源码⭐️
libs\hbb_common\src\config.rs #修改该文件的108-114行,分别是服务器及KEY还有端口
提交修改后的代码,并推送到子模块仓库:⭐️
git add .
git commit -m "改为自己的ID/中继服务器"
git push origin <新建的分支名> # 推送分支到我们子模块Fork返回主仓库主目录:⭐️
cd ../..更新子模块的 Commit ID:⭐️
git add libs/hbb_common # 提交子模块的新 Commit
git commit -m "更新修改后的子模块"
git push origin <主仓库分支名,我的是master>修改替换API地址
仓库主目录,修改如下文件:
rustdesk\src\common.rs #1024行替换API地址 找不到就 Ctrl + F 查找https://admin.rustdesk.com
提交修改并推送到主仓库:
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>4 github的actions编译
进入自己的github主仓库,如图操作。即可自动编译。等待即可。


FRP我的配置参考
################ start ##############
#rustdesk 中继服务器
[[proxies]]
name = "14766"
type = "tcp"
localIP = "127.0.0.1"
localPort = 21117
remotePort = 14766
#rustdesk Id服务器
[[proxies]]
name = "17314"
type = "tcp"
localIP = "127.0.0.1"
localPort = 21116
remotePort = 17314
[[proxies]]
name = "17314_udp"
type = "udp"
localIP = "127.0.0.1"
localPort = 21116
remotePort = 17314
#21118 (TCP): 用于支持网页客户端。
#WS_RENDEZVOUS_PORT: i32 = 21118; 改 18137
[[proxies]]
name = "18137"
type = "tcp"
localIP = "127.0.0.1"
localPort = 21118
remotePort = 18137
#21119 (TCP): 用于支持网页客户端。
#WS_RELAY_PORT: i32 = 21119; 改 17082
[[proxies]]
name = "17082"
type = "tcp"
localIP = "127.0.0.1"
localPort = 21119
remotePort = 17082
################ end ##############
评论