Skip to content

配置 RustDesk Server OSS ​

本文从已经登录 Linux VPS 的终端开始,安装 RustDesk Server OSS,并让 Windows 和 macOS 客户端使用自建服务器。

RustDesk 的程序、配置、密钥和数据统一保存在:

text
/opt/rustdesk-server/

文中的示例域名为 rustdesk.example.com,使用时替换成自己的域名。

1. 安装 RustDesk Server OSS ​

进入 root shell:

bash
sudo -i

安装 curl、unzip 和系统防火墙:

bash
if command -v apt-get >/dev/null 2>&1; then
  apt-get update
  apt-get install -y ca-certificates curl unzip ufw
elif command -v dnf >/dev/null 2>&1; then
  dnf install -y ca-certificates curl unzip firewalld
elif command -v yum >/dev/null 2>&1; then
  yum install -y ca-certificates curl unzip firewalld
fi

创建统一目录:

bash
rustdesk_root='/opt/rustdesk-server'

install -d -m 700 "$rustdesk_root"
install -d -m 755 "$rustdesk_root/bin"
install -d -m 700 "$rustdesk_root/config"
install -d -m 700 "$rustdesk_root/data"
install -d -m 700 "$rustdesk_root/downloads"
install -d -m 755 "$rustdesk_root/systemd"

本文更新时的服务端版本为 1.1.16。下面的命令会根据 CPU 架构下载官方压缩包:

bash
rustdesk_root='/opt/rustdesk-server'
rustdesk_version='1.1.16'

case "$(uname -m)" in
  x86_64|amd64)
    rustdesk_asset='rustdesk-server-linux-amd64.zip'
    rustdesk_archive_dir='amd64'
    ;;
  aarch64|arm64)
    rustdesk_asset='rustdesk-server-linux-arm64v8.zip'
    rustdesk_archive_dir='arm64v8'
    ;;
  armv7l|armv7)
    rustdesk_asset='rustdesk-server-linux-armv7.zip'
    rustdesk_archive_dir='armv7'
    ;;
  i386|i486|i586|i686)
    rustdesk_asset='rustdesk-server-linux-i386.zip'
    rustdesk_archive_dir='i386'
    ;;
  *)
    printf '暂未支持这个 CPU 架构:%s\n' "$(uname -m)"
    exit 1
    ;;
esac

rustdesk_archive="$rustdesk_root/downloads/${rustdesk_version}-${rustdesk_asset}"

curl -fL --retry 3 \
  -o "$rustdesk_archive" \
  "https://github.com/rustdesk/rustdesk-server/releases/download/${rustdesk_version}/${rustdesk_asset}"

unzip -t "$rustdesk_archive"
unzip -jo "$rustdesk_archive" \
  "$rustdesk_archive_dir/hbbs" \
  "$rustdesk_archive_dir/hbbr" \
  "$rustdesk_archive_dir/rustdesk-utils" \
  -d "$rustdesk_root/bin"

chmod 755 "$rustdesk_root/bin"/*
printf '%s\n' "$rustdesk_version" > "$rustdesk_root/config/version"

"$rustdesk_root/bin/hbbs" --version
"$rustdesk_root/bin/hbbr" --version

2. 写入配置 ​

把域名和 SSH 端口替换成服务器的实际值:

bash
cat > /opt/rustdesk-server/config/server.env <<'EOF'
RUSTDESK_HOST=rustdesk.example.com
HBBS_PORT=21116
HBBR_PORT=21117
SSH_PORT=22
EOF

chmod 600 /opt/rustdesk-server/config/server.env

配置文件只有这一份:

text
/opt/rustdesk-server/config/server.env

3. 注册系统服务 ​

创建 hbbs 服务:

bash
cat > /opt/rustdesk-server/systemd/rustdesk-hbbs.service <<'EOF'
[Unit]
Description=RustDesk ID server
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/opt/rustdesk-server/data
EnvironmentFile=/opt/rustdesk-server/config/server.env
ExecStart=/opt/rustdesk-server/bin/hbbs -p ${HBBS_PORT} -r ${RUSTDESK_HOST}:${HBBR_PORT} -k _
Restart=always
RestartSec=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target
EOF

创建 hbbr 服务:

bash
cat > /opt/rustdesk-server/systemd/rustdesk-hbbr.service <<'EOF'
[Unit]
Description=RustDesk relay server
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/opt/rustdesk-server/data
EnvironmentFile=/opt/rustdesk-server/config/server.env
ExecStart=/opt/rustdesk-server/bin/hbbr -p ${HBBR_PORT} -k _
Restart=always
RestartSec=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target
EOF

建立服务链接并启动:

bash
ln -sfn \
  /opt/rustdesk-server/systemd/rustdesk-hbbs.service \
  /etc/systemd/system/rustdesk-hbbs.service

ln -sfn \
  /opt/rustdesk-server/systemd/rustdesk-hbbr.service \
  /etc/systemd/system/rustdesk-hbbr.service

systemctl daemon-reload
systemctl enable --now rustdesk-hbbs rustdesk-hbbr

/etc/systemd/system/ 中只有两个链接,完整服务定义仍保存在 /opt/rustdesk-server/systemd/。

4. 开放防火墙端口 ​

RustDesk 桌面客户端使用:

协议端口
TCP21115-21117
UDP21116

执行:

bash
. /opt/rustdesk-server/config/server.env
rustdesk_tcp_start=$((HBBS_PORT - 1))

if command -v ufw >/dev/null 2>&1; then
  ufw allow "${SSH_PORT}/tcp"
  ufw allow "${rustdesk_tcp_start}:${HBBR_PORT}/tcp"
  ufw allow "${HBBS_PORT}/udp"
  ufw --force enable
  ufw status
elif command -v firewall-cmd >/dev/null 2>&1; then
  systemctl enable --now firewalld
  firewall-cmd --permanent --add-port="${SSH_PORT}/tcp"
  firewall-cmd --permanent --add-port="${rustdesk_tcp_start}-${HBBR_PORT}/tcp"
  firewall-cmd --permanent --add-port="${HBBS_PORT}/udp"
  firewall-cmd --reload
  firewall-cmd --list-all
fi

云平台安全组也要开放:

text
TCP 21115-21117
UDP 21116

5. 检查服务和公钥 ​

检查服务和端口:

bash
systemctl status rustdesk-hbbs rustdesk-hbbr --no-pager
ss -lntup | grep -E ':(21115|21116|21117)\b'

两个服务都应显示 active (running)。

查看客户端需要填写的公钥:

bash
cat /opt/rustdesk-server/data/id_ed25519.pub

私钥和数据库位于:

text
/opt/rustdesk-server/data/

6. 配置 Windows 和 macOS 客户端 ​

从 RustDesk 官方 Release 下载客户端:

  • 普通 Windows 电脑选择 x86_64.exe;
  • Windows ARM 电脑选择 aarch64.exe;
  • Apple Silicon Mac 选择 aarch64.dmg;
  • Intel Mac 选择 x86_64.dmg。

Windows 安装后,进入“设置 → 常规 → 服务”,安装 RustDesk 系统服务。

macOS 安装后,在“系统设置 → 隐私与安全性”中授予:

text
辅助功能
屏幕录制
输入监控

在每台客户端中进入:

text
ID 旁边的菜单“⋮” → 网络 → 解锁网络设置

填写:

字段内容
ID Serverrustdesk.example.com:21116
Relay Server留空
API Server留空
Keyid_ed25519.pub 的完整内容

控制端和被控端填写相同的 ID Server 和 Key。首页显示“就绪”后,即可通过对方的 RustDesk ID 发起连接。

无人值守访问密码在以下位置设置:

text
设置 → 安全 → 密码

7. 日常管理 ​

查看状态:

bash
systemctl status rustdesk-hbbs rustdesk-hbbr --no-pager

查看日志:

bash
journalctl -u rustdesk-hbbs -u rustdesk-hbbr -n 100 --no-pager

重启:

bash
systemctl restart rustdesk-hbbs rustdesk-hbbr

停止:

bash
systemctl stop rustdesk-hbbs rustdesk-hbbr

启动:

bash
systemctl start rustdesk-hbbs rustdesk-hbbr

8. 更新 ​

打开 RustDesk Server Release,先停止服务,再把第 1 节的 rustdesk_version 改成新版本号并重新执行下载、解压命令:

bash
systemctl stop rustdesk-hbbs rustdesk-hbbr

解压完成后启动服务并检查版本:

bash
systemctl start rustdesk-hbbs rustdesk-hbbr

/opt/rustdesk-server/bin/hbbs --version
/opt/rustdesk-server/bin/hbbr --version
cat /opt/rustdesk-server/data/id_ed25519.pub

更新只替换 /opt/rustdesk-server/bin/ 中的程序,配置、密钥和数据库继续保存在原目录。

Windows 和 Mac 客户端直接从官方 Release 下载新版本并覆盖安装。

9. 备份和恢复 ​

停止服务并备份整个目录:

bash
backup_file="/root/rustdesk-$(date +%Y%m%d-%H%M%S).tgz"

systemctl stop rustdesk-hbbs rustdesk-hbbr
tar -C /opt -czf "$backup_file" rustdesk-server
systemctl start rustdesk-hbbs rustdesk-hbbr

sha256sum "$backup_file" > "${backup_file}.sha256"
ls -lh "$backup_file" "${backup_file}.sha256"

把备份文件保存到 VPS 之外的加密存储中。

恢复时执行:

bash
backup_file='/root/rustdesk-YYYYMMDD-HHMMSS.tgz'

systemctl stop rustdesk-hbbs rustdesk-hbbr
mv /opt/rustdesk-server \
  "/opt/rustdesk-server.old.$(date +%Y%m%d-%H%M%S)"
tar -C /opt -xzf "$backup_file"

ln -sfn \
  /opt/rustdesk-server/systemd/rustdesk-hbbs.service \
  /etc/systemd/system/rustdesk-hbbs.service
ln -sfn \
  /opt/rustdesk-server/systemd/rustdesk-hbbr.service \
  /etc/systemd/system/rustdesk-hbbr.service

systemctl daemon-reload
systemctl enable --now rustdesk-hbbs rustdesk-hbbr
cat /opt/rustdesk-server/data/id_ed25519.pub

10. 移除 ​

先按第 9 节创建备份,再执行:

bash
. /opt/rustdesk-server/config/server.env
rustdesk_tcp_start=$((HBBS_PORT - 1))

if command -v ufw >/dev/null 2>&1; then
  ufw --force delete allow "${rustdesk_tcp_start}:${HBBR_PORT}/tcp"
  ufw --force delete allow "${HBBS_PORT}/udp"
elif command -v firewall-cmd >/dev/null 2>&1; then
  firewall-cmd --permanent --remove-port="${rustdesk_tcp_start}-${HBBR_PORT}/tcp"
  firewall-cmd --permanent --remove-port="${HBBS_PORT}/udp"
  firewall-cmd --reload
fi

systemctl disable --now rustdesk-hbbs rustdesk-hbbr
test ! -L /etc/systemd/system/rustdesk-hbbs.service \
  || unlink /etc/systemd/system/rustdesk-hbbs.service
test ! -L /etc/systemd/system/rustdesk-hbbr.service \
  || unlink /etc/systemd/system/rustdesk-hbbr.service
systemctl daemon-reload

mv /opt/rustdesk-server \
  "/opt/rustdesk-server.removed.$(date +%Y%m%d-%H%M%S)"

RustDesk 已停止,防火墙规则已经移除,完整目录仍可用于恢复。

11. 常见问题 ​

客户端离线或无法连接时,依次检查:

bash
systemctl status rustdesk-hbbs rustdesk-hbbr --no-pager
journalctl -u rustdesk-hbbs -u rustdesk-hbbr -n 200 --no-pager
ss -lntup | grep -E ':(21115|21116|21117)\b'
cat /opt/rustdesk-server/data/id_ed25519.pub

同时核对:

  • 云平台安全组;
  • 域名的 A/AAAA 记录;
  • 客户端的 ID Server 和 Key;
  • macOS 的辅助功能、屏幕录制和输入监控权限;
  • Windows 的 RustDesk 系统服务。

12. 上游资料 ​

快逃科学技术研究院 · 快逃文库 · 基于 MIT 许可发布

加载中...