RustDesk 自建远程桌面服务器部署指南


RustDesk 自建远程桌面服务器部署指南 (Docker 版)

一、 项目简介

RustDesk 是一款开源的远程桌面软件,支持自建服务器(Self-hosted)。通过 Docker 部署自建服务器,可以实现数据完全掌握在自己手中,拥有更快的连接速度、更高的安全性,且无商业版限制。

二、 环境准备

1. 硬件与系统

  • 服务器:一台拥有公网 IP 的 Linux 服务器(推荐 CentOS 7+, Ubuntu 20.04+, Debian 10+)。
  • 内存:建议 1GB 以上(RustDesk 占用资源极低)。
  • 软件依赖 :已安装 DockerDocker Compose

2. 网络端口要求 (至关重要)

请务必在云服务商的 安全组 (Security Group) 或服务器 防火墙 中放行以下端口:

端口号 协议 作用 备注
21115 TCP HBBS (ID服务) 必须开放
21116 TCP HBBS (ID服务) 必须开放
21116 UDP HBBS (心跳/打洞) 核心端口,必须开放
21117 TCP HBBR (中继服务) 必须开放

三、 部署步骤

第一步:创建工作目录

为了便于管理数据和日志,建议在服务器上创建一个专门的目录。

bash 复制代码
# 创建目录
mkdir -p /data/rustdesk

# 进入目录
cd /data/rustdesk

第二步:创建 Docker Compose 配置文件

使用文本编辑器(如 vimnano)创建 docker-compose.yml 文件。

bash 复制代码
vim docker-compose.yml

配置内容如下 (请根据注释修改):

yaml 复制代码
version: '3'

services:
  hbbs:
    container_name: hbbs
    # 推荐使用固定版本号,避免 latest 自动升级导致兼容性问题
    image: rustdesk/rustdesk-server:1.1.11-1
    # 【重要】将下面 <你的公网IP或域名> 替换为实际地址
    # 示例1 (公网IP): command: hbbs -r 123.123.123.123:21117
    # 示例2 (域名):   command: hbbs -r desk.example.com:21117
    command: hbbs -r <你的公网IP或域名>:21117
    volumes:
      - ./data:/root
    network_mode: "host"
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:1.1.11-1
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped

配置说明

  • network_mode: "host":让容器直接使用宿主机网络,避免复杂的端口映射问题。
  • -r 参数:指定中继服务器的地址。如果不填写,客户端将无法通过中继连接。
  • 如果你有域名,建议直接填域名,方便后续动态解析。

第三步:启动服务

docker-compose.yml 同级目录下执行:

bash 复制代码
# 拉取镜像并后台启动
docker-compose up -d

# 查看运行日志 (确认无 Error 报错)
docker-compose logs -f

(注:如果 Docker 版本较新,命令可能是 docker compose up -d,中间没有横杠)

第四步:获取连接密钥 (Key)

服务首次启动后,会自动生成加密公钥。客户端连接必须填写此 Key 才能建立加密连接。

执行以下命令查看 Key:

bash 复制代码
cat ./data/id_ed25519.pub

请复制输出的字符串(例如 8bXy...=),稍后配置客户端时需要用到。


四、 客户端配置指南

请在控制端(你的电脑)和被控端(对方电脑)下载 RustDesk 客户端,并进行如下配置。

  1. 打开 RustDesk 客户端。
  2. 点击 ID 旁边的 菜单图标 (⋮) -> 网络 -> ID / 中继服务器
  3. 填写服务器信息:
    • ID 服务器 :填入你的 <公网IP或域名>
    • 中继服务器 :填入你的 <公网IP或域名>
    • API 服务器:(留空,不要填)
    • Key :填入 <第四步获取的 Key 字符串>
  4. 点击 确认
  5. 如果底部状态栏显示 "就绪",即代表部署成功。

五、 常见问题排查

Q1: 为什么状态栏一直显示"正在连接网络"?

  • 检查端口 :90% 的情况是因为防火墙没开。请重点检查云服务器后台的安全组,确认 UDP 21116 是否已放行。
  • 检查 IP:确认客户端填写的 ID 服务器地址是否 ping 得通。

Q2: 为什么部署在 CentOS 7 上无法生成 Key 文件?

  • CentOS 7 默认开启 SELinux,可能会拦截 Docker 挂载目录。

  • 解决办法

    bash 复制代码
    # 临时关闭 SELinux 测试
    setenforce 0
    # 或者修复目录权限
    chcon -Rt svirt_sandbox_file_t /data/rustdesk

Q3: 如何让外网也能访问局域网内的服务器?

  • 需要在路由器上做 端口映射 (Port Forwarding)
  • 将路由器的 21115-21117 (TCP) 和 21116 (UDP) 映射到内部服务器 IP。
  • docker-compose.yml 中的 -r 参数建议配置为公网 IP域名

Q4: 连接后提示"被控端未安装"或无法操作管理员窗口?

  • 这是 Windows 的权限保护机制。请在被控端电脑上点击 RustDesk 界面上的 "安装 RustDesk" 按钮,安装后即可拥有完整控制权限。
相关推荐
@大迁世界14 小时前
相信我兄弟:Cloudflare Rust 的 .unwrap() 方法在 330 多个数据中心引发了恐慌
开发语言·后端·rust
2***B44916 小时前
Rust在系统编程中的内存安全
开发语言·后端·rust
U***e6316 小时前
Rust错误处理最佳实践
开发语言·后端·rust
疏狂难除20 小时前
随便玩玩lldb (二)
开发语言·后端·rust
Rust语言中文社区21 小时前
【Rust日报】 丰田“先锋”选择了 Rust
开发语言·后端·rust
邹小邹-AI21 小时前
Rust + 前端:下一个十年的“王炸组合”
开发语言·前端·rust
芳草萋萋鹦鹉洲哦1 天前
【tauri+rust】App会加载白屏,有时显示在左上角显示一小块,如何优化
开发语言·后端·rust
zengyuhan5031 天前
Windows BLE 开发指南(Rust windows-rs)
前端·rust