🚀 使用 Docker Compose 部署 RustDesk(lejianwen 镜像版)
🚀 使用 Docker Compose 部署 RustDesk Server
本教程将指导您如何使用 Docker Compose 部署 RustDesk Server,这是一个开源的远程桌面软件解决方案,让您能够搭建属于自己的远程控制服务器。
📝 项目简介
RustDesk 是一款开源的远程桌面软件,相比向日葵、ToDesk 等商业软件,RustDesk 开源免费且支持自建服务器,数据私密可控。其核心服务端包含多个组件:
- hbbs (RustDesk ID Server):负责客户端 ID 注册、心跳维持,并协助建立 P2P 连接。
- hbbr (RustDesk Relay Server):当 P2P 连接无法建立时,提供中继转发服务。
- Web API 服务:提供 Web 接口和身份验证功能。
自建服务器的优势在于所有远程连接数据都通过您自己的服务器或建立 P2P 链路,避免了第三方服务器中转,在提升速度的同时更好地保障了数据安全。
📝 项目简介2
本教程使用的 lejianwen/rustdesk-server-s6 镜像是基于 RustDesk 官方服务的增强版容器,整合了 hbbs(ID 注册服务器)、hbbr(中继服务器)及 API 管理服务,适合新手快速部署私有化远程桌面解决方案。其核心特点包括:
- 一站式部署:单容器集成所有核心服务,无需单独配置
hbbs和hbbr - 安全强化:支持强制加密连接(
ENCRYPTED_ONLY=1),防止未加密数据传输 - API 支持:内置管理 API,便于集成第三方工具或自动化管理
- 灵活配置:通过环境变量即可自定义服务器地址、时区、登录策略等
- 数据持久化:关键配置(如密钥对)和 API 数据通过卷挂载保存,容器重启不丢失
- 跨平台兼容:支持 Windows、macOS、Linux、Android、iOS 客户端连接
⚙️ 部署前准备
1.服务器准备 - 一台具有公网 IP 的云服务器(如阿里云、腾讯云)或本地服务器。 - 推荐配置:1 核 1G 或更高。带宽直接影响远程桌面的流畅度,建议 3Mbps 或以上。 - 操作系统:Linux (如 Ubuntu 20.04 或更高版本)。
2.环境要求 - 确保服务器上已安装 Docker 和 Docker Compose。 - 可通过以下命令安装 Docker Compose (适用于 Linux):
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
3.端口开放 在服务器的防火墙或云服务商的安全组规则中,开放以下端口:
| 端口号 | 协议 | 说明 |
| :--- | :--- | :--- |
| 21114 | TCP | 用于 API 通信 |
| 21115 | TCP | 用于 NAT 类型测试 |
| 21116 | TCP **&** UDP | **必须同时开启**。用于 ID 注册、心跳服务(UDP)以及 TCP 打洞、连接服务(TCP) |
| 21117 | TCP | 用于中继服务 |
| 21118 | TCP | 用于支持 WebSocket 连接 |
| 21119 | TCP | 用于支持 WebSocket 连接 |
🚀 配置 Docker Compose
1.创建项目目录 创建一个目录来存放所有 RustDesk 相关的配置文件和数据。
mkdir -p ~/rustdesk-server && cd ~/rustdesk-server
2.创建 docker-compose.yml 文件
在该目录下创建 docker-compose.yml 文件,内容如下:
networks:
rustdesk-net:
external: false # 使用内部网络,无需提前创建
services:
rustdesk:
image: lejianwen/rustdesk-server-s6:latest # 增强版镜像
ports:
- "21114:21114" # API服务
- "21115:21115" # hbbs ID注册
- "21116:21116" # hbbs TCP通信
- "21116:21116/udp" # hbbs UDP通信
- "21117:21117" # hbbr 中继服务
- "21118:21118" # 备用端口
- "21119:21119" # 备用端口
environment:
- RELAY=http://公网服务器ip:21117 # 中继服务器地址
- ENCRYPTED_ONLY=1 # 强制加密连接(1=启用,0=禁用)
- MUST_LOGIN=N # 是否强制登录(N=不强制,Y=强制)
- TZ=Asia/Shanghai # 时区设置(上海时区)
- RUSTDESK_API_RUSTDESK_ID_SERVER=http://公网服务器ip:21116 # ID服务器地址
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=http://公网服务器ip:21117 # 中继服务器地址
- RUSTDESK_API_RUSTDESK_API_SERVER=http://公网服务器ip:21114 # API服务器地址
- RUSTDESK_API_RUSTDESK_WS_HOST=http://公网服务器ip:21114 # WebSocket地址
- RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub # 公钥文件路径(自动生成)
- RUSTDESK_API_JWT_KEY= # JWT密钥(留空自动生成)
- RUSTDESK_API_JWT_EXPIRE_DURATION= # JWT过期时间(留空使用默认)
volumes:
- ./data/rustdesk/server:/data # 存储服务器密钥、配置
- ./data/rustdesk/api:/app/data # 存储API数据、日志
networks:
- rustdesk-net # 加入内部网络
restart: unless-stopped # 容器退出时自动重启(手动停止除外)
**关键配置说明**:
- **`RELAY` 和相关服务器地址**:这些参数告知客户端服务器的地址,**务必正确填写你的服务器公网 IP**,否则可能导致连接失败。
- **`ENCRYPTED_ONLY=1`**:强制加密连接,增强安全性。
- **`volumes`**:将宿主机的目录挂载到容器内,用于持久化保存 RustDesk 自动生成的密钥文件和配置数据。这对于后续客户端配置和服务器迁移至关重要。
- **`RUSTDESK_API_JWT_KEY` 和 `RUSTDESK_API_JWT_EXPIRE_DURATION`**:这两个环境变量在此配置中暂时留空,对于基础的远程控制功能,它们不是必须的。
配置说明(新手必看):
image:使用lejianwen/rustdesk-server-s6增强镜像,简化部署ports:端口映射需完整配置,缺一不可(尤其是 UDP 端口)RELAY和RUSTDESK_API_*:必须替换为服务器实际公网 IP 或域名(局域网可填内网 IP)ENCRYPTED_ONLY=1:建议保持启用,确保所有连接均加密volumes:./data/rustdesk/server会自动生成密钥对(id_ed25519和id_ed25519.pub),需妥善保存
🎯 启动与验证
1.启动服务
在 docker-compose.yml 文件所在目录,执行以下命令以后台模式启动服务:
docker-compose up -d
此命令会自动拉取 lejianwen/rustdesk-server-s6:latest 镜像并启动容器。
2.验证服务状态 使用以下命令检查容器是否正常运行:
docker ps -a --filter "name=rustdesk-server"
如果看到 rustdesk-server 容器的状态 (STATUS) 为 Up,则表示启动成功。
3.获取密钥 (Key)
密钥是确保连接安全的重要凭证,你需要将其配置到客户端中。
容器启动后,会在挂载的 ./data/rustdesk/server 目录下生成密钥文件。通过以下命令查看公钥:
cat ./data/rustdesk/server/id_ed25519.pub
终端会输出一串字符,复制这串公钥并妥善保存,后续配置客户端时会用到。
🔧 基础配置与使用
1.客户端安装 从 RustDesk 官方 GitHub Releases 页面 下载并安装对应操作系统的客户端。
2.配置客户端
控制端和被控端都需要进行相同的服务器配置。
- 打开 RustDesk 客户端。
- 点击界面右上角的设置(齿轮图标)。
- 进入 网络 设置选项卡。
- 在 "ID服务器" 中输入你的 服务器 IP 地址(例如 12.34.56.78:21116)。
- 在 "中继服务器" 中输入相同的 服务器 IP 地址 和端口 21117。
- 在 "Key" 中粘贴之前从 id_ed25519.pub 文件获取的公钥。
- 点击 "确定" 或 "应用"。
配置成功后,RustDesk 客户端主界面左下角的状态应显示为 "就绪",这表示客户端已成功连接到你的自建服务器。
3.发起远程连接 在控制端客户端的 "ID" 输入框中,输入被控端的 RustDesk ID,然后点击 "连接"。根据提示输入被控端设置的临时密码或被控端系统账户的密码,即可建立远程连接。
2.1补充说明 1.“ID服务器”与“中继服务器”都不加端口,这是该镜像的特点。勾上websocket√确保能远程 2.前面两个开头不要加https或http也不要加端口,切记千万不要加端口,否则连接不上 3.使用方法和向日葵、ToDesk一样,知道ID和密码就能远程连接,也可以通过登录账号后同步自己的设备,设置自定义密码直接连接 4.底部出现“就绪”才算成功,如果提示(提示未就绪,请检查网络连接)请检查前面重申的内容 5.如果登录账号后看不到设备,点击设置->常规,停止服务,再开启服务就行了 6.访问api后台:http://服务器IP地址:21114,可以进行添加用户,设备管理等操作!默认管理员用户名为:admin 7.通过容器日志获取管理员密码,自己查看日志往下翻,查看日志我的命令是
docker-compose -f /home/compose/rustdesk/docker-compose.yml logs
- 找到这行 admin password is : 的密码;也能找到一行 Key : 字眼去复制下来。或者去.pub文件获取的公钥。
- 配置21114端口的API后,客户端登录即可同步登录账号的信息。
🛠️ 维护与管理
- 更新服务 当有新版本的 RustDesk 服务器发布时,你可以通过以下步骤进行更新:
# 进入 docker-compose.yml 所在目录
cd ~/rustdesk-server
# 拉取最新镜像
docker-compose pull
# 重新启动服务
docker-compose up -d
# 可选择性删除旧镜像
docker image prune
-
数据备份 定期备份 RustDesk 项目目录下的
data文件夹。其中包含了最重要的密钥文件。一旦丢失,所有已配置的客户端可能需要重新配对。 -
日志查看 如果遇到问题,可以查看容器的日志来帮助诊断:
# 查看 RustDesk 服务日志
docker logs rustdesk-server
# 实时查看日志
docker logs -f rustdesk-server
❓ 常见问题排查
-
客户端状态显示"未就绪"
- 检查端口:确认服务器防火墙和云服务商安全组已精确开放了前述的所有必要端口,特别是 21116 的 TCP 和 UDP 都必须打开。
- 检查 IP 地址:确认
docker-compose.yml文件中的RELAY等参数以及客户端配置中填写的服务器 IP 地址和端口是完全正确的。 - 检查密钥:确认客户端配置中填写的 Key 与服务器
./data/rustdesk/server/id_ed25519.pub文件中的内容完全一致。
-
设备管理界面不显示在线设备
- 虽然设备可以正常连接和控制,但管理界面不显示在线设备,可能是设备状态上报延迟或服务组件通信异常。
- 尝试重启客户端,强制客户端重新建立连接并上报状态。
- 检查服务器日志,查看是否有连接错误或状态上报相关的错误信息。
-
连接卡顿或延迟高 这通常与服务器带宽有关。自建服务器中,远程桌面的音视频数据会流经你的服务器。如果带宽不足,容易引发卡顿。建议选择带宽充足(如 3Mbps 以上)的服务器,并根据需要调整 RustDesk 客户端的画质和码率设置。
4. 连接延迟高 - 尽量使用 P2P 连接:确保两端网络支持 UPnP 或手动映射端口,减少中继依赖 - 服务器配置过低:升级服务器 CPU 或内存(推荐 2G 内存以上) - 软件的设定-常规,开启UDP打洞和IPV6 P2P连接
通过以上步骤,你应该已经成功使用 Docker Compose 部署了属于自己的 RustDesk 远程桌面服务器。享受安全、私密的远程控制体验吧!