方案优势
– 三合一管理:单文件集成 `hbbs` + `hbbr` + `API服务`
– 密钥集中管控:所有服务共享同一密钥目录,消除配置不一致风险
– 跨节点扩展:多服务器统一密钥,客户端无缝切换
准备工作(所有操作需 root 权限)
1. 更新系统 & 安装基础工具
sudo -i # 切换 root 用户
apt update && apt upgrade -y
apt install -y curl vim ufw
2. 安装 Docker 与 Docker Compose
# 安装 Dockercurl -fsSL https://get.docker.com | sh
# 安装 Docker Compose 插件(官方推荐)apt install -y docker-compose-plugin
# 验证安装docker --version # 输出 Docker 版本
docker compose version # 输出 Compose 版本
配置防火墙(关键!)
ufw allow 21115:21119/tcp # TCP端口范围
ufw allow 21116/udp # UDP穿透核心端口
ufw allow 21114/tcp # API服务端口
ufw reload
密钥统一生成与管理
# 1. 生成ED25519密钥对(所有服务共用)openssl genpkey -algorithm ed25519 -out id_ed25519
openssl pkey -in id_ed25519 -pubout -out id_ed25519.pub
# 2. 权限加固(防泄露)chmod 644 id_ed25519*
mkdir -p ~/rustdesk/data
mv id_ed25519* ~/rustdesk/data/
# 3. 生成JWT密钥(API服务专用)echo "JWT_SECRET=$(openssl rand -base64 32)" > ~/rustdesk/.env
chmod 600 ~/rustdesk/.env # 禁止提交到版本库
创建 Docker Compose 配置文件
1. 创建项目目录 & 配置文件
mkdir ~/rustdesk && cd ~/rustdesk
vim docker-compose.yml
2. 复制以下内容(已优化资源限制)
version: '3.8' services: hbbs: image: rustdesk/rustdesk-server container_name: rustdesk-hbbs restart: unless-stopped command: hbbs -k _ -r 你的服务器公网IP:21117 # 替换为真实公网IP ports: - "21115:21115/tcp" # NAT类型检测 - "21116:21116/tcp" # ID注册 - "21116:21116/udp" # P2P穿透核心端口 volumes: - ./data:/root # 密钥统一挂载 hbbr: image: rustdesk/rustdesk-server container_name: rustdesk-hbbr restart: unless-stopped command: hbbr ports: - "21117:21117/tcp" # 中继数据传输 volumes: - ./data:/root # 复用密钥目录 # API服务(支持Web管理后台) rustdesk-api: image: lejianwen/rustdesk-api:latest container_name: rustdesk-api restart: unless-stopped ports: - "21114:21114/tcp" # Web控制台端口 environment: - RUSTDESK_API_RUSTDESK_ID_SERVER=hbbs:21116 - RUSTDESK_API_RUSTDESK_KEY_FILE=/root/id_ed25519.pub - RUSTDESK_API_JWT_KEY=${JWT_SECRET} # 从.env注入 # - RUSTDESK_API_APP_REGISTER=true # 启用自助注册[3,6](@ref) # - RUSTDESK_API_MAIL_ENABLED=true # 需配置 SMTP 发送验证邮件 # 如需开启注册功能,则取消以上两行注释 volumes: - ./data:/root # 密钥目录 - ./api-data:/app/data # API独立数据卷 depends_on: hbbs: condition: service_started # 仅依赖服务启动状态
重要提示:
你的服务器公网IP:-将 你的服务器公网IP 替换为服务器的 公网 IP 或域名(如 123.123.123.123)-国内服务器建议用 IP 地址(避免域名解析延迟)密钥三重统一:
-hbbs/hbbr/API服务均挂载 ./data:/root,确保读取相同密钥文件
-修正API服务的密钥路径为 /root/id_ed25519.pub(与原方案对齐)
数据隔离:API服务增加独立卷 ./api-data存储用户数据,与密钥分离
服务启动与验证
1. 启动服务
cd ~/rustdesk
docker compose up -d
2. 检查状态
docker compose ps # 所有容器应为 "Up" 状态
3. 验证密钥一致性
docker exec rustdesk-hbbs cat /root/id_ed25519.pub
docker exec rustdesk-api cat /root/id_ed25519.pub # 应输出相同内容
如 rustdesk-hbbs 报错,缺少cat命令,可执行以下命令从宿主机复制文件进行查看 # 复制容器内文件到宿主机docker cp rustdesk-hbbs:/root/id_ed25519.pub /tmp/
# 在宿主机查看cat /tmp/id_ed25519.pub
4. 获取API管理员密码(首次登录必做)
docker logs rustdesk-api | grep "Admin password"
也可直接进入容器进行密码设置 # 进入容器docker exec -it rustdesk-api sh
# 重置密码(将 new_password 替换为自定义密码)./apimain reset-admin-pwd new_password
客户端配置(全平台通用)
ID服务器:你的公网IP:21116
中继服务器:你的公网IP:21117
API服务器:http://你的公网IP:21114
Key:粘贴 id_ed25519.pub的内容
Web控制台:http://<服务器IP>:21114/_admin/ (默认账号
admin
,密码为上面从容器日志获取或设置)
运维管理命令集
# 停止服务docker compose down
# 更新镜像docker compose pull && docker compose up -d
# 查看实时日志docker compose logs -f hbbs
# 备份数据tar czvf rustdesk-backup.tar.gz ./data ./api-data
# 密钥轮换(90天一次)openssl genpkey -algorithm ed25519 -out new_key; mv new_key ./data/id_ed25519; docker compose restart
故障排查速查表
现象 | 排查命令 | 解决方案 |
---|---|---|
客户端“未就绪” | docker compose ps |
检查容器状态,重启异常服务 |
ufw status |
确认端口21116/udp已开放 | |
API登录失败 | docker exec rustdesk-api cat /root/id_ed25519.pub |
验证密钥一致性 |
curl http://localhost:21114/api/health |
检查API服务状态 | |
P2P穿透失败 | nload -m -i 100000 -o 100000 |
观察UDP 21116端口流量是否活跃 |