草庐IT

开源的远程桌面软件RustDesk

杨浦老苏 2023-08-23 原文

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

什么是 RustDesk ?

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

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

安装

在群晖上以 Docker 方式安装。

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

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

【注意】:后面无论是 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,这不是必须的操作

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

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

网络

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

环境

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

其中:

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

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

安装 hbbr

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

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

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

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

容器名称

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

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

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

网络

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

环境

命令 行中输入 hbbr 即可

命令行安装

如果你熟悉命令行,可能用 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

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

运行

在运行客户端之前,还有少许网络上的设置,不管你是用 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://rustdesk.com/zh/ 可以下载对应平台的客户端

找到 ID/中级服务器

填入前面 frpc 中的设置

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

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

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

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

key 复制到客户端中

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

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

测试

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

输入要控制的 PC 端的 ID

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

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

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

各平台的详细使用手册,可以去官网看中文的使用手册:https://rustdesk.com/docs/zh-cn/manual/

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

参考文档

GitHub - rustdesk/rustdesk: The best open source remote desktop software
地址:https://github.com/rustdesk/rustdesk

rustdesk/rustdesk-server: RustDesk Server Program
地址:https://github.com/rustdesk/rustdesk-server

RustDesk | 最好的开源远程桌面软件
地址:https://rustdesk.com/zh/

群晖 :: RustDesk文档
地址:https://rustdesk.com/docs/zh-cn/self-host/synogy/

有关开源的远程桌面软件RustDesk的更多相关文章

  1. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  2. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  3. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  4. ruby - 带有 grep 远程日志文件的 tail - 2

    我有这段代码来跟踪远程日志文件:defdo_tail(session,file)session.open_channeldo|channel|channel.on_datado|ch,data|puts"[#{file}]->#{data}"endchannel.exec"tail-f#{file}"endNet::SSH.start("host","user",:password=>"passwd")do|session|do_tailsession,"/path_to_log/file.log"session.loop我只想在file.log中检索带有ERROR字符串的行,我正在尝

  5. ruby - 如何使用远程 API 将 Confluence "Space"导出为 PDF - 2

    如何将Confluence的“空间”导出为pdf文件?看起来Confluence5.0可能仍然支持使用XML-RPCAPI。不过,我找不到调用什么的示例。https://developer.atlassian.com/display/CONFDEV/Remote+API+Specification+for+PDF+Export#RemoteAPISpecificationforPDFExport-XML-RPCInformation该链接表示调用应以pdfexport为前缀,但没有列出任何调用或给出示例。 最佳答案 这可以使用Bob

  6. ruby - AWS 上远程机器上的进程计数 - 2

    我正在为在AmazonEC2实例上运行的应用程序设计一个AutoScaling系统。应用程序从SQS读取消息并对其进行处理。AutoScaling系统将监控两件事:SQS中的消息数量,所有EC2机器上运行的进程总数。例如,如果SQS中的消息数量超过3000,我希望系统自动缩放,创建一个新的EC2实例,在其上部署代码,当消息数量低于2000时,我希望系统终止EC2实例.我正在用Ruby和Capistrano做这件事。我的问题是:我无法找到一种方法来确定在所有EC2机器上运行的进程数并将该数字保存在变量中。你能帮帮我吗? 最佳答案 您可

  7. ruby - 我可以使用 ruby​​ 创建桌面应用程序吗? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我想知道是否可以使用ruby​​创建桌面应用程序以及缺点,你能举个例子吗?在Windows中使用的应用程序谢谢

  8. python - 开源 Twitter 克隆(在 Ruby/Python 中) - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion是否有任何用Ruby或Python编写的生产就绪的开源Twitter克隆?我对功能丰富的实现更感兴趣,而不仅仅是简单的Twitter消息(例如:API、FBconnect、通知等)谢谢!

  9. 【血泪建议】软件测试岗位现状,可惜之前没人告诉我,肠子都晦青了.... - 2

    谈到现状,国内的软件测试行情目前呈现了两极分化的极端情况。一个是早期的手工测试人员吐槽工作不好做,即使有工作也是外包,而且薪资太低;一方面是很多互联网企业感叹自动化测试人才难找,有技术的自动化测试工程师,高薪难聘。这两者其实并不矛盾。手工测试工作难找也确实是目前真实的行情早期从事功能测试的手工测试人员,在测试方面大多采用手动、人工执行的方式查找软件缺陷和BUG,用行业术语来描述就是“点点点”。这种测试方式耗费大量人力和资源,工作效率却十分低下。在早期软件复杂和迭代程度不高的情况下,有资本的企业会“供养”一批这样的手工测试人员。但对测试员本身来讲,毫无技术难度的工作,和几乎没有保障的薪资水平,直

  10. 如何使用手机远程访问自己的电脑? - 2

    手机访问电脑后AnyViewer可以做什么? 您成功将手机连接到Windows电脑后,然后您可以做任何您想做的事情,例如:查看文件和运行应用程序。电源管理:在远程会话中,点击电源管理,您可以看到三个项目:锁定、重启和关机,供您在不同情况下管理计算机。如果您需要暂时离开远程会话,可以锁定计算机。如果计算机死机,您可以重新启动它,然后再次连接。如果您已完成计算机上的所有工作,您可以使用手机远程关闭它。更改图像质量:当电脑和手机的网络都处于良好状态时,您可以选择高图像质量以获得更好的体验。当网络状况不佳时,您可以选择低图像质量以获得更流畅的操作。     显示桌面:我们无法在手机上按Windows+

随机推荐