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
This commit is contained in:
95
scripts/install-rustdesk-server.sh
Executable file
95
scripts/install-rustdesk-server.sh
Executable file
@@ -0,0 +1,95 @@
|
||||
#!/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 ==="
|
||||
Reference in New Issue
Block a user