Docker部署RustDesk远程桌面服务器

RustDesk 是一款优秀的开源远程桌面软件,它默认使用公共服务器。为了保障连接速度和数据隐私,强烈建议部署自己的 ID 和中继服务器。本教程将指导您如何使用 Docker Compose 快速完成部署。


🚀 一、RustDesk 服务架构解析

RustDesk 服务器端主要由两个核心服务组成:

  1. hbbs (RustDesk ID Server): 负责处理客户端的 ID 注册、心跳服务、密钥交换以及 NAT 类型测试。
  2. 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

您应该能看到 hbbshbbr 两个容器处于运行状态。


🚦 三、防火墙开放端口清单(关键)

由于配置使用了 network_mode: "host",您只需要确保宿主机防火墙开放了以下端口。

请注意: RustDesk 的端口区分 TCP 和 UDP,必须全部开放以保证连接稳定性。

服务端口协议作用描述
hbbs21114TCPWeb 控制台 (仅 Pro 版本)
hbbs21115TCPNAT 类型测试
hbbs21116TCP/UDPID 注册和心跳服务 (核心)
hbbs21118TCPWeb 客户端支持 (ID/API)
hbbr21117TCP中继服务 (数据传输核心)
hbbr21119TCPWeb 客户端支持 (中继)

提示: 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 客户端连接到您的服务器。

  1. 获取 Server Key:

    第一次运行 hbbs 后,会在 ./data 目录下生成一个密钥文件。使用以下命令获取您的 Server Key:

    Bash

    cat data/id_ed25519.pub
    # 复制文件中 base64 格式的公钥内容
    
  2. 配置客户端:

    • 打开 RustDesk 客户端 -> 设置 -> 网络
    • ID 服务器 字段中输入您的服务器 IP 地址或域名。
    • Key 字段中粘贴您刚才复制的 Server Key

配置完成后,客户端应该会显示您自己的服务器 ID 和“准备就绪”状态。

🛡️ 五、后续安全优化 (推荐)

为了增强安全性和可靠性,您应该进行以下优化:

  1. 配置 HTTPS/TLS: 使用 Nginx 或 Caddy 等反向代理,为您的 ID 服务器 (hbbs) 启用 HTTPS/TLS 加密,并映射到 21114 端口。
  2. 绑定 IP/域名:hbbshbbr 启动命令中添加 -r <your_relay_server_ip> 参数,明确指定中继服务器地址。
  3. 禁用 Host 网络模式: 如果您不想暴露所有端口,可以将 network_mode: "host" 替换为详细的 ports 映射列表。