RustDesk 自建服务端完整方案(Docker + Windows 客户端)
一、Docker Compose 部署服务端
在 Linux 服务器上创建目录:
bash
mkdir -p ~/rustdesk-server
cd ~/rustdesk-server
创建 docker-compose.yml:
yaml
version: "3.8"
services:
# Broker 服务(注册 / ID 服务器)
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: hbbs
restart: unless-stopped
ports:
- "21115:21115" # Broker TCP
- "21115:21115/udp" # Broker UDP
environment:
- RUSTDESK_RELAY_HOST=hbbr # 关联中继服务器
# Relay 服务(数据中继 / 穿透)
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: hbbr
restart: unless-stopped
ports:
- "21116:21116" # Relay TCP
- "21116:21116/udp" # Relay UDP
# 可选挂载数据卷保存日志
# volumes:
# - ./data/hbbs:/data
# - ./data/hbbr:/data
启动服务
bash
docker-compose up -d
检查服务状态
bash
docker ps
确保 hbbs 和 hbbr 容器都在运行。
二、防火墙 & 端口映射
确保服务器外网可访问:
bash
# Ubuntu / Debian 示例
sudo ufw allow 21115/tcp
sudo ufw allow 21115/udp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw reload
如果服务器在路由器内网,请在路由器上将外网端口映射到服务器的 21115/21116。
三、Windows 客户端配置
-
打开客户端 → 设置 → 中继 / ID 服务器
填入你的自建服务器 IP(假设公网 IP 为
1.2.3.4):- ID / 中继服务器 :
1.2.3.4:21115 - 中继服务器 :
1.2.3.4:21116
- ID / 中继服务器 :
-
保存设置 → 客户端自动通过自建服务端注册 ID。
若无法穿透,客户端可以强制使用中继服务器(Relay TCP)以保证连接。
四、可选 TLS / HTTPS 优化(推荐公网安全)
可以用 Nginx 作为反向代理,增加 TLS:
Nginx 配置示例
nginx
server {
listen 443 ssl;
server_name rustdesk.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/rustdesk.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rustdesk.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:21115; # Broker
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /relay {
proxy_pass http://127.0.0.1:21116; # Relay
}
}
使用 TLS 可保证公网访问安全,防止数据被劫持。
五、测试连接
-
启动两台 Windows 客户端。
-
使用自建 ID 连接远程设备。
-
确认远程桌面可正常访问。
-
若穿透失败:
- 确认 UDP/TCP 端口开放
- 确认客户端设置为使用中继服务器
✅ 总结
- Docker Compose 一条命令即可启动 RustDesk 服务端。
- Windows 客户端只需配置 ID/Relay IP 和端口。
- 公网访问需放行 21115/21116 端口,建议使用 TLS 代理。
- 可选数据卷挂载日志或配置,实现持久化。