- 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
96 lines
2.4 KiB
Bash
Executable File
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 ==="
|