目标:在阿里云轻量应用服务器上自建 RustDesk 服务端,实现免费、稳定、私密的跨地域远程桌面控制。
服务器信息:
地域:西南1(成都)
配置:2核2G / 40G ESSD / Ubuntu 22.04 LTS
公网 IP:`xxx.xxx.xxx.xxx`
登录用户:`admin`(通过 `sudo` 提权)
📦 第一步:服务器选购与环境准备
1.1 服务器选型
- 实例规格:阿里云轻量应用服务器 2核2G,45元/月。RustDesk 服务端资源占用极低,此配置绰绰有余。
- 地域选择:选 西南1(成都),物理距离最近,家中台式机到服务器延迟可低至 **3-8ms**,远程操作如内网般丝滑。
- 系统镜像:选择 Ubuntu 22.04 LTS(纯净系统镜像),生态成熟、教程丰富,便于排查问题。
1.2 防火墙端口放行(关键!)
在阿里云轻量应用服务器控制台 → 防火墙 页面,添加以下规则:
| 协议 | 端口范围 | 来源 IP | 备注 |
| :--- | :--- | :--- | :--- |
| TCP | 21115 | 0.0.0.0/0 | HBBS NAT 测试 |
| TCP | 21116 | 0.0.0.0/0 | HBBS TCP 打洞 |
| UDP | 21116 | 0.0.0.0/0 | 核心端口:ID 注册与心跳 |
| TCP | 21117 | 0.0.0.0/0 | HBBR 中继数据中转 |
| TCP | 21118 | 0.0.0.0/0 | Web 客户端支持(可选) |
| TCP | 21119 | 0.0.0.0/0 | Web 客户端支持(可选) |
> 错误记录:初次配置时遗漏了 UDP 21116,导致后续服务无法正常通信。
❌ 第二步:Docker 部署尝试及踩坑记录
2.1 安装 Docker 与 docker-compose
bash
# 更新软件包列表
sudo apt update
# 安装 Docker
sudo apt install docker.io -y
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户加入 docker 组(免 sudo 执行 docker 命令)
sudo usermod -aG docker $USER
newgrp docker
# 安装 docker-compose
sudo apt install docker-compose -y
2.2 创建 docker-compose.yml
bash
mkdir -p ~/rustdesk
cd ~/rustdesk
nano docker-compose.yml
初始配置内容(传统两容器模式):
bash
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r xxx.xxx.xxx.xxx:21117
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
2.3 错误 1:镜像拉取超时 / 找不到镜像
bash
docker-compose up -d
错误输出:
bash
ERROR: failed to resolve reference "docker.io/rustdesk/rustdesk-server:latest": i/o timeout
原因:国内服务器直接访问 Docker Hub 极不稳定,连接超时。
尝试解决:
- 配置国内镜像加速器,编辑
/etc/docker/daemon.json:
bash
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://hub-mirror.c.163.com"
]
}
- 重启 Docker 服务:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
结果:仍然超时或报 TLS handshake timeout,部分镜像源已失效。
2.4 错误 2:更换加速器后出现 failed size validation
bash
docker-compose up -d
错误输出:
bash
ERROR: failed commit on ref "...": failed size validation: 53854 != 894: failed precondition
原因:从国内不稳定的镜像源下载的镜像层文件损坏或不全,Docker 本地缓存了错误数据。
尝试解决:
bash
docker system prune -a
docker-compose up -d
结果:无效,仍报同样错误。
进一步处理:彻底清除 Docker 存储目录:
bash
sudo systemctl stop docker
sudo rm -rf /var/lib/docker
sudo systemctl start docker
并重新配置为阿里云官方镜像加速器(需登录阿里云控制台获取专属地址):
bash
{
"registry-mirrors": ["https://11x0715p.mirror.aliyuncs.com"]
}
2.5 错误 3:镜像拉取成功但容器反复重启,提示需要许可证
现象:
-
镜像成功拉取,容器启动后立即退出,状态为
Restarting。 -
查看日志:
bash
docker logs hbbs
错误输出:
bash
[ERROR hbbs::lic] Registered email required (-m option). Please pay and register on https://rustdesk.com/server.
原因 :国内网络缓存污染下,latest 标签被指向了一个需要付费许可证的专业版镜像,而非免费开源的社区版。
尝试解决:
-
更换镜像标签为特定版本号(如
1.1.9、1.1.14),均报not found。 -
更换为官方推荐的
rustdesk-server-s6:latest一体化镜像,同样not found。
结论 :Docker 路线在国内网络环境下极不稳定,决定放弃 Docker,转向直接运行二进制文件。
✅ 第三步:最终正确方案------直接运行官方二进制文件
3.1 下载并解压服务端程序
bash
# 创建独立目录
mkdir -p ~/rustdesk-bin && cd ~/rustdesk-bin
# 从 GitHub 下载最新版 Linux 服务端(支持断点续传)
wget https://github.com/rustdesk/rustdesk-server/releases/latest/download/rustdesk-server-linux-amd64.zip
# 安装解压工具
sudo apt install unzip -y
# 解压
unzip rustdesk-server-linux-amd64.zip
# 进入程序目录
cd amd64
chmod +x hbbs hbbr
错误记录:
-
wget下载过程中因网络波动超时,但wget自动重试并断点续传,最终成功。 -
系统未预装
unzip,需手动安装。
3.2 启动服务(后台运行)
bash
# 启动 ID/信令服务器 (hbbs),并指定中继服务器地址
nohup ./hbbs -r xxx.xxx.xxx.xxxx:21117 > hbbs.log 2>&1 &
# 启动中继服务器 (hbbr)
nohup ./hbbr > hbbr.log 2>&1 &
服务启动后,可用 ps aux | grep -E "hbbs|hbbr" 验证进程是否存在。
3.3 获取连接密钥 (Key)
bash
cat id_ed25519.pub
输出:
bash
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
🖥️ 第四步:客户端下载与配置
4.1 下载 RustDesk 客户端
在笔记本电脑 和家中台式机上分别安装 RustDesk 客户端。
官方下载渠道:
-
GitHub Releases:https://github.com/rustdesk/rustdesk/releases
-
移动端:App Store / Google Play / F-Droid
4.2 配置自建服务器
-
打开 RustDesk 客户端,点击 ID 旁边的 ⋮ 菜单 → 网络。
-
ID 服务器 :填入
XXX.XXX.XXX.XXX -
Key :粘贴
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= -
点击确定保存。
配置完成后,两台设备即可通过 RustDesk 生成的 ID 进行安全、高速的远程连接。
🔧 第五步:后续优化(systemd 开机自启)
当前使用 nohup 运行,会有服务器重启后服务不会自动恢复的问题。可以创建 systemd 服务实现开机自启和异常自动重启。
5.1 创建 hbbs 服务文件
bash
sudo nano /etc/systemd/system/rustdesk-hbbs.service
粘贴以下内容:
bash
[Unit]
Description=RustDesk HBBS (ID Server)
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/admin/rustdesk-bin/amd64
ExecStart=/home/admin/rustdesk-bin/amd64/hbbs -r xxx.xxx.xxx.xxx:21117
Restart=on-failure
User=admin
[Install]
WantedBy=multi-user.target
5.2 创建 hbbr 服务文件
bash
sudo nano /etc/systemd/system/rustdesk-hbbr.service
粘贴以下内容:
bash
[Unit]
Description=RustDesk HBBR (Relay Server)
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/admin/rustdesk-bin/amd64
ExecStart=/home/admin/rustdesk-bin/amd64/hbbr
Restart=on-failure
User=admin
[Install]
WantedBy=multi-user.target
5.3 启用并启动服务
bash
sudo systemctl daemon-reload
sudo systemctl enable rustdesk-hbbs rustdesk-hbbr
sudo systemctl start rustdesk-hbbs rustdesk-hbbr
5.4 管理命令
-
查看状态:
sudo systemctl status rustdesk-hbbs -
停止服务:
sudo systemctl stop rustdesk-hbbs -
查看日志:
sudo journalctl -u rustdesk-hbbs -f
📊 错误总结速查表
| 错误现象 | 原因 | 最终解决方案 |
|---|---|---|
i/o timeout 拉取镜像失败 |
国内网络无法稳定访问 Docker Hub | 改用阿里云官方镜像加速器 + 二进制部署 |
failed size validation |
镜像层文件下载损坏 | 彻底清除 Docker 存储目录,重配镜像源 |
not found 指定版本号镜像 |
标签已从官方仓库移除 | 使用最新 latest 或直接从 GitHub 下载二进制 |
Registered email required |
拉取到需要付费许可证的专业版镜像 | 放弃 Docker,改用免费社区版二进制文件 |
wget 下载超时 |
GitHub 资产服务器不稳定 | 依赖 wget 自动断点续传 |
unzip: command not found |
系统未预装解压工具 | sudo apt install unzip -y |
💎 总结
-
国内网络环境下,通过 Docker 部署 RustDesk 服务端极易因镜像拉取、缓存污染等问题失败,不建议作为首选方案。
-
最稳定、最直接的方式是直接从 GitHub 下载官方编译好的二进制文件手动运行。
-
确保防火墙开放 UDP 21116 端口,这是客户端注册与心跳通信的核心通道。
-
使用 systemd 管理服务,保障服务器重启后自动恢复。