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 客户端,并进行如下配置。
- 打开 RustDesk 客户端。
- 点击 ID 旁边的 菜单图标 (⋮) -> 网络 -> ID / 中继服务器。
- 填写服务器信息:
- ID 服务器 :填入你的 <公网IP或域名>
- 中继服务器 :填入你的 <公网IP或域名>
- API 服务器:(留空,不要填)
- Key :填入 <第四步获取的 Key 字符串>
- 点击 确认。
- 如果底部状态栏显示 "就绪",即代表部署成功。
五、 常见问题排查
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" 按钮,安装后即可拥有完整控制权限。