通过内网穿透(如 FRP、NPS 等)将服务映射到外网,且内网穿透客户端和 RustDesk 服务端部署在同一台机器上,需要使用 127.0.0.1(或容器名 hbbr)作为中继指向。
一、 Docker Compose 完整配置
YAML
version: "3.8"
services:
# 信号服务器 (HBBS) - 负责 ID 注册和心跳服务
hbbs:
container_name: rustdesk-hbbs
image: rustdesk/rustdesk-server:latest
# 保留 127.0.0.1 供本地内网穿透转发使用
command: hbbs -r 127.0.0.1:21117 -k _
restart: unless-stopped
ports:
- "21115:21115" # NAT 类型测试
- "21116:21116/tcp" # TCP 连接服务
- "21116:21116/udp" # ID 注册和心跳服务
- "21118:21118" # Web 客户端支持
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
deploy:
resources:
limits:
memory: 512M
cpus: '0.25'
reservations:
memory: 256M
cpus: '0.1'
# 中继服务器 (HBBR) - 负责 P2P 打洞失败后的流量转发
hbbr:
container_name: rustdesk-hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr -k _
restart: unless-stopped
ports:
- "21117:21117" # 中继服务端口
- "21119:21119" # Web 客户端中继支持
volumes:
- ./data:/root
networks:
- rustdesk-net
deploy:
resources:
limits:
memory: 512M
cpus: '0.25'
reservations:
memory: 256M
cpus: '0.1'
networks:
rustdesk-net:
driver: bridge
external: false
二、 说明与注意事项
- 内网穿透适配: 维持
-r 127.0.0.1:21117后,当通过内网穿透(如 FRP)将21116和21117映射到公网时,客户端向hbbs注册时拿到的中继地址就是本地回环,内网穿透工具能够正确把流量抓取并转发给本地的hbbr。 - 密钥获取: 启动后,请到当前目录下的
./data文件夹中寻找.pub后缀的文件,将其中的内容复制作为客户端的 Key(密钥)。