内容导航

2026/5/22

RustDesk 自建中继与 Debian 被控端部署记录

记录 RustDesk Server 迁移到云服务器后的端口规划、hbbs/hbbr systemd 服务、客户端统一配置,以及 Debian Xfce 被控端防休眠和防锁屏设置。

服务器与部署 RustDesk远程桌面Debiansystemd安全
本文目录

这篇只记录 RustDesk 远程桌面链路。它不再承载 FRP、n8n、ntfy 或 MyBlog 的部署细节,那些内容已经拆到对应文章里。

公开记录时只保留架构、端口和命令模板,不公开真实 key、设备 ID、完整安全组截图和可复用认证信息。

目标

原先 RustDesk Server 跑在本地 Debian,再通过 FRP 映射到云服务器。这个结构能用,但在校园网和手机流量环境下不够稳定:

  • 本地防火墙开启后,RustDesk 直连可能被随机端口阻断。
  • 手机流量和校园网 NAT 场景下,直连路径不可控。
  • 本地 Debian 休眠或锁屏后,被控端图形会话不可用。
  • RustDesk 中继服务放在本地,会受本地网络状态影响。

调整后的目标:

RustDesk 客户端
  -> 云服务器 hbbs / hbbr
  -> 被控设备 RustDesk service

云服务器只负责 RustDesk 中继和 rendezvous,本地 Debian 只作为被控端。

端口规划

端口协议作用建议
21115TCPhbbs TCP 服务保留
21116TCPhbbs rendezvous保留
21116UDPNAT 打洞保留
21117TCPhbbr relay 中继保留
21118TCPhbbs WebSocket可选
21119TCPhbbr WebSocket/兼容可选

普通桌面客户端和手机客户端通常只需要 21115-2111721116/udp。如果不用 Web 客户端,可以先在云安全组关闭 21118/21119,测试全部设备可连接后长期关闭。

云服务器部署 hbbs/hbbr

上传或下载 RustDesk Server release 后安装:

sudo mkdir -p /opt/rustdesk-server
cd /opt/rustdesk-server
unzip rustdesk-server-linux-amd64.zip
sudo install -m 755 amd64/hbbs /usr/local/bin/hbbs
sudo install -m 755 amd64/hbbr /usr/local/bin/hbbr

创建 hbbs 服务:

[Unit]
Description=RustDesk hbbs
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/hbbs -r <cloud-ip>:21117 -k <rustdesk-key>
Restart=always
RestartSec=3
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

创建 hbbr 服务:

[Unit]
Description=RustDesk hbbr
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/hbbr -k <rustdesk-key>
Restart=always
RestartSec=3
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

启动并验证:

sudo systemctl daemon-reload
sudo systemctl enable --now rustdesk-hbbs rustdesk-hbbr
systemctl status rustdesk-hbbs --no-pager
systemctl status rustdesk-hbbr --no-pager
ss -lntup | grep -E '21115|21116|21117|21118|21119'

客户端统一配置

每台客户端统一填写:

ID Server: <cloud-ip>:21116
Relay Server: <cloud-ip>:21117
API Server: 留空
Key: <rustdesk-key>

Linux 上常见配置文件:

/home/<user>/.config/rustdesk/RustDesk2.toml
/root/.config/rustdesk/RustDesk2.toml

system service 有时读取 root 配置,因此需要同步用户配置到 root:

sudo mkdir -p /root/.config/rustdesk
sudo cp -f /home/<user>/.config/rustdesk/RustDesk.toml /root/.config/rustdesk/
sudo cp -f /home/<user>/.config/rustdesk/RustDesk2.toml /root/.config/rustdesk/
sudo chown -R root:root /root/.config/rustdesk
sudo chmod 600 /root/.config/rustdesk/RustDesk*.toml
sudo systemctl restart rustdesk

停用本地 RustDesk Server

迁移到云服务器后,本地 Debian 不再运行 hbbs/hbbr

sudo systemctl disable --now hbbs hbbr
ps aux | grep -Ei 'hbbs|hbbr'

如果 FRP 里还有 RustDesk 端口映射,也应移除:

grep -n "rustdesk\|21115\|21116\|21117\|21118\|21119" /etc/frp/frpc.toml
sudo systemctl restart frpc

Debian 被控端图形会话

RustDesk 被控端依赖图形会话。确认 Xfce 会话存在:

echo $XDG_SESSION_TYPE
echo $DISPLAY
who

期望:

x11
:0.0
<user> seat0 ... (:0)

RustDesk 服务:

sudo systemctl enable --now rustdesk
systemctl status rustdesk --no-pager
ps aux | grep -i rustdesk

防休眠和防锁屏

禁止系统休眠:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

/etc/systemd/logind.conf

HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
IdleAction=ignore
IdleActionSec=0

禁用 Xfce 锁屏器:

mkdir -p ~/.config/autostart
cp /etc/xdg/autostart/light-locker.desktop ~/.config/autostart/ 2>/dev/null || true
grep -q '^Hidden=true' ~/.config/autostart/light-locker.desktop || echo 'Hidden=true' >> ~/.config/autostart/light-locker.desktop
pkill light-locker

关闭电源管理里的自动空闲动作:

xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-ac -n -t int -s 0
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-enabled -n -t bool -s false
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -n -t int -s 14
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/lock-screen-suspend-hibernate -n -t bool -s false

验证

云服务器:

systemctl status rustdesk-hbbs --no-pager
systemctl status rustdesk-hbbr --no-pager
ss -lntup | grep -E '21115|21116|21117'

Debian:

systemctl status rustdesk --no-pager
ps aux | grep -i rustdesk

客户端测试顺序:

手机 -> Debian
Windows -> Debian
Mac -> Debian
手机 -> Windows
Mac -> Windows

如果失败,优先检查 key 是否一致、Relay Server 是否写了 :21117、云安全组端口是否开放,以及 Debian 是否还停留在可用 X11 会话中。

评论

Giscus 评论尚未配置。填写 GitHub Discussions 的仓库和分类 ID 后,这里会显示评论区。