feat: add persistent RustDesk client service for VPS
- Add rustdesk-vps.service (systemd unit with Xvfb + DBus) - Add rustdesk-vps-start.sh (Xvfb startup + DBus session for RustDesk) - Update xorg-dummy.service without -nolisten local (fixes socket access) - Update rustdesk-dummy.service with /usr/share/ binary path - Add docker-compose.vps.yml with hbbs/hbbr RustDesk server - RustDesk client connects to public relay rs-ny.rustdesk.com:21116 - ID: 458564614 (confirmed via --get-id) - Password: retrowest
This commit is contained in:
34
config/vps/rustdesk-vps-start.sh
Normal file
34
config/vps/rustdesk-vps-start.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/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
|
||||
17
config/vps/rustdesk-vps.service
Normal file
17
config/vps/rustdesk-vps.service
Normal file
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=RustDesk VPS Client
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Environment="DISPLAY=:99"
|
||||
ExecStartPre=-/usr/bin/pkill -9 Xvfb
|
||||
ExecStart=/usr/local/bin/rustdesk-vps-start.sh
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user