news 2026/4/23 14:13:26

非常简单的基于 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/4/23 13:00:56

18、容器使用指南:LXD 与 Docker 入门

容器使用指南:LXD 与 Docker 入门 1. 容器简介 容器是一项古老的技术,早期以 chroot 和 FreeBSD Jails 的形式存在。随着 Docker 的兴起,容器技术得到了广泛的应用和普及。Ubuntu 在 15.04 版本中推出了新工具 LXD。 容器是一种轻量级的虚拟环境,用于容纳一个或一组进程…

作者头像 李华
网站建设 2026/4/23 12:49:13

19、容器管理与网络配置:LXD与Docker的深度解析

容器管理与网络配置:LXD与Docker的深度解析 在容器技术的领域中,LXD和Docker是两个备受关注的工具。LXD提供了强大的容器管理功能,而Docker则专注于应用容器化。下面将详细介绍LXD的高级管理选项、资源限制设置、网络配置以及Docker的安装过程。 LXD容器的高级管理选项 L…

作者头像 李华
网站建设 2026/4/23 11:37:03

25、Git 远程仓库同步、更新、克隆及 GitLab 安装与用户管理全攻略

Git 远程仓库同步、更新、克隆及 GitLab 安装与用户管理全攻略 1. 与远程服务器同步仓库 在进行本地代码管理时,我们常常需要将本地仓库与远程服务器同步。这里以 GitHub 为例,介绍如何设置远程仓库并同步本地代码。 1.1 准备工作 你需要一个 GitHub 账户。若没有,可注册…

作者头像 李华
网站建设 2026/4/23 12:49:43

SpringBoot联合PostGIS实现在线地图行政区划离线存储的实践探索

目录 前言 一、行政区划物理表设计 1、物理表字段设计 2、表结构脚本 二、行政区划在线API 1、请求参数简介 2、响应参数简介 三、Java后台数据获取及空间存储 1、API服务调用 2、递归获取数据 四、成果展示 1、PostGIS数据查询 2、WebGIS可视化 五、总结 前言 在…

作者头像 李华
网站建设 2026/4/23 12:46:17

为什么OAuth2与SSO经常混为一谈?

简介最近在工作中遇到了一个问题,在实现OAuth2的过程中,发现公司的实际落地与理论不完全相同。故此复习一下。What is OAuth2?OAuth2(OAuth2.0)是一个开放标准的授权框架,用于第三方应用(客户端)在取得用户(资源所有者)的授权下,…

作者头像 李华