目录

开源的远程桌面软件RustDesk

开源的远程桌面软件RustDesk

https://i-blog.csdnimg.cn/blog_migrate/8c4b8a8e117005e8aa704ec8db3fc6ab.png#pic_center

本文是应网友 figo 的要求写的

什么是 RustDesk ?

RustDesk 是一款开源的远程桌面软件,开箱即用,无需任何配置。您完全掌控数据,不用担心安全问题。可以使用官方的注册/中继服务器, 或者自己架设。

今天我们要做的就是通过自建服务器,然后从远程访问家里的电脑,之所以要自建,是因为 RustDesk 提供的免费公共服务器比较少

https://i-blog.csdnimg.cn/blog_migrate/4f92ba1054b2972a5df05b3346c140eb.png

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 rustdesk ,选择第一个 rustdesk/rustdesk-server ,双击直接下载。

https://i-blog.csdnimg.cn/blog_migrate/09f87e88574bdd8d79e7387986118ac6.png#pic_center

本文起草于 202111 月,当时只有一个版本,所以不需要选择。现在已经支持 x86arm64v8 平台, x86latest 即可。

https://i-blog.csdnimg.cn/blog_migrate/9a3d8979489e500726a99e9e7d8d331c.png#pic_center

【注意】:后面无论是 hbbs 还是 hbbr 都是基于这个镜像安装

安装 hbbs

hbbs 指的是 RustDesk ID/Rendezvous server ,也就是 RustDesk 注册服务器。

默认情况下, hbbs 监听 21115(tcp)21116(tcp/udp)21118(tcp) 。其中:

  • 21115hbbs 用作 NAT 类型测试;
  • 21116/UDPhbbs 用作 ID 注册与心跳服务;
  • 21116/TCPhbbs 用作 TCP 打洞与连接服务;
  • 21118 是为了支持网页客户端,注意是 WebSocket 协议,不是 http 协议;

因为没找到网页客户端,不知道怎么用 21118 端口,所以后面的端口映射没打开该端口,需要的话可以添加在 tcp 协议中;

容器名称

默认为 rustdesk-rustdesk-server1 ,为了方便区分,重命名为 rd-hbbs ,这不是必须的操作

https://i-blog.csdnimg.cn/blog_migrate/1f11d58cb3787cefd5c0181bc9f2def5.png

docker 文件夹中,创建一个新文件夹,并将其命名为 rustdesk ,然后在其中建两个子文件夹,分别是 hbbshbbr

https://i-blog.csdnimg.cn/blog_migrate/bb896536ebee130d91febfb67735d5f5.png#pic_center

文件夹装载路径说明
docker/rustdesk/hbbs/root存放文件,包括 key 文件

https://i-blog.csdnimg.cn/blog_migrate/238f7959e514bb19ae633e26e6d2e472.png#pic_center

网络

勾选 使用与 Docker Host 相同的网络

https://i-blog.csdnimg.cn/blog_migrate/99fa8f98383eab602e7efee08190c93b.png#pic_center

环境

命令中输入 hbbs -r <relay-server-ip[:port]>

其中:

  • relay-server-ip 为群晖主机 IP
  • port 默认为 21117 , 没改的话可以不填;

所以我们只要在 命令 中输入 hbbs -r 192.168.0.197 即可

https://i-blog.csdnimg.cn/blog_migrate/140cbc074adc06caae43cd2bc6a9e1cd.png#pic_center

安装 hbbr

hbbr 指的是 RustDesk relay server ,也就是 RustDesk 中继服务器。

默认情况下, hbbr 监听 21117(tcp) , 21119(tcp) 。其中:

  • 21117hbbr 用作中继服务;
  • 21119 是为了支持网页客户端,注意是 WebSocket 协议,不是 http 协议;

因为不知道怎么用 21119 端口,所以后面的端口映射没打开该端口,需要的话可以添加在 tcp 协议中;

容器名称

默认为 rustdesk-rustdesk-server1 ,为了方便区分,重命名为 rd-hbbr ,这不是必须的操作

https://i-blog.csdnimg.cn/blog_migrate/5ffb20a2b5473489b6a87a1b76d5c56b.png#pic_center

前面已经建好了文件夹,这里直接使用 就行

文件夹装载路径说明
docker/rustdesk/hbbr/root存放文件

https://i-blog.csdnimg.cn/blog_migrate/7f828c96aced7ef9eddc97fc0b52c4cd.png#pic_center

网络

勾选 使用与 Docker Host 相同的网络

https://i-blog.csdnimg.cn/blog_migrate/f2d692711be8525c2a6194404b0f58ed.png#pic_center

环境

命令 行中输入 hbbr 即可

https://i-blog.csdnimg.cn/blog_migrate/dcfa3343b07a7bbd22e1451e6167338e.png#pic_center

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 restdesk 和 子目录
mkdir -p /volume2/docker/rustdesk/{hbbs,hbbr}

# 进入 restdesk 目录
cd /volume2/docker/rustdesk

# 运行容器 hbbs
docker run -d \
--name rd-hbbs \
--restart unless-stopped \
--net=host \
-v $(pwd)/hbbs:/root \
rustdesk/rustdesk-server \
hbbs -r <relay-server-ip[:port]>

# hbbs 示例
## relay-server-ip :为群晖主机 IP
## port 默认为 21117 , 没改的话可以不填
docker run -d \
--name rd-hbbs \
--restart unless-stopped \
--net=host \
-v $(pwd)/hbbs:/root \
rustdesk/rustdesk-server \
hbbs -r 192.168.0.197

# hbbr 示例
docker run -d \
--name rd-hbbr \
--restart unless-stopped \
--net=host \
-v $(pwd)/hbbr:/root \
rustdesk/rustdesk-server \
hbbr

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
hbbs:
image: rustdesk/rustdesk-server
container_name: rd-hbbs
restart: always
network_mode: "host"
depends_on:
- hbbr
volumes:
- ./hbbs:/root
command: hbbs -r 192.168.0.197

hbbr:
image: rustdesk/rustdesk-server
container_name: rd-hbbr
restart: always
network_mode: "host"
volumes:
- ./hbbr:/root
command: hbbr

然后执行下面的命令

# 新建文件夹 restdesk 和 子目录
mkdir -p /volume2/docker/rustdesk/{hbbs,hbbr}

# 进入 rustdesk 目录
cd /volume2/docker/rustdesk

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

不出意外的话,两个容器应该都正常启动了

https://i-blog.csdnimg.cn/blog_migrate/c341b5c3fcdc5126bb1f144f2235330b.png#pic_center

运行

在运行客户端之前,还有少许网络上的设置,不管你是用 frp 还是 ddns ,要做的就是将相应的端口打开

frp 设置

老苏用的是 frp ,需要在 frpc.ini 中增加下面 👇 这段:

[range:rd_tcp]

# 2022.07.13 新增,for RustDesk 测试

type = tcp
local_ip = 192.168.0.197
local_port = 21115-21117
remote_port = 21115-21117
custom_domains = id.laosu.ml

[rd_udp]

# 2022.07.13 新增,for RustDesk 测试

type = udp
local_ip = 192.168.0.197
local_port = 21116
remote_port = 21116
custom_domains = id.laosu.ml

保存之后,重启 frpc 容器。

ddns 设置

老苏没有公网 IP ,所以没机会使用过 ddns ,但从原理上看,跟局域网使用的原理一致,只是不过是将局域网 IP 换成了域名,需要在路由器放行下面 👇 的端口:

  • 21115-21117 ,协议 tcp
  • 21116 ,协议 udp

客户端填写 ID 服务器 时,同样也是 域名:21116

客户端

在 可以下载对应平台的客户端

https://i-blog.csdnimg.cn/blog_migrate/7364df3bea77f5196865ba45d9895f3b.png

找到 ID/中级服务器

https://i-blog.csdnimg.cn/blog_migrate/e92706804c56411bdd69728c985f17c5.png#pic_center

填入前面 frpc 中的设置

另外两个地址可以不填, RustDesk 会自动推导(如果没有特别设定的话)

https://i-blog.csdnimg.cn/blog_migrate/c0cf4005416c6b3b3ca5ab7453a35389.png

File Station 中找到 /docker/restdesk/hbbs 目录,其中 id_ed25519.pub 就是我们需要的 key

https://i-blog.csdnimg.cn/blog_migrate/f2be1cb1e79311ba2fb3d845b88ae8b9.png

可以下载之后用文本编辑器打开,也可以直接用命令行打开

# 打开公钥文件
cat ./hbbs/id_ed25519.pub

key 复制到客户端中

https://i-blog.csdnimg.cn/blog_migrate/a8d495fb3826769e63faa096f57640e6.png#pic_center

确认之后,网络会重新连接

https://i-blog.csdnimg.cn/blog_migrate/e53cf34457c6a66e41b3312a72fb6737.png#pic_center

如果设置没问题,很快就 就绪

https://i-blog.csdnimg.cn/blog_migrate/bac3fa050aa0fbe43d668662e1ac8318.png#pic_center

测试

老苏又装了一台 android 客户端,用来做控制端,设置和 PC 端是一样的,只要输入 ID 服务器Key 即可

https://i-blog.csdnimg.cn/blog_migrate/b27885493deaca51db0e66e3fbe22423.jpeg#pic_center

输入要控制的 PC 端的 ID

https://i-blog.csdnimg.cn/blog_migrate/9d88c4426f426ffd3192ee1fc7e752a0.jpeg#pic_center

连上之后需要输入密码,密码可以在 PCID 的下方获取到

https://i-blog.csdnimg.cn/blog_migrate/53d893febbce9469f3f78fdff4b377df.jpeg#pic_center

连接成功后, PC 端的右上角有提示

https://i-blog.csdnimg.cn/blog_migrate/668ad99cbb2b816507c32db82e33e2d4.jpeg#pic_center

速度还可以,感觉比向日葵快

https://i-blog.csdnimg.cn/blog_migrate/15f59f451d1a7362f3940174a5447d83.jpeg#pic_center

各平台的详细使用手册,可以去官网看中文的使用手册:

老苏觉得 RustDesk 作为一款远程桌面控制软件,完全可以取代 TeamViewer向日葵

参考文档

GitHub - rustdesk/rustdesk: The best open source remote desktop software

地址:

rustdesk/rustdesk-server: RustDesk Server Program

地址:

RustDesk | 最好的开源远程桌面软件

地址:

群晖 :: RustDesk 文档

地址: