news 2026/6/10 15:33:19

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
非常简单的基于 Docker 自建 RustDesk 远程桌面教程

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

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

Docker镜像下载#

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

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

# 自己下载镜像

$ docker pull rustdesk/rustdesk-server:1.1.14

# 导入离线镜像

$ docker load -i rustdesk-server_1.1.14.tar

image

部署服务端#

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

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

# 先启动 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,后面会用到

$ cat rust-desk/id_ed25519.pub

+8XT07pESbNfyozhAEKQNpRkVPwEayOPl598q5Vf5ZA=

客户端配置说明#

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

image

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

image

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

image

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

image

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

image

关于端口映射#

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

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

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

image

关于网络和带宽#

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

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

image

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:47:00

57、C Shell编程:控制流与循环

C Shell编程:控制流与循环 在C Shell编程中,有多种方式可以控制程序的执行流程,包括分支、退出和循环结构,下面将详细介绍。 1. 脚本中的条件判断与跳转 在一些脚本中,会要求用户输入学生的姓名,将其赋值给变量 name ,然后进行字符串比较,判断输入的姓名是 ajay …

作者头像 李华
网站建设 2026/6/10 15:18:11

80亿参数引爆多模态革命:Qwen3-VL-8B如何重塑行业智能化

80亿参数引爆多模态革命:Qwen3-VL-8B如何重塑行业智能化 【免费下载链接】Qwen3-VL-8B-Thinking-bnb-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Qwen3-VL-8B-Thinking-bnb-4bit 导语 阿里通义千问团队推出的Qwen3-VL-8B-Thinking开源模型…

作者头像 李华
网站建设 2026/6/10 15:46:23

重大网络安全事件:2017年——WannaCry勒索病毒

一、事件概述:什么是WannaCry? WannaCry(又称WannaCrypt、WCry)是一种利用Windows操作系统漏洞进行传播的勒索软件。2017年5月12日起,这款病毒以惊人的速度席卷全球,感染了超过150个国家的数十万台计算机。…

作者头像 李华
网站建设 2026/6/10 17:59:43

基于vue的校园论坛管理系统的设计与实现_1xs8770k_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华