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" 按钮,安装后即可拥有完整控制权限。
相关推荐
小灰灰搞电子6 小时前
Rust可以取代C++么?
开发语言·c++·rust
百锦再7 小时前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
异步思考者11 小时前
Rust实战:一个内存消息队列的 Trait 驱动开发
rust
受之以蒙12 小时前
智能目标检测:用 Rust + dora-rs + yolo 构建“机器之眼”
人工智能·笔记·rust
熬了夜的程序员12 小时前
【Rust学习之路】第 0 章:理解 Rust 的核心哲学
开发语言·学习·rust
EniacCheng12 小时前
【RUST】学习笔记-环境搭建
笔记·学习·rust
禅思院13 小时前
在win10上配置 Rust以及修改默认位置问题
开发语言·前端·后端·rust·cargo·mingw64·cargo安装位置
shandianchengzi13 小时前
【记录】Rust|Rust开发相关的7个VSCode插件的介绍和推荐指数(2025年)
开发语言·vscode·rust
JPX-NO13 小时前
Rust + Rocket + Diesel构建的RESTful API示例(CRUD)
开发语言·rust·restful
林太白14 小时前
Rust01-认识安装
开发语言·后端·rust