DIY NAS系列27 — 全平台远程桌面软件之 RustDesk

简介

在远程协助的领域,我们熟悉的软件如向日葵、QQ 远程、Teamview 以及 Todesk 等。然而,我们是否有一款安全、经济、快速、私有化部署的替代品呢?今天,我们将为大家介绍一款名为 RustDesk 的远程桌面软件。RustDesk 是一款开源免费支持私有化部署的全平台远程桌面软件。它支持 MacOS、Windows 和 Android 平台,无需任何配置即可开箱即用。RustDesk 可以作为向日葵远程桌面、ToDesk 等远程桌面服务的替代品,让您完全掌控数据,不用担心安全问题。相对于向日葵、Todesk、Teamview 等第三方公司运营的远程桌面软件而言,RustDesk 提供了更为安全和自主的选择。对于普通用户而言,如果不付费,很难享受到高质量的服务,而且一旦这些公司倒闭或被黑客攻击,我们的桌面数据安全将面临威胁。然而,如果我们选择使用 RustDesk,这些问题将不再存在。您可以选择使用官方的注册、中继服务器,也可以自建服务器,甚至基于官方代码开发自己的版本。RustDesk 的另一个优点在于,如果您有自己的云服务器,且服务器带宽足够,您将“独享”体验飞一般的感觉!更难得的是,RustDesk 提供了多系统的客户端,让您在不同的操作系统中都能得到良好的使用体验。

RustDesk 使用 Rust 语言开发,其主要优势包括:

  1. 安全性:采用加密通信协议,保障数据传输安全和隐私。
  2. 灵活性:支持Windows、macOS、Linux和Android等多平台,适应各种工作环境。
  3. 高效并发:即使是入门级的云服务器上也能满足个人或小团队的使用需求,个人完全可以部署在自己的 NAS 上。
  4. 用户友好:提供自建服务端选项,支持点对点通信和内置文件传输,配置公钥以加密通信,不需复杂配置即可使用。
  5. 数据控制:用户完全掌控自己的数据,无需担心安全问题。
  6. 灵活的服务器选择:用户可选择使用官方的服务器或自建服务器。

总之,RustDesk 以其安全性、高效并发、跨平台和用户友好性,成为一款理想的远程桌面解决方案。

部署 RustDesk 服务器

说明: 基于前期构建的 traefik 网关,详见:  DIY NAS系列12 — Traefik 出口网关配置
在 docker-compose.yaml 文件中,会对重要的配置进行说明,因个人网络环境等不同,需要根据自身实际情况调整配置。

在部署前我们需要了解一下各端口的作用,另外这些端口需要在您的防火墙或安全组放通。以下是所有 RustDesk 用到的端口。

  • Hbbs 监听 21115 (tcp) 21116 (tcp/udp) 21118 (tcp)。
  • Hbbr 监听 21117 (tcp) 21119 (tcp)。
  • 21115 是 hbbs 用作 NAT 类型测试。
  • 21116/UDP 是 hbbs 用作 ID 注册与心跳服务。
  • 21116/TCP 是 hbbs 用作 TCP 打洞与连接服务。
  • 21117 是 hbbr 用作中继服务。
  • 21118 和 21119 是为了支持网页客户端,如果您不需要网页客户端(21118,21119)支持,对应端口可以不开。

请注意 21116 同时要开启 TCP 和 UDP。

GitHub 服务器端:GitHub – rustdesk/rustdesk-server: RustDesk Server Program
Docker 镜像下载:hub.docker.com/r/rustdesk/rustdesk-server/tags

# 桥接网络模式和主机网络模式启动二选一
[root@demo ~]# cat > docker-compose.yaml << \EOF
services:  
  hbbs:  
    container_name: hbbs  
    image: rustdesk/rustdesk-server:1.1.14  
    command: hbbs -r hbbs.rockylinux.cn:21116 -k _ # -k _ 强制指定必须使用公钥加密连接
    volumes:  
      - /SSD/Demo/rustdesk:/root   
    restart: unless-stopped  
    ports:  
      - 21115:21115 
      - 21116:21116  
      - 21116:21116/udp  
    networks:  
      - traefik_net  
    deploy:  
      resources:  
        limits:  
          memory: 64M  

  hbbr:  
    container_name: hbbr  
    image: rustdesk/rustdesk-server:1.1.14  
    command: hbbr -k _
    volumes:  
      - /SSD/Demo/rustdesk:/root   
    restart: unless-stopped  
    ports:  
      - 21117:21117  
    networks:  
      - traefik_net  
    deploy:  
      resources:  
        limits:  
          memory: 64M  

networks:  
  traefik_net:  
    external: true  
EOF

[root@demo ~]# cat > docker-compose.yaml << \EOF
services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:1.1.14
    command: hbbs -r hbbs.banggood.cn:21116 -k _
    volumes:
      - /data/rustdesk/data:/root
    restart: unless-stopped
    network_mode: "host"
  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:1.1.14
    command: hbbr -k _
    volumes:
      - /data/rustdesk/data:/root
    restart: unless-stopped
    network_mode: "host"
EOF

# 启动服务 
[root@demo ~]# docker-compose up -d

客户端配置

客户端的安装相对比较简单,这里不做叙述,重点说一下客户端自建服务器配置。
客户端下载:GitHub – rustdesk/rustdesk

查看服务器连接公钥

为了保证通信安全,建议中继地址加入强制密钥访问。密钥文件配置在中继软件目录下的 id_ed25519.pub,使用命令查看密钥。容器启动后会自动生成公钥和私钥,我们需要复制 hbbs ​目录下的 id_ed25519.pub ​文件里面的字符串,这个就是我们连接到服务器的凭证。如果需要更换密钥和公钥,只需将 hbbs ​文件夹下面的 id_ed25519.pub ​和 id_ed25519 ​两个文件删掉然后重启容器就可以自动重新生成。

[root@demo ~]# ll
total 100
-rw-r--r-- 1 root root 24576 Nov 15 10:06 db_v2.sqlite3
-rw-r--r-- 1 root root 32768 Nov 21 18:28 db_v2.sqlite3-shm
-rw-r--r-- 1 root root 41232 Nov 21 18:28 db_v2.sqlite3-wal
-rw-r--r-- 1 root root    88 Nov 15 10:04 id_ed25519
-rw-r--r-- 1 root root    44 Nov 15 10:04 id_ed25519.pub
[root@demo ~]# more id_ed25519.pub 
euzVgKalg59SY93ChoEYHnoxtHig=

配置 ID/中继服务器

打开客户端设置 — 网络配置对应 ID/中继服务器,如果端口是默认的 21116 和 21117 可以不用指定。

如果客户端一次性密码未显示,需要先启动服务。

确保客户端的连接状态为就绪,说明与自建服务器连接正常。

正常情况下,现在就可以自由的使用 RustDesk 服务器管理自己的客户端远程桌面了。

虚拟显示器

虚拟显示器主要使用场景:云主机默认分辨率是 800 x 600,在这种分辨率下类似一些浏览器操作(爬虫),在这种分辨率下是没办法正常进行的,这时候可以使用 RustDesk 提供的虚拟显示器功能。首先在 RustDesk 上创建一个虚拟显示器,然后在操作系统层设置这个虚拟显示器的分辨率为 1920 x 1080,再将这个显示器设置成主屏幕即可。

客户端 ID 变更

如果您在系统模板中部署了 RustDesk,那么基于该模板创建的新系统会继承相同的 RustDesk ID,从而导致 ID 号重复。为了解决这个问题,可以参考以下方法:How to forcefully change RustDesk client ID · Issue #838 · rustdesk/rustdesk · GitHub

Windows 平台

  1. 打开文件 C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml
  2. 将文件中的 enc_id 设置为 0
  3. 重启 RustDesk 服务。

Linux 平台

  1. 打开文件 /root/.config/rustdesk/RustDesk.toml
  2. 将文件中的 enc_id 设置为 0
  3. 重启 RustDesk 服务。

通过以上步骤,可以确保在不同系统中生成唯一的 RustDesk ID 号,避免重复。

后述

经过前面我们的简单探讨和分析,RustDesk 是一款非常值得推荐的开源软件。无论是其简洁直观的用户界面,还是其实时、流畅的远程操作体验,都令人印象深刻。作为开源软件,它的发展离不开社区的贡献和支持,我们期待 RustDesk 在未来能够提供更多优质的功能和改进。下一篇文章,我们将会转向另一个引人注目的开源软件——xBrowserSync。这是一个浏览器同步工具,旨在提供便捷、安全的浏览器数据同步服务。它支持跨平台使用,无论您使用的是 Windows,macOS,还是 Linux,都可以享受到它带来的便利。同样地,它也非常注重用户隐私和数据安全,所有的浏览器数据都会在本地进行加密后再上传至公共服务器或自建服务器。敬请期待我们对 xBrowserSync 的详细介绍,希望我们的文章能够帮助您更好地理解和使用这些优秀的开源软件。

参考文献

[1] GitHub 客户端项目地址:GitHub – rustdesk/rustdesk(85.6 k Star)
[2] 服务器端 Docker 镜像地址:rustdesk/rustdesk-server Tags | Docker Hub
[3] 官网地址:RustDesk – 开源远程桌面访问软件
[4] 自建服务器官方文档地址:自建服务器 :: RustDesk文档(强烈推荐)
[5] 客户端下载地址: Releases · rustdesk/rustdesk

变更记录

  • 2025-04-02
    • 更新镜像版本至 1.1.14
    • 新增 host 网络模式 docker-compose.yaml
    • 新增虚拟显示器配置说明
  • 2025-04-14
    • 新增【客户端 ID 变更】章节
Avatar photo

关于 木子

Email: [email protected] 微信:rockylinuxcn QQ: 2306867585
Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇