非常简单的基于 Docker 自建 RustDesk 远程桌面教程

说在前面

提到远程桌面,向日葵、ToDesk 肯定都知道,这两款我都使用过,我个人使(白)用(嫖)体验来看 ToDesk 把向日葵压着打,向日葵的免费通道极其不稳定,经常用着用着就掉线,连接使用体验卡顿感明显,ToDesk 就会强很多,我用 ToDesk 一次掉线都没有过,也不是很卡顿,不过据说 ToDesk 现在有每月免费连接时长(我没触发过这个限制所以不太清楚)

最近好像还有一个 UU 远程桌面比较火,我只是听说没有使用过,据说是新产品所以比较良心,不过不知道能不能经得起时间的考验,鉴于目前没有一款工具用着比较安心,而且我又恰好有一台国内服务器,带宽和延迟还算可以(后面会提到),所以我把目光移到了开源远程桌面工具 RustDesk,研究了一下发现还是挺好用的,部署其实挺简单的,不过如果不了解的话还是会有一些疑问,所以我决定整理一篇文章出来作为笔记,也能帮到有同样需要的人

Docker镜像下载

本文默认你会使用 Docker,首先跟随 RustDesk官方文档 的指引,下载 rustdesk/rustdesk-server 镜像,我个人不喜欢 latest 喜欢指定版本号进行下载,所以下载的是目前最新的和 latest 一致的 1.1.14 版本

考虑到部分人并不能很方便的下载镜像,这里我使用 did-tool 工具提前把镜像下载好了,如果你需要自建但不方便下载镜像,我会提供镜像下载地址,可以去文章末尾下载后导入到 Docker

bash 复制代码
# 自己下载镜像
$ docker pull rustdesk/rustdesk-server:1.1.14

# 导入离线镜像
$ docker load -i rustdesk-server_1.1.14.tar

部署服务端

按官方文档描述,需要基于该镜像启动 hbbshbbr 两个容器,共需要暴露 6 个端口,文档中的示例直接使用 --net=host 模式直接使用了宿主机的网络,这样的好处是不需要管理端口,而且可以查看每个连接的 IP 地址,我个人不喜欢这种,我希望容器开放的端口能牢牢把握在自己手里

经过我的测试,只需要暴露 3 个端口就可以实现远程桌面的功能(其实 2 个也可以,后面会提到),相比 --net=host 模式使用端口映射有个缺点,官方文档中提到该方式无法查看连接者真实 IP,不过这对我来说并不重要,接下来准备启动容器部署服务端环境:

bash 复制代码
# 先启动 hbbr 容器
$ docker run --name hbbr \
  --restart always \
  -v ./rust-desk:/root \
  -p 30007:21117 \
  -d rustdesk/rustdesk-server:1.1.14 hbbr

# 启动完成后再启动 hbbs 容器
$ docker run --name hbbs \
   --restart always \
   -v ./rust-desk:/root \
   -p 30005:21115 \
   -p 30006:21116/tcp \
   -p 30006:21116/udp \
   -d rustdesk/rustdesk-server:1.1.14 hbbs

到这里 RustDesk 服务端其实就已经部署完成了,部署完成后当前目录会多一个 rust-desk 的目录,通过查看该目录下的 .pub 查看 KEY,后面会用到

bash 复制代码
$ cat rust-desk/id_ed25519.pub 
+8XT07pESbNfyozhAEKQNpRkVPwEayOPl598q5Vf5ZA=

客户端配置说明

访问 Github 下载官方提供的客户端,这里我用 win 系统举例,推荐下载 MSI 安装程序,这个客户端安装包后面也会给出

分别在控制端和被控端安装完成后打开软件,依次点击右上角设置、网络、解锁网络设置,然后点击 ID/中继服务器

ID 服务器填写 21116 对应的 30006 端口,中继服务器填写 21117 对应的 30007 端口,API 服务器留空即可,KEY 填写刚刚在服务端查看的 KEY,控制端和被控段都需要这么配置

配置完成后点击保存,回到主界面就能看到下面是就绪的状态了

然后直接输入被控端的 ID 点击连接,输入连接密码,就大功告成了

关于端口映射

我之前说过我希望容器开放的端口能牢牢把握在自己手里,并支持自定义端口,21116 和 21117 端口可以在客户端进行配置,但 21115 并没有找到配置的地方,这里当时纠结了一段时间

后来经过我的测试把 21115 端口关闭,不开放也是可以实现远程连接的,只是目标设备的状态从绿色变成了橙色,无论目标设备是否在线都处于离线状态,所以据我的推测这个端口应该是检测设备在线状态的,这个状态应该不是很重要,因为只要我知道被控端在线,哪怕没有检测到也是可以直接去连的

而且通过查找资料以及自己的测试,发现这个端口不需要特别配置,只要在 Docker 中开放任意端口,RustDesk 自己是能识别到的,根据绿色和橙色的状态就能判断是否识别成功了

关于网络和带宽

写这篇文章的时候我是用本地虚拟机搭建的环境,实际上我在服务器也跑过 RustDesk,我的服务器为湖北十堰 4H4G20M 配置,核心和内存其实不重要,我的服务器带宽为 20M,ping 延迟为 50ms 左右,连接测试还算挺流畅,使用体验比 ToDesk 强一些

根据我的测试,在正常使用且画面没有大幅变化的情况下,每秒网速在 100KB/s 左右,且能控制到 100KB/s 以内,偶尔网速在 200KB/s 左右,当画面快速变化(例如我快速来回拖动窗口)的时候,网速最高达到 700KB/s 左右,所以个人建议想要自建 RustDesk 远程桌面,应该至少有 5M 带宽才能有相对较好的体验

还有一个问题我没搞懂,看看有没有懂行的佬给我解答一下,我自己服务器搭建的 RustDesk 服务(20M,延迟50ms)和本地局域网内搭建的 RustDesk 服务器,网速居然没有任何差别,本地局域网带宽和延迟都是顶级的居然不会特别流畅,希望有懂的大佬解答一下

文件下载地址

分别给出了 Docker 镜像和 win 客户端文件,蓝蓝的链接点击下载,密码:dcqu

相关推荐
zyu6718 小时前
03-Docker存储和网络
网络·docker·容器
牛奔19 小时前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
青州从事5211 天前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
菜鸟思维1 天前
优化NextJs 项目的Docker 镜像 从3.62G 优化到 296.85M
docker
怣疯knight1 天前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
东方佑1 天前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器
赵文宇(温玉)1 天前
Docker的价值、特点、创新与关键技术
运维·docker·容器
Coder码匠1 天前
Docker Compose 部署 Spring Boot 应用完全指南
spring boot·docker·容器
PieroPc1 天前
Windows 远程到 PVE 9.X Mac os (像window远程桌面)
windows·mac·远程桌面
可爱又迷人的反派角色“yang”1 天前
k8s(二)
linux·运维·docker·云原生·容器·kubernetes·云计算