如果你手里有一台公网云服务器,如果你恰巧又需要经常远程在家里的那台电脑或者在公司里的那台电脑,那这就是你的不二选择。为什么这么讲呢,相信大部分人在工作后或者说学计算机的大部分都有远程桌面的需求,或多或少都用过向日葵、Todesk、网易UU等等。这个方案不管你是Windows、Linux、还是Mac,都能保证高质量的远程连接,最重要的是能保证你的数据安全,全链路自己掌控。
用过向日葵、todesk之类的远程桌面软件都知道,你不交会费.....画面质量和连接状态有的时候确实很感人,放两张对比图给大家看看,左边(Todesk)、右边(RustDesk)。


蛋蛋蛋最恼火的是什么呢?你不交钱就给你用一会就不让你用了,以前还好,但是近几年AI的发展导致服务器的紧张,估计Todesk这类远程桌面的公司服务器也因此变得紧张,免费用户那就得不到更好的体验。最气人的是你大概率要等3-5分钟左右以后才能重连。


## 有一种情况,当然是个人猜测,但也可能是真实情况,如果你是新用户,可能你在使用todesk这类软件的时候会感觉还不错,画面质量和连接稳定性都可以,但随着你使用时间越长,就越容易出现我所说的这两个比较影响使用感受的问题,也许这是该服务商的一种用户粘性策略,促使用户办理VIP使用.
## 以上说明仅仅猜测,不做任何其他解释
言归正传,接下来我们讲怎么进行rustdesk远程桌面软件怎么进行自建服务器私有化部署
一 简介
官网RustDesk:开源远程桌面与自建服务器解决方案,RustDesk 是一个功能完整的开源远程控制替代方案,支持自托管和安全性,配置简单。您完全控制自己的数据,无需担心安全问题。免费是它最大的优点,开源是它最高尚的品质,跨平台是它最基本的操作。
二 安装
这个方案最大的问题就是需要一个带公网的云服务器,但是对配置没有什么强制性要求,基本上各大云服务器厂商的最低配置2C2G轻量应用服务器都能带动。如果你是阿里云、腾讯云、京东云等平台的新用户,基本上可以99元买一整年服务器的使用,甚至更低价格;对比你每个月至少25块(包年158RMB)的其他平台的VIP费,这个服务器的费用省到了极致而且质量更好更稳定,没有别人和你抢占!!!服务器你还能够搭建个人博客或者玩玩小龙虾openclaw。
因为我的服务器除了做中继服务用途,还要玩OpenClaw、Hermes Agent以及Astrbot,所以我先安装了1Panel面板来进行管理,也就是说几乎都是docker容器应用管理。可以自行参考1Panel官网1Panel - 现代化、开源的Linux服务器运维管理面板安装方式进行安装。
2.1 服务端(中继服务)
云服务器系统发行版为Ubuntu 24.04LTS,可自行选择Linux发行系统包括但不限于Rockylinux9、Centos、Debian等。
2.1.1 安装
a) 通过浏览器输入1panel的webui访问面板地址,进入应用商店,搜索Rustdesk,点击安装,安装时会提示你配置端口,保持默认即可。
核心组件说明:
HBBS(ID服务器):负责分配ID和建立连接
HBBR(中继服务器):当P2P连接不通时,负责转发流量

b) 放行防火墙
到云服务厂商的控制台中该轻量应用服务器的防火墙界面,去放开该软件的端口,端口如下
TCP:21115,21116,21117,21118,21119
UDP:21116c) 获取通信Key
当然这个方案之所以只有你自己能用不跟别人共享还有一个关键点就是,这个加密KEY,只有通过了这个Key的客户端才能使用这个中继服务器。
找到rustdesk的安装目录,1Panel中该目录在/opt/1panel/apps/rustdesk/rustdesk/下
进入data目录,ls查看当前目录下是否有以.pub结尾的文件(如id_ed25519.pub)
查看这个文件并复制下来文件内容,这就是后面我们要用到的通信Key

2.1.2 运行
1panel下安装了RustDesk容器应用基本上服务器一直运行,该RustDesk服务端也一直运行
2.1.3 Docker Compose原始安装
2.1.3.1 直接使用服务器IP
#1.创建并进入应用目录
mkdir -p ~/docker-apps/rustdesk;
cd ~/docker-apps/rustdesk
#2.创建并编辑compose.yaml
vim compose.yaml;
#粘贴以下内容到yaml文件
services:
rustdesk-server:
container_name: rustdesk
# 使用 s6 版本实现单容器运行 hbbs 和 hbbr
image: rustdesk/rustdesk-server-s6:latest
environment:
# 重要:将 1.2.3.4 替换为你服务器的【公网 IP】
- RELAY=1.2.3.4:21117
# 强制加密,提高安全性
- ENCRYPTED_ONLY=1
volumes:
- ./data:/data
# 显式映射所有必要端口
ports:
- "21115:21115"
- "21116:21116"
- "21116:21116/udp"
- "21117:21117"
- "21118:21118"
- "21119:21119"
restart: always
#3. 安装
sudo docker compose up -d2.1.3.2 借用域名反代服务器IP
#1.创建并进入应用目录
mkdir -p ~/docker-apps/rustdesk;
cd ~/docker-apps/rustdesk
mkdir -p data
mkdir -p caddy_data
mkdir -p caddy_config
#2.创建并编辑compose.yaml
vim compose.yaml;
#粘贴以下内容到yaml文件
services:
rustdesk-server:
container_name: rustdesk
image: rustdesk/rustdesk-server-s6:latest
environment:
- RELAY=你的域名:21117
- ENCRYPTED_ONLY=1
volumes:
- ./data:/data
ports:
- "21115:21115"
- "21116:21116"
- "21116:21116/udp"
- "21117:21117"
- "21118:21118"
- "21119:21119"
restart: always
caddy:
image: caddy:latest
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy_data:/data
- ./caddy_config:/config
depends_on:
- rustdesk-server
#3. 创建反代域名配置文件Caddyfile
vim Caddyfile
#粘贴以下内容到Caddyfile文件
你的域名 {
handle /ws/id* {
reverse_proxy rustdesk-server:21118
}
handle /ws/relay* {
reverse_proxy rustdesk-server:21119
}
handle {
respond "RustDesk WSS endpoint OK. Open https://rustdesk.com/web and use 你的域名 as your server." 200
}
}
#4. 拉取镜像
docker compose pull
#5. 安装
sudo docker compose up -d安装完成以后,其余基本上与1panel无异。
2.2 客户端
我们实现远程桌面控制,在本地电脑和远程电脑上都需要安装RustDesk的客户端程序,数据流通过 远程被控电脑--->中继服务器---->本地控制电脑,首先我们到安装包下载地址Releases · rustdesk/rustdesk根据对应设备的操作系统进行下载。我当前环境被控电脑为(Rockylinux9)、控制电脑为(Windows11)。
2.2.1 安装
在被控电脑上打开浏览器进入下载地址选择点击Fedora进行安装包下载,下载完成后进行安装,可自行决定安装位置,一般下载应用到/opt目录下
mv ./rustdesk-xxx.rpm /opt/
cd /opt
sudo dnf/yum install ./rustdesk-xxx.rpm控制电脑上安装的是exe版本,所以直接双击即可运行客户端。

2.2.2 配置
配置ID服务器,以保证客户端数据通过中继服务器进行通信
a) 打开RustDesk界面,点击ID右边的三个点(菜单)---> 网络 ---> ID/中继服务器
b) ID服务器(ID Server):填写云服务器的公网IP; 中继服务器(Relay Server):填写云服务器的公网IP;
KEY:填写2.1章节中获取的通信Key,最好是复制粘贴方式,避免有格式出错
c) 检查状态,如果底部显示“Ready(就绪)”,说明电脑已经成功挂载到服务器上了



被控电脑和控制电脑都需要按照上方配置步骤进行配置
三 使用
配置完成后,在控制电脑上打开运行RustDesk,直接输入被控电脑的ID,按照提示就能看到被控电脑的桌面或者进行终端操作,还有一个能够打开被控电脑的摄像头。





3.1 开机自启
对于 Rocky Linux 9 这种使用 systemd 管理服务的系统,要实现 RustDesk 或自建服务的开机自启,可以根据你的具体需求(是让服务端自启,还是被控端自启)来操作
如果是客户端,在 Rocky Linux 上安装了 .rpm 包后,RustDesk 通常会自动注册为一个系统服务。你只需要在终端执行以下命令来激活它:
#设置开机自启并立即启动
sudo systemctl enable --now rustdesk
#检查服务状态
sudo systemctl status rustdesk
#如果看到 active (running) 和 enabled,说明已经配置成功。哪怕你没登录桌面,只要电脑通电开机,它就会自动连接到你的 ID 服务器如果是服务端,你在 1Panel 中通过应用商店安装了 RustDesk 服务器(HBBS/HBBR),设置非常简单,在 1Panel 面板操作,找到应用“RustDesk”,确认“自启动”开关是开启状态;因为是安装在容器里,所以只要保证Docker服务本身是自启动的,里面的容器自然就会自动启动
#确保 Docker 是开机自启的
sudo systemctl enable docker3.2 保证开机即远控
刚开机或者重启设备时,停留在输入密码的登录界面时,停留在输入密码的登录界面时,运行的是 GDM (GNOME Display Manager),其默认协议是Wayland。Wayland 的核心设计理念是安全,它严禁一个程序(如 RustDesk)获取另一个程序(登录框)的像素信息,RustDesk 作为普通服务,在用户未登录前,往往没有足够的权限去接管由系统 root 级权限运行的 GDM 会话。
为什么手动登录以后就可以了呢?当你输入密码并进入桌面后,情况发生了变化,登录动作触发了用户会话(User Session)的启动,此时 RustDesk 的插件或服务得以在你的用户权限下完整加载。虽然 Rocky Linux 9 桌面默认也是 Wayland,但 RustDesk 在进入桌面后,可以通过 pipewire 或 xdg-desktop-portal 申请截屏权限,“为什么锁屏也能控”? 这是一个关键点。一旦你登录过,系统已经建立了用户会话。锁屏界面只是用户会话的一个“覆盖层”,而不是像刚开机时那种完全独立的、由系统控制的登录界面。
为了实现“无人值守”,即开机不接显示器、不手动输入密码也能远程,可以采用下列方案:
禁用Wayland,将 Rocky Linux 9 的图形界面强制切换回传统的 X11 协议。X11 没有 Wayland 那么多权限限制,RustDesk 对其支持最完美。
#1.编辑GDM配置文件
sudo vim /etc/gdm/custom.conf
#2.找到[daemon]部分,取消下面这一行的注释
WaylandEnable=false
#3.保存并重启系统
sudo reboot四 其他
这款软件本身是可以安装手机端APP的,能够实现手机控制远端电脑或者共享屏幕操作给远端设备,但是因为23年-25年期间被ZP份子利用该软件进行不正当利用现已经被国内手机厂商的应用商店下架了且无法安装,不过苹果手机还是可以在APP Store上面安装,方便各位开发者、运维人员、以及需要远程电脑办公人员。
技术永远是用来改善人们的生活的,而不是用来破坏的
五 迁移
服务端如果遇到服务器快过期了需要迁移到新服务器,需要按照如下顺序迁移
5.1 升级并确认最新镜像
cd /home/ahui/docker-apps/rustdesk
# 拉取最新镜像
docker compose pull
# 重新创建 RustDesk 容器
docker compose up -d --no-deps rustdesk-server
# 检查运行状态和版本
docker compose ps
docker exec rustdesk hbbs --version
docker exec rustdesk hbbr --version确认 RustDesk 远程连接正常后,再进行迁移。
如果
docker compose pull因镜像源网络问题失败,可单独处理镜像拉取,不影响当前正在运行的容器。
5.2 备份旧 RustDesk
# 1. 进入 RustDesk 服务端目录
cd /home/ahui/docker-apps/rustdesk
# 记录当前公钥,迁移到新服务器后再比较一次
cat data/id_ed25519.pub
sha256sum data/id_ed25519 data/id_ed25519.pub
# 2. 停止正在运行的容器
docker compose down
docker compose ps
# 3. 打包整个 RustDesk 目录
cd /home/ahui/docker-apps
sudo tar -czpf /tmp/rustdesk-backup.tar.gz rustdesk/
# 检查备份
ls -lh /tmp/rustdesk-backup.tar.gz
tar -tzf /tmp/rustdesk-backup.tar.gz | head -30
# 确认 data 目录已备份
tar -tzf /tmp/rustdesk-backup.tar.gz | grep '^rustdesk/data/'
# 4. 暂时恢复旧服务器
cd /home/ahui/docker-apps/rustdesk
docker compose up -d
docker compose ps
# 5. 生成校验文件
sha256sum /tmp/rustdesk-backup.tar.gz
sha256sum /tmp/rustdesk-backup.tar.gz > /tmp/rustdesk-backup.tar.gz.sha256备份中至少应包含:
rustdesk/data/db_v2.sqlite3
rustdesk/data/id_ed25519
rustdesk/data/id_ed25519.pub
rustdesk/compose.yml
rustdesk/Caddyfile
rustdesk/caddy_data/
rustdesk/caddy_config/5.3 传输备份到新服务器
如果新服务器 SSH 端口为 22222:
scp -P 22222 \
/tmp/rustdesk-backup.tar.gz \
/tmp/rustdesk-backup.tar.gz.sha256 \
ahui@新服务器IP:/tmp/登录新服务器:
ssh -p 22222 ahui@新服务器IP检查备份完整性:
cd /tmp
sha256sum -c rustdesk-backup.tar.gz.sha256正常应显示:
rustdesk-backup.tar.gz: OK5.4 新服务器安装 Docker
Ubuntu 24.04 可直接使用系统仓库安装:
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
# 将当前用户加入 docker 组
sudo usermod -aG docker ahui重新登录 SSH 后检查:
docker --version
docker compose version5.5 恢复 RustDesk 文件
mkdir -p /home/ahui/docker-apps
sudo tar -xzpf /tmp/rustdesk-backup.tar.gz \
-C /home/ahui/docker-apps/
cd /home/ahui/docker-apps/rustdesk
ls -lah
ls -lah data重新检查密钥:
cat data/id_ed25519.pub
sha256sum data/id_ed25519 data/id_ed25519.pub应与旧服务器完全一致。
5.6 拉取 Docker 镜像
正常情况下:
docker compose pull如果 Docker Hub 访问超时,可通过 DaoCloud 镜像源拉取:
docker pull m.daocloud.io/docker.io/rustdesk/rustdesk-server-s6:latest
docker pull m.daocloud.io/docker.io/library/caddy:latest重新打回原来的镜像标签:
docker tag \
m.daocloud.io/docker.io/rustdesk/rustdesk-server-s6:latest \
rustdesk/rustdesk-server-s6:latest
docker tag \
m.daocloud.io/docker.io/library/caddy:latest \
caddy:latest检查:
docker images5.7 启动新服务器 RustDesk
cd /home/ahui/docker-apps/rustdesk
# 使用本地已有镜像,不再重新拉取
docker compose up -d --pull never
# 检查
docker compose ps
docker exec rustdesk hbbs --version
docker exec rustdesk hbbr --version查看日志:
docker logs rustdesk --tail 80
docker logs caddy --tail 50RustDesk 应显示:
Key pair is VALID
Listening on tcp :21117
Listening on tcp/udp :21116
Listening on tcp :21115
Listening on websocket :21118
Listening on websocket :211195.8 检查端口和安全组
检查服务器监听:
sudo ss -lntup | grep -E ':(80|443|21115|21116|21117|21118|21119)\b'安全组建议放行:
22222/TCP SSH
80/TCP HTTP
443/TCP HTTPS
21115/TCP
21116/TCP
21116/UDP
21117/TCP
21118/TCP
21119/TCPWindows 可测试:
Test-NetConnection 新服务器IP -Port 21115
Test-NetConnection 新服务器IP -Port 21116
Test-NetConnection 新服务器IP -Port 21117
Test-NetConnection 新服务器IP -Port 4435.9 切换 DNS
确认新服务器运行正常后,将:
你的域名 → 旧服务器 IP修改为:
你的域名 → 新服务器 IP检查解析:
Resolve-DnsName 你的域名必要时刷新 Windows DNS:
ipconfig /flushdns5.10 验证迁移结果
新服务器查看实时日志:
docker logs -f rustdesk使用 RustDesk 实际连接设备。
如果日志出现:
New relay request ...
Relayrequest ... got paired
Both are raw说明新的 RustDesk Relay 已经正常工作。
确认常用设备均可正常连接后,再停止旧服务器:
cd /home/ahui/docker-apps/rustdesk
docker compose down旧服务器到期后即可释放。
注意事项
data/id_ed25519和data/id_ed25519.pub必须完整迁移,否则客户端 Key 会发生变化。建议整个
rustdesk目录一起备份,包括data、compose.yml、Caddyfile、caddy_data和caddy_config。正式切换 DNS 前,不要提前停止旧服务器。
DNS 切换完成并确认新服务器实际产生 RustDesk 连接日志后,再关闭旧服务器。
远程桌面RustDesk自建服务器私有化部署
https://blog.xuehui.chat/archives/rustdesk_deployment