Docker部署RustDesk远程桌面服务器
RustDesk 是一款优秀的开源远程桌面软件,它默认使用公共服务器。为了保障连接速度和数据隐私,强烈建议部署自己的 ID 和中继服务器。本教程将指导您如何使用 Docker Compose 快速完成部署。
🚀 一、RustDesk 服务架构解析
RustDesk 服务器端主要由两个核心服务组成:
hbbs(RustDesk ID Server): 负责处理客户端的 ID 注册、心跳服务、密钥交换以及 NAT 类型测试。hbbr(RustDesk Relay Server): 负责在客户端之间无法直接建立连接(如复杂的 NAT 环境)时,作为中继传输数据流。
🛠️ 二、Docker Compose 部署配置
我们使用 network_mode: "host" 来简化端口映射配置,直接将容器端口暴露给宿主机网络。
1. docker-compose.yml 配置
将以下内容保存为 docker-compose.yml 文件:
version: '3.7'
services:
hbbs:
container_name: hbbs
# free版本
# pro付费版本镜像:rustdesk/rustdesk-server-pro:latest
image: rustdesk/rustdesk-server:latest
# 启动 ID 服务器命令
command: hbbs
# 挂载数据目录,用于持久化配置和数据
volumes:
- ./data:/root
# 使用 Host 网络模式,简化端口映射
network_mode: "host"
# hbbs 启动依赖于 hbbr,确保两者能正常通信
depends_on:
- hbbr
# 容器意外停止时,自动重启
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
# 启动中继服务器命令
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
2. 启动服务
在 docker-compose.yml 文件所在目录下执行以下命令即可启动服务:
docker compose up -d
3. 检查服务状态
确认两个容器是否成功运行:
docker ps
您应该能看到 hbbs 和 hbbr 两个容器处于运行状态。
🚦 三、防火墙开放端口清单(关键)
由于配置使用了 network_mode: "host",您只需要确保宿主机防火墙开放了以下端口。
请注意: RustDesk 的端口区分 TCP 和 UDP,必须全部开放以保证连接稳定性。
| 服务 | 端口 | 协议 | 作用描述 |
|---|---|---|---|
| hbbs | 21114 | TCP | Web 控制台 (仅 Pro 版本) |
| hbbs | 21115 | TCP | NAT 类型测试 |
| hbbs | 21116 | TCP/UDP | ID 注册和心跳服务 (核心) |
| hbbs | 21118 | TCP | Web 客户端支持 (ID/API) |
| hbbr | 21117 | TCP | 中继服务 (数据传输核心) |
| hbbr | 21119 | TCP | Web 客户端支持 (中继) |
提示: 21116 (TCP/UDP) 和 21117 (TCP) 是保证服务正常运行的核心端口,必须准确开放。
防火墙配置示例 (以 UFW 为例)
# 核心服务端口
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
# 辅助和Web客户端端口
sudo ufw allow 21114/tcp
sudo ufw allow 21115/tcp
sudo ufw allow 21118/tcp
sudo ufw allow 21119/tcp
# 启用防火墙
sudo ufw enable
🔑 四、客户端配置与连接
服务器启动并开放端口后,您需要配置 RustDesk 客户端连接到您的服务器。
获取 Server Key:
第一次运行 hbbs 后,会在 ./data 目录下生成一个密钥文件。使用以下命令获取您的 Server Key:
Bash
cat data/id_ed25519.pub # 复制文件中 base64 格式的公钥内容配置客户端:
- 打开 RustDesk 客户端 -> 设置 -> 网络。
- 在 ID 服务器 字段中输入您的服务器 IP 地址或域名。
- 在 Key 字段中粘贴您刚才复制的 Server Key。
配置完成后,客户端应该会显示您自己的服务器 ID 和“准备就绪”状态。
🛡️ 五、后续安全优化 (推荐)
为了增强安全性和可靠性,您应该进行以下优化:
- 配置 HTTPS/TLS: 使用 Nginx 或 Caddy 等反向代理,为您的 ID 服务器 (hbbs) 启用 HTTPS/TLS 加密,并映射到 21114 端口。
- 绑定 IP/域名: 在
hbbs和hbbr启动命令中添加-r <your_relay_server_ip>参数,明确指定中继服务器地址。 - 禁用 Host 网络模式: 如果您不想暴露所有端口,可以将
network_mode: "host"替换为详细的ports映射列表。