#!/bin/bash # RustDesk VPS Headless Client Startup Script # Starts Xvfb :99, waits for display, then launches RustDesk client via DBus set -e # Kill old Xvfb pkill -9 Xvfb 2>/dev/null || true sleep 1 # Start Xvfb /usr/bin/Xvfb :99 -screen 0 1920x1080x24 -ac -nolisten tcp -nolisten unix & XVFB_PID=$! sleep 2 # Wait for display to be ready for i in $(seq 1 30); do if xdpyinfo -display :99 > /dev/null 2>&1; then break fi sleep 1 done # Verify display is up if ! xdpyinfo -display :99 > /dev/null 2>&1; then echo "ERROR: Xvfb failed to start on :99" kill $XVFB_PID 2>/dev/null || true exit 1 fi export DISPLAY=:99 # Start RustDesk client inside DBus session (required for headless GUI apps) exec /usr/bin/dbus-run-session -- /usr/share/rustdesk/rustdesk --server