Skip to content

自部署rustdesk远程软件并将配置打包进软件

前言

目前市面上的远程软件有很多种,比如 todesk、向日葵等。这些软件不付费的话用起来挺差的,即便你付费了,你也只能连接中国大陆的机器,海外的还得单独付费,这又是一笔费用。

现在各大厂商如阿里云、腾讯云等都可以用很优惠的价格买到一个服务器,如果是只链接中国大陆的机器,可以买大陆的机子,如果有海外机器,则可以买香港的机器。

前提

  • 懂得基本的 linux 命令
  • 了解服务器配置相关知识
  • 拥有一台服务器

服务器要求,官网上是这样写的:

硬件要求非常低;基本云服务器的最低配置就足够了,CPU和内存要求极低。您也可以使用树莓派或类似设备。关于网络规模,如果TCP打洞直连失败,将消耗中继流量。中继连接的流量根据分辨率设置和屏幕更新在30 K/s到3 M/s(1920x1080屏幕)之间。如果仅用于办公需求,流量约为100 K/s。

延迟没有要求,rustdesk 主要是进行 p2p 连接,如果这个失败才会考虑用你的中继服务器。即便用中继服务器,延迟 150ms 以内简单使用的问题都不大。

下面我的讲解就默认你这些技术都会并且拥有一台服务器。

介绍

rustDesk,官网:

RustDesk – 开源远程桌面访问软件

是一个开源的远程工具软件,自建指南在这:

自建服务器开源版

看得懂的人可以直接按照这个指南来。也可以跟着我下面的操作一步步来。

功能特性如下:

  • 支持 Windows、macOS、Linux、iOS、Android、Web。
  • 支持 VP8 / VP9 / AV1 软件编解码器,以及 H264 / H265 硬件编解码器。
  • 拥有您的数据,轻松在您的基础设施上建立自托管解决方案。
  • 基于 NaCl 的端到端加密 P2P 连接。
  • Windows 无需管理员权限或安装,可按需在本地或远程提升权限。

服务器部署

1panel 安装

首先安装 1Panel:

1Panel 官网 - 现代化、开源的 Linux 服务器运维管理面板

安装这个是为了方便管理,也为了照顾那些不是特别精通 linux 的人和懒人(其实我自己就是个懒人)。

这个的安装就简单很多了,直接复制下面给的运行脚本到你的服务器:

bash
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"

要以 root 用户身份运行,普通用户无法成功安装。

按照他的选项一步步安装就行。

最后会有一个地址、密码、用户名的大汇总,记得保存下来,不然后面进不去了。

然后就是去服务器的管理的入方向上开启对应端口,我这里是 12345 端口

然后进入刚刚 1panel 显示的网站登录进入 1panel

rustdesk 中继服务器安装

在 1panel 的应用商店中搜索 rustDesk

点击安装,IP 地址或域名改为我们的服务器 IP,其他的不要动

一定要勾选下面的端口允许外部访问

然后就点击安装就行。

接下来就是去服务器管理放行端口了,也是入方向的

官方文档中写到需要放行这两种端口

第一步,先放行 tcp 的端口

接下来是放行 udp 的

rustDesk 客户端的配置

来到 1panel 这里点击日志

往上滑可以看到有一个 key,这个 key 非常重要,一定要记住

然后我们打开 rustDesk,点击这里进行配置

然后在网络这里选择 ID/中继服务器

按照如下方式填写,key 就是刚刚日志里看的。其他都是你的服务器公网 ip,API 服务器要加上 https://

看到底部的 就绪 就完成了

这样你的客户端就算是配置完成了

自定义打包被控端的程序

这样做以后就是直接把包发给别人,那就可以实现 0 配置直接用自己的中继服务器控制他人了。你也可以不这样做,让他们自己按照上面步骤修改中继服务器即可。

windows

步骤一:下载软件并重命名

先去官方下载地址下载 windows 版本的安装包,比如 rustdesk-1.2.x-x86_64.exe

将下载好的文件名重命名为如下格式

plain
rustdesk-host=<你的服务器IP>,key=<你的公钥>,-qs.exe

host 就是你的服务器 ip,key 就是从日志里复制的那个。

例如:**rustdesk-host=123.45.67.89,key=aBc123XyZ456=,-qs.exe**

这样你直接把包发给别人他们就可以直接双击打开,且是连上了你自己的中继服务器了。

步骤 2: 安装 Inno Setup

不过这样用起来就很麻烦,而且还暴露自己的 ip 和 key。所以下面用 Inno Setup 打包这个程序。

先去官网下载 inno setup:

Inno Setup

直接安装就行。

步骤 3: 编写脚本

在电脑上新建一个记事本文档,复制粘贴以下代码,只需要修改顶部参数即可

plain
; ==================== 1. 在这里统一修改你的参数 ====================
#define ServerIP   "123.45.67.89"
#define ServerKey  "abc123456="
#define AppTitle   "远程协助工具"

; 下面是自动拼装出来的内部文件名,不需要手动改
#define TargetExeName "rustdesk-host=" + ServerIP + ",key=" + ServerKey + ",-qs.exe"

[Setup]
AppName={#AppTitle}
AppVersion=1.0
DefaultDirName={tmp}\RD_TempHelper
DisableDirPage=yes
DisableProgramGroupPage=yes
Uninstallable=no
OutputBaseFilename={#AppTitle}
PrivilegesRequired=lowest

[Files]
; Inno Setup 会默认在 .iss 脚本所在的当前文件夹里去找这个文件
Source: "{#TargetExeName}"; DestDir: "{tmp}"; Flags: ignoreversion

[Code]
// 在退出时自动强删清理
procedure DeinitializeSetup();
var
  ResultCode: Integer;
  ExePath: String;
begin
  ExePath := ExpandConstant('{tmp}\{#TargetExeName}');

  // 1. 启动并等待客户关闭窗口
  Exec(ExePath, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);

  // 2. 客户关闭后自动擦除解压出来的文件
  DeleteFile(ExePath);
  DelTree(ExpandConstant('{tmp}\RD_TempHelper'), True, True, True);
end;

保存文件,将文件后缀从 .txt 改为 .iss(比如叫 build.iss

步骤 4: 编译

  • 然后将安装包和这个构建文件放在同一个文件夹
  • 双击用 Inno Setup 打开这个 .iss 文件。
  • 点击顶部工具栏的 Compile(编译) 按钮(或者按快捷键 Ctrl + F9)。
  • 几秒钟后,在你的脚本所在目录下就会多出一个 **Output/远程协助工具.exe**

通过这个脚本构建的应用,在关闭后不会给电脑留下残留。下次使用还得点击构建好的 exe 才行。

这样你只需要分发这个构建好的 exe,然后他们就能被你控制了,不用额外改任何配置。

linux

makeself 是 Linux 下最经典的自解压打包工具(比如 NVIDIA 的 Linux 显卡驱动 .run 文件就是用它做出来的)。

步骤 1:安装 makeself

在你的 Linux 机器上运行安装命令:

  • Ubuntu/Debian: sudo apt install makeself
  • CentOS/RHEL: sudo yum install makeself

步骤 2:准备项目文件夹

创建一个空文件夹 rd_build,把 Linux 版的 RustDesk 单文件程序放进去:

bash
mkdir rd_build
cd rd_build
# 下载官方 Linux AppImage 版(免安装单文件)或应用可执行文件,自己更换地址
wget https://github.com/rustdesk/rustdesk/releases/download/1.4.9/rustdesk-1.4.9-x86_64.AppImage -O rustdesk.AppImage
chmod +x rustdesk.AppImage

步骤 3:编写启动与清理脚本 (start.sh)

rd_build 文件夹内部新建一个名为 start.sh 的脚本:

bash
vim start.sh

写入以下内容(记得把 IP 和 Key 替换成你自己的):

bash
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

# 运行并等待退出
"$DIR/rustdesk.AppImage" --host 你的IP --key 你的公钥 --qs

# 退出后延迟 1 秒在后台清理临时目录
(sleep 1 && rm -rf "$DIR") &

赋予脚本执行权限:

bash
chmod +x start.sh

步骤 4:一键打成单独的 .run 交付包

退回到 rd_build 的上一级目录,执行打包命令:

bash
makeself rd_build 远程协助工具.run "远程协助工具" ./start.sh

参数解释:

  • rd_build:要打包的文件夹。
  • 远程协助工具.run:最终生成给客户用的单文件名称。
  • ./start.sh:解压后自动调用的启动入口脚本。

客户拿到后如何使用?

Linux 因为安全机制限制,任何可执行文件运行前都需要“执行权限”。

bash
chmod +x 远程协助工具.run && ./远程协助工具.run

运行后界面直接弹出来,并且客户一旦关闭窗口,后台的解压目录立刻随之清除

Last updated: