RustDesk 自建指南:基于 Docker 部署官方与第三方开源全功能服务端
RustDesk是一款开源远程桌面软件。与传统商业软件不同,RustDesk最大的优势在于支持自建服务器。这意味着可以完全掌控数据,不再受限于公共服务器的带宽瓶颈和次数限制,实现低延迟、高画质的私有远程连接体验。——Gemini
之所以会用RustDesk其实是因为受不了国内的有些远程桌面软件了。限制免费次数和免费时长,黑箱限制你根本不知道你还剩多少次数和时长,听天由命,基本上月底就甭想用了(我说的是谁大家心里都有数)。还有就是你无法知道他们是否真的安全,真的会守护你的个人隐私。毕竟屏幕画面、键鼠操作、剪贴板同步,这些可都是实打实的隐私数据。
RustDesk实际上是解决上述问题的理想方案——它兼顾了部署的便利性(提供便携客户端)、连接的流畅性(支持自建中继)以及数据的安全性。
闲话少叙,直接进入搭建实操。在服务器的选择上,建议优先考虑物理距离较近的节点以降低延迟,带宽推荐5Mbps起步,有条件上三网BGP线路效果最佳。
顺便提一句:如果双方网络环境好(能打通P2P直连),其实是不走服务器流量的;只有P2P失败走中继的时候,服务器带宽才是瓶颈。
下面分为两部分,第一部分是官方服务端,第二部分是开源服务端
官方服务端
服务端搭建
开放端口
在安装之前要放通以下端口
21115(TCP)21116(TCP&UDP)21117(TCP)21118(TCP)21119(TCP)
21118/tcp 和 21119/tcp 为Web客户端端口,如果不需要,也可以不开放
Docker安装
选一个合适的地方放置,我这边就拿 /opt/rustdesk 打比方
mkdir -p /opt/rustdesk && cd /opt/rustdesk
nano docker-compose.yml
然后填入
services:
hbbs:
container_name: rustdesk-hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: rustdesk-hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
最后运行并查看 Key 密钥 就算是搭建完成了
docker compose up -d
docker logs rustdesk-hbbs
查看容器日志,你会看到一串长密钥,请将其复制备用,这是后续配置客户端时的必填项。
客户端配置
下载客户端 GitHub (下载速度慢可以使用本站提供的网盘镜像: 123Pan)
前往 设置 > 网络 > ID/中继服务器 菜单。 在弹出的窗口中,只需填写 ID 服务器 (你的IP/域名) 与 Key (密钥) 这两栏即可。

这时候多配置几个设备,之间的互通就完全走中转服务器了,如果NAT类型宽松还可以P2P连接
开源服务端
在自建过程中,咱们已经发现免费的官方服务端缺失了“账号系统”这一核心功能,意味着没有地址簿管理,多设备管理变得困难。
为了解决这个痛点,社区涌现了许多优秀的第三方开源服务端。
我发现了 lejianwen/rustdesk-server 这个项目。该项目通过兼容 RustDesk 通信协议,补全了Web管理面板和账号系统功能。
对于想拥有完整自建体验,但预算有限的个人用户来说,这是一个绝佳的开源替代方案。
服务端搭建
开放端口
在安装之前要放通以下端口
21114(TCP)21115(TCP)21116(TCP&UDP)21117(TCP)21118(TCP)21119(TCP)
21118/tcp 和 21119/tcp 为Web客户端端口,如果不需要,也可以不开放
Docker安装
选一个合适的地方放置,我这边就拿 /opt/rustdesk 打比方
mkdir -p /opt/rustdesk && cd /opt/rustdesk
nano docker-compose.yml
然后填入
networks:
rustdesk-net:
external: false
services:
rustdesk:
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
- 21118:21118
- 21119:21119
image: lejianwen/rustdesk-server-s6:latest
environment:
- RELAY=<relay_server[:port]>
- ENCRYPTED_ONLY=1
- MUST_LOGIN=N
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]>
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]>
- RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]>
- RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub
- RUSTDESK_API_JWT_KEY=xxxxxx # Key密钥 可以自定义
volumes:
- ./data/server:/data
- ./data/api:/app/data
networks:
- rustdesk-net
restart: unless-stopped
最后运行并查看 Key 密钥 和 Web控制台admin初始密码 就算是完成了
docker compose up -d
docker logs rustdesk-rustdesk-1
查看容器日志,你会看到一串长密钥 以及 Web控制台admin初始密码 ,请将其复制备用,这是后续配置客户端和Web控制台时的必填项。
客户端配置
下载客户端 GitHub (下载速度慢可以使用本站提供的网盘镜像: 123Pan)
前往 设置 > 网络 > ID/中继服务器 菜单。 在弹出的窗口中,只需填写 ID 服务器 (你的IP/域名) 与 Key (密钥) 这两栏即可。

这时候多配置几个设备,之间的互通就完全走中转服务器了,如果NAT类型宽松还可以P2P连接
默认配置下,必须登录才能发起远程连接! 请前往 设置 > 账户,使用默认用户名 admin 和刚才在 docker logs 里看到的初始密码进行登录。

管理端配置
浏览器访问 http://{服务器IP/域名}:21114 进入 Web 管理面板,默认账户为 admin ,密码即为刚才在 Docker 日志中获取的初始密码。
这里面可以配置的门道很多,自己研究研究,就不挨个深入细说了(
可玩性还是很丰富的,从设备与标签管理,到用户、群组和权限,甚至还支持OAuth第三方登录
尾巴
这里有一个很少人知道的一个小诀窍,平时用便携版最烦的就是每次都要重新填ID服务器和Key。其实你完全可以通过重命名文件名来"固化"配置
rustdesk-host={服务器IP/域名},key={Key}.exe
改成这个名字,双击打开就会默认连接自建节点。不管带到哪台电脑上,都是点开即连,再也不会连到缓慢的官方服务器了。