RustDesk 私有化部署终极方案

本方案优势

三合一管理:单文件集成 `hbbs` + `hbbr` + `API服务`
密钥集中管控:所有服务共享同一密钥目录,消除配置不一致风险
跨节点扩展:多服务器统一密钥,客户端无缝切换

 

准备工作(Root权限执行)​

1.更新系统 & 安装基础工具
sudo -i # 切换 root 用户
apt update && apt upgrade -y
apt install -y curl vim ufw
2. 安装 Docker 与 Docker Compose
# 安装 Docker
curl -fsSL https://get.docker.com | sh

# 安装 Docker Compose 插件(官方推荐)
apt install -y docker-compose-plugin

# 验证安装
docker --version # 输出 Docker 版本
docker compose version # 输出 Compose 版本

 

配置防火墙(关键!)

开放 RustDesk 所需端口(需在云服务器控制台​​同步放行​​):
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注入
    volumes:
      - ./data:/root # 密钥目录
      - ./api-data:/app/data # API独立数据卷
    depends_on:
      hbbs:
        condition: service_started # 仅依赖服务启动状态

关键优化说明​​:

​​1.密钥三重统一​​
– hbbs/hbbr/API服务均挂载 ./data:/root,确保读取相同密钥文件
– 修正API服务的密钥路径为 /root/id_ed25519.pub(与原方案对齐)
2.​​版本锁定​​:显式指定镜像标签(1.4.0),避免自动升级导致兼容性问题
3.​​数据隔离​​: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 # 应输出相同内容 

如果执行 docker exec rustdesk-hbbs cat /root/id_ed25519.pub 命令报错,缺失cat指令,可替换为以下命令查看:
# 复制容器内文件到宿主机
docker cp rustdesk-hbbs:/root/id_ed25519.pub /tmp/
# 在宿主机查看
cat /tmp/id_ed25519.pub
4. 获取API管理员密码(首次登录必做)
docker logs rustdesk-api | grep "Admin password"

也可以执行以下命令,进入容器重置密码(将 new_password 替换为自定义密码):
docker exec -it rustdesk-api sh
./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,密码为【获取API管理员密码】)

 

运维管理命令集​

​停止服务
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

【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps