配置 RustDesk Server OSS
本文从已经登录 Linux VPS 的终端开始,安装 RustDesk Server OSS,并让 Windows 和 macOS 客户端使用自建服务器。
RustDesk 的程序、配置、密钥和数据统一保存在:
/opt/rustdesk-server/文中的示例域名为 rustdesk.example.com,使用时替换成自己的域名。
1. 安装 RustDesk Server OSS
进入 root shell:
sudo -i安装 curl、unzip 和系统防火墙:
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创建统一目录:
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 架构下载官方压缩包:
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" --version2. 写入配置
把域名和 SSH 端口替换成服务器的实际值:
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配置文件只有这一份:
/opt/rustdesk-server/config/server.env3. 注册系统服务
创建 hbbs 服务:
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 服务:
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建立服务链接并启动:
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 桌面客户端使用:
| 协议 | 端口 |
|---|---|
| TCP | 21115-21117 |
| UDP | 21116 |
执行:
. /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云平台安全组也要开放:
TCP 21115-21117
UDP 211165. 检查服务和公钥
检查服务和端口:
systemctl status rustdesk-hbbs rustdesk-hbbr --no-pager
ss -lntup | grep -E ':(21115|21116|21117)\b'两个服务都应显示 active (running)。
查看客户端需要填写的公钥:
cat /opt/rustdesk-server/data/id_ed25519.pub私钥和数据库位于:
/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 安装后,在“系统设置 → 隐私与安全性”中授予:
辅助功能
屏幕录制
输入监控在每台客户端中进入:
ID 旁边的菜单“⋮” → 网络 → 解锁网络设置填写:
| 字段 | 内容 |
|---|---|
| ID Server | rustdesk.example.com:21116 |
| Relay Server | 留空 |
| API Server | 留空 |
| Key | id_ed25519.pub 的完整内容 |
控制端和被控端填写相同的 ID Server 和 Key。首页显示“就绪”后,即可通过对方的 RustDesk ID 发起连接。
无人值守访问密码在以下位置设置:
设置 → 安全 → 密码7. 日常管理
查看状态:
systemctl status rustdesk-hbbs rustdesk-hbbr --no-pager查看日志:
journalctl -u rustdesk-hbbs -u rustdesk-hbbr -n 100 --no-pager重启:
systemctl restart rustdesk-hbbs rustdesk-hbbr停止:
systemctl stop rustdesk-hbbs rustdesk-hbbr启动:
systemctl start rustdesk-hbbs rustdesk-hbbr8. 更新
打开 RustDesk Server Release,先停止服务,再把第 1 节的 rustdesk_version 改成新版本号并重新执行下载、解压命令:
systemctl stop rustdesk-hbbs rustdesk-hbbr解压完成后启动服务并检查版本:
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. 备份和恢复
停止服务并备份整个目录:
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 之外的加密存储中。
恢复时执行:
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.pub10. 移除
先按第 9 节创建备份,再执行:
. /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. 常见问题
客户端离线或无法连接时,依次检查:
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 系统服务。