安装 Docker

不再赘述,可参考其他教程。

值得注意的是,也许你挂了decker的镜像站,但似乎这个加速只是pull的速度,并没有加速search。

Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

如果你遇到这个错误,几乎只能挂网络代理才能解决了。

创建 Docker Compose 文件

创建一个目录来存放 RustDesk 服务器的配置,并进入该目录:

mkdir rustdesk-server
cd rustdesk-server

创建一个名为 docker-compose.yml 的文件,并粘贴以下内容:

services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r <服务器公网IP或域名>:21117
network_mode: host # 或者使用端口映射,见下方注释
# ports:
# - 21115:21115
# - 21116:21116
# - 21116:21116/udp
# - 21118:21118
# - 21119:21119
volumes:
- ./data:/root
restart: unless-stopped

hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
network_mode: host # 或者使用端口映射,见下方注释
# ports:
# - 21117:21117
# - 21117:21117/udp
volumes:
- ./data:/root
restart: unless-stopped
environment:
# 单个中继连接的速度限制
- LIMIT_SPEED=20
# 所有中继连接的总带宽限制
- TOTAL_BANDWIDTH=2048
# 单个中继连接的最大带宽
- SINGLE_BANDWIDTH=30

  • <服务器公网IP或域名> 替换为你的实际地址
  • network_mode: host 这种模式让容器直接使用宿主机的网络栈,简化了端口映射
  • 开放端口:
    • 21115 (TCP): 用于 ID 注册
    • 21116 (TCP/UDP): 用于打洞 (hole punching)
    • 21117 (TCP/UDP): 用于中继服务
    • 21118 (TCP): 用于网页客户端 (可选)
    • 21119 (TCP): 用于网页客户端 (可选)
sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
sudo ufw allow 21117/udp
sudo ufw allow 21118/tcp
sudo ufw allow 21119/tcp

启动 RustDesk 服务器

rustdesk-server 目录下运行:

docker compose up -d

这将会在后台启动 hbbs (ID 服务器) 和 hbbr (中继服务器) 容器

检查容器状态:

docker compose ps

查看日志:

docker compose logs hbbs
docker compose logs hbbr

hbbs 是 RustDesk 的 Rendezvous Server(会合服务器),主要负责:

  • 管理客户端 ID 和公钥: 当 RustDesk 客户端启动时,它会向 hbbs 注册其 ID 和公钥。
  • 协助建立连接: 当两个客户端尝试连接时,hbbs 会帮助它们发现彼此,并尝试建立直接连接。
  • 转发中继服务器信息: 如果直接连接失败,hbbs 会告诉客户端可用的 hbbr(中继服务器)地址,以便通过中继进行连接。

hbbr 是 RustDesk 的 Relay Server(中继服务器),主要负责是:

  • 转发数据: 当两个客户端无法建立P2P直连时,hbbr 会作为中间人,接收一个客户端的数据并转发给另一个客户端,从而实现远程控制。
  • 管理带宽: hbbr 可以配置带宽限制,以避免单个连接或总连接占用过多服务器资源。

查看密钥:

docker compose logs hbbs | grep "Key:"

配置 Rustdesk 客户端

下载客户端 https://github.com/rustdesk/rustdesk/releases/latest

打开客户端:

  • ID服务器:你的ip
  • 中继服务器:你的ip:21117
  • API服务器:(不用管,除非你购买了官方的付费服务)
  • Key:上文获得的密钥

然后就可以在主页下方看到 就绪 了,如果是 未就绪,请检查网络连接 可以看看是不是服务器的网络代理没关