Files
RDtop/scripts/install-rustdesk-server.sh
Orchestrator 3f49556cd7 feat: add RustDesk Server scripts (hbbs+hbbr native, systemd, UFW)
- install-rustdesk-server.sh: download & install hbbs/hbbr from GitHub releases
- rustdesk-hbbs.service: systemd unit for ID-server (ports 21115-21116)
- rustdesk-hbbr.service: systemd unit for relay (port 21117)
- open-rustdesk-ports.sh: idempotent UFW port opening
- README.md: deployment instructions

Generated by orchestrator in APAW worktree, applied to VPS 2.59.219.61
2026-05-15 23:50:39 +01:00

96 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# RustDesk Server Native Installer (hbbs + hbbr)
# Debian 12 / x86_64 / static musl binaries from GitHub releases
# Idempotent
VERSION="1.1.15"
ARCH="amd64"
ZIP_URL="https://github.com/rustdesk/rustdesk-server/releases/download/${VERSION}/rustdesk-server-linux-${ARCH}.zip"
INSTALL_DIR="/usr/local/bin"
DATA_DIR="/var/lib/rustdesk-server"
CONFIG_DIR="/etc/rustdesk-server"
SERVICE_DIR="/etc/systemd/system"
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
log() {
echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')] $*"
}
need_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
log "Installing: $1"
apt-get update -qq
apt-get install -y -qq "$1"
fi
}
log "=== RustDesk Server Install ==="
log "Version: $VERSION"
log "Arch: $ARCH"
need_cmd curl
need_cmd unzip
log "Downloading release $VERSION..."
curl -fsSL -o "$TMP_DIR/rustdesk-server.zip" "$ZIP_URL"
log "Extracting..."
unzip -q -o "$TMP_DIR/rustdesk-server.zip" -d "$TMP_DIR"
log "Installing binaries to $INSTALL_DIR..."
install -m 755 "$TMP_DIR/$ARCH/hbbs" "$INSTALL_DIR/hbbs"
install -m 755 "$TMP_DIR/$ARCH/hbbr" "$INSTALL_DIR/hbbr"
install -m 755 "$TMP_DIR/$ARCH/rustdesk-utils" "$INSTALL_DIR/rustdesk-utils"
log "Creating directories..."
mkdir -p "$DATA_DIR" "$CONFIG_DIR"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
for service in rustdesk-hbbs.service rustdesk-hbbr.service; do
src="$SCRIPT_DIR/$service"
dst="$SERVICE_DIR/$service"
if [ -f "$src" ]; then
cp -f "$src" "$dst"
chmod 644 "$dst"
log "Installed: $dst"
else
log "WARNING: $src not found — ensure systemd unit files are in the same directory."
fi
done
log "Reloading systemd..."
systemctl daemon-reload
log "Enabling services..."
systemctl enable rustdesk-hbbs.service || true
systemctl enable rustdesk-hbbr.service || true
log "Starting services..."
systemctl restart rustdesk-hbbs.service || true
systemctl restart rustdesk-hbbr.service || true
sleep 2
log "=== Status ==="
systemctl status rustdesk-hbbs.service --no-pager || true
systemctl status rustdesk-hbbr.service --no-pager || true
PUB_KEY="$DATA_DIR/id_ed25519.pub"
if [ -f "$PUB_KEY" ]; then
log "=== Server Public Key ==="
cat "$PUB_KEY"
else
log "Public key not found yet. It will be generated on first successful hbbs start."
fi
log "=== Listening Ports ==="
ss -tlnp | grep -E '21115|21116|21117' || true
log "=== Done ==="