技术 / Remote Access

RustDesk 自建服务端使用指南

在 Debian 服务器上部署 RustDesk OSS hbbs/hbbr,核对下载文件、端口、持久化密钥、systemd 和客户端设置。

文章目录

目标:在 Debian 上自建 RustDesk OSS ID/中继服务。下面以 Linux amd64、服务端 1.1.16 为固定示例;2026-10-15 已核对官方 ZIP 可下载、SHA-256 和目录结构,未在本轮启动真实 Linux 服务。

准备环境

  • Debian、root 或 sudo 权限;以下安装与服务管理命令按 root 编写。
  • 一台有公网 IP 的服务器,域名可选。
  • Linux amd64 架构;其他架构从服务端 Release 选择对应文件,不能沿用本例校验值。

端口与防火墙

端口 协议 服务与用途
21115 TCP hbbs:NAT 类型测试
21116 TCP hbbs:TCP 打洞与连接服务
21116 UDP hbbs:ID 注册与心跳
21117 TCP hbbr:中继服务
21118 TCP hbbs:WebSocket,仅 Web 客户端需要
21119 TCP hbbr:WebSocket,仅 Web 客户端需要

21114/TCP 是 Pro 版 Web 控制台端口,本篇 OSS 部署无需开放;它不是客户端心跳端口。

使用 UFW 时,为原生客户端放行:

ufw allow 21115/tcp
ufw allow 21116/tcp
ufw allow 21116/udp
ufw allow 21117/tcp
ufw status

云厂商安全组也要放行相同协议与端口。不要为了测试关闭整个防火墙;启用 UFW 前应先确保 SSH 管理规则已配置。

不使用 Web 客户端时保持 21118/21119 关闭。需要时通过配置正确的反向代理开放 WebSocket,并将后端端口限制为只有反代可访问;不要直接向公网开放后再信任客户端提供的 IP 头。

下载并核对服务端

服务端仓库是 rustdesk/rustdesk-server,与客户端仓库 rustdesk/rustdesk 不同。

apt update
apt install -y ca-certificates curl unzip
mkdir -p /opt/rustdesk-download
cd /opt/rustdesk-download
curl -fL --proto '=https' --tlsv1.2 -o rustdesk-server-linux-amd64.zip https://github.com/rustdesk/rustdesk-server/releases/download/1.1.16/rustdesk-server-linux-amd64.zip
printf '%s\n' '0565c41affe6c3f409b0bddfaf5a24ccbf3f64f5f8e3fec250b69a0d5f6bdbcf  rustdesk-server-linux-amd64.zip' | sha256sum -c -

只有校验成功后再继续。升级到其他版本时,先独立核对该版本官方 Release 的文件和摘要,再一起更新 URL 与校验值。

该 ZIP 内的程序位于 amd64/:

unzip rustdesk-server-linux-amd64.zip
install -d -m 755 /opt/rustdesk-server
install -m 755 amd64/hbbs amd64/hbbr /opt/rustdesk-server/

服务用户与持久化目录

程序和服务数据分开存放。创建独立系统用户,让两个服务使用同一数据目录:

id -u rustdesk >/dev/null 2>&1 || useradd --system --user-group --home-dir /var/lib/rustdesk --shell /usr/sbin/nologin rustdesk
install -d -o rustdesk -g rustdesk -m 700 /var/lib/rustdesk

如果是迁移旧服务,先停止旧进程并备份原工作目录,再把已有密钥与数据库迁入该数据目录并修正属主。不要在迁移时意外重新生成密钥。

systemd 开机自启

将下面的 YOUR_PUBLIC_HOST 替换成服务器公网域名或 IP。

创建 /etc/systemd/system/hbbs.service:

[Unit]
Description=RustDesk ID Server (hbbs)
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/opt/rustdesk-server/hbbs -r YOUR_PUBLIC_HOST:21117
WorkingDirectory=/var/lib/rustdesk
User=rustdesk
Group=rustdesk
UMask=0077
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

创建 /etc/systemd/system/hbbr.service:

[Unit]
Description=RustDesk Relay Server (hbbr)
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/opt/rustdesk-server/hbbr
WorkingDirectory=/var/lib/rustdesk
User=rustdesk
Group=rustdesk
UMask=0077
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

检查配置并启动:

systemd-analyze verify /etc/systemd/system/hbbs.service /etc/systemd/system/hbbr.service
systemctl daemon-reload
systemctl enable --now hbbr hbbs
systemctl status hbbs hbbr
journalctl -u hbbs -u hbbr -n 50 --no-pager

旧的前台/后台测试进程必须先退出,避免端口占用。检查监听端口:

ss -lntup | grep -E '21115|21116|21117'

密钥与客户端

hbbs 首次启动时会在工作目录生成密钥,不使用 hbbs -g:

  • /var/lib/rustdesk/id_ed25519:私钥,只留在服务端并备份。
  • /var/lib/rustdesk/id_ed25519.pub:公钥,提供给客户端。

确认文件存在,再读取公钥:

test -s /var/lib/rustdesk/id_ed25519
test -s /var/lib/rustdesk/id_ed25519.pub
cat /var/lib/rustdesk/id_ed25519.pub

客户端设置 → 网络:

  1. ID Server 填服务器域名或 IP。
  2. 如需显式指定中继,Relay Server 填同一服务器地址(默认中继端口 21117)。
  3. Key 填上面公钥文件的内容,不能填私钥。

将主机密钥纳入备份;升级或迁移时保留它,否则原客户端的公钥配置会失效。

验证与排错

  • 客户端能获取 ID:核对 hbbs、21116/TCP+UDP 和服务日志。
  • 在不同网络间测试直连;再测试强制中继,确认 hbbr 与 21117/TCP 正常。一次直连成功不能证明中继可用。
  • Key 错误:检查客户端公钥与服务端当前工作目录是否对应。
  • 服务启动失败:检查二进制架构、WorkingDirectory 权限和端口是否被旧进程占用。

参考:官方安装说明、官方端口与网络说明、1.1.16 Release。