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/9 22:33:01

构建智能电池生态:AlDente充电管理工具的系统集成策略

构建智能电池生态:AlDente充电管理工具的系统集成策略 【免费下载链接】AlDente-Charge-Limiter macOS menubar tool to set Charge Limits and prolong battery lifespan 项目地址: https://gitcode.com/gh_mirrors/al/AlDente-Charge-Limiter 在现代移动计…

作者头像 李华
网站建设 2026/6/9 14:46:49

OCLP-Mod技术解析:基于OpenCore的macOS兼容性扩展方案

OCLP-Mod是一个基于Python开发的开源项目,旨在为老旧Mac设备提供完整的macOS系统兼容性支持。该项目深度整合了OpenCorePkg引导加载器和Lilu内核扩展框架,通过模块化架构实现系统功能的深度定制和扩展。 【免费下载链接】OCLP-Mod A mod version for OCL…

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

个人博客或小型企业官网部署在2核2G服务器上是否足够?

对于个人博客或小型企业官网,部署在 2核2G 的服务器上通常是足够且常见的选择,但是否“足够”需结合具体场景综合判断。以下是详细分析: 原文地址:https://blog.smartmll.com/article/94679.html ✅ 适用场景(一般够…

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

终极指南:Annotators图像处理工具库从入门到精通

终极指南:Annotators图像处理工具库从入门到精通 【免费下载链接】Annotators 项目地址: https://ai.gitcode.com/hf_mirrors/lllyasviel/Annotators Annotators是一个功能强大的计算机视觉工具库,集成了多种先进的图像处理模型,能够…

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

28、深入探索Perl:引用、多维数组与哈希引用

深入探索Perl:引用、多维数组与哈希引用 1. 引言 在Perl编程中,我们经常会处理各种数据结构。之前我们使用的大多是一维数组,但在实际应用中,可能需要处理更复杂的数据,如电子表格内容。为了实现这一点,我们需要了解引用(references)和二维数组,以及哈希引用等高级概…

作者头像 李华