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


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

一、 项目简介

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

二、 环境准备

1. 硬件与系统

  • 服务器:一台拥有公网 IP 的 Linux 服务器(推荐 CentOS 7+, Ubuntu 20.04+, Debian 10+)。
  • 内存:建议 1GB 以上(RustDesk 占用资源极低)。
  • 软件依赖 :已安装 Docker 和 Docker 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 配置文件

使用文本编辑器(如 vim 或 nano)创建 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" 按钮,安装后即可拥有完整控制权限。
相关推荐
小熊吃保安5 小时前
Windows也能用 Apple Watch 解锁
windows·rust·开源
离歌漠1 天前
《我用 Tauri 做了一个本地开发工具箱》
rust·typescript·vue
小小龙学IT1 天前
Python Polars 高性能数据处理引擎深度解析
开发语言·python·rust·1024程序员节
zzu123zsw1 天前
为什么 Python 做 Agent 总在并发中崩溃?拆解 Blockcell 在 Rust 下的 Host-Cell 隔离与自愈状态机
开发语言·python·rust·大模型·ai agent
hsg771 天前
简述:基于Ubuntu24编译发布rust开发的html+web后端服务的方法
rust·1024程序员节
zzu123zsw1 天前
当 GPU 加速渲染遇上无头组件:拆解 Yororen UI 在 GPUI 生态下的状态解耦与 XML 模板实践
xml·ui·rust·gui·gpui
传奇开心果编程2 天前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
本地化文档2 天前
cutile-rs-book-l10n
rust·gpu·nvidia·cuda·sphinx·crowdin
qq_406981032 天前
大白话rust系列09 函数调用两次有什么错?
开发语言·python·rust
康小旺2 天前
TypeScript 编译器开始卷 Rust 了:Cloudflare 的 tsrs 到底想干嘛?
rust·typescript