78 lines
1.9 KiB
Bash
Executable File
78 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Start VNC streaming services for Skyvern
|
|
#
|
|
# This script sets up the complete VNC streaming stack:
|
|
# - Xvfb (virtual X11 display)
|
|
# - x11vnc (VNC server for the display)
|
|
# - websockify (WebSocket-to-VNC proxy)
|
|
|
|
set -euo pipefail
|
|
|
|
readonly DISPLAY_NUM=":99"
|
|
readonly SCREEN_GEOMETRY="1920x1080x24"
|
|
readonly VNC_PORT="5900"
|
|
readonly WS_PORT="6080"
|
|
|
|
log() {
|
|
printf '%s\n' "$*"
|
|
}
|
|
|
|
is_running_exact() {
|
|
local process_name="$1"
|
|
pgrep -x "$process_name" > /dev/null 2>&1
|
|
}
|
|
|
|
is_running_match() {
|
|
local pattern="$1"
|
|
pgrep -f "$pattern" > /dev/null 2>&1
|
|
}
|
|
|
|
ensure_running() {
|
|
local service_label="$1"
|
|
local running_check_type="$2" # "exact" | "match"
|
|
local check_value="$3"
|
|
local start_cmd="$4"
|
|
|
|
if [[ "$running_check_type" == "exact" ]]; then
|
|
if is_running_exact "$check_value"; then
|
|
log "$service_label already running"
|
|
return 0
|
|
fi
|
|
else
|
|
if is_running_match "$check_value"; then
|
|
log "$service_label already running"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
log "Service $service_label not running. Starting..."
|
|
eval "$start_cmd"
|
|
log "$service_label started"
|
|
}
|
|
|
|
log "Starting VNC streaming services for Skyvern..."
|
|
log ""
|
|
|
|
ensure_running \
|
|
"Xvfb" "exact" "Xvfb" \
|
|
"Xvfb $DISPLAY_NUM -screen 0 $SCREEN_GEOMETRY > /dev/null 2>&1 &"
|
|
|
|
ensure_running \
|
|
"x11vnc" "exact" "x11vnc" \
|
|
"x11vnc -display $DISPLAY_NUM -bg -nopw -listen localhost -xkb -forever > /dev/null 2>&1"
|
|
|
|
ensure_running \
|
|
"websockify" "match" "websockify.*${WS_PORT}" \
|
|
"websockify $WS_PORT localhost:${VNC_PORT} --daemon > /dev/null 2>&1"
|
|
|
|
|
|
log ""
|
|
log "🎉 VNC streaming services are now running!"
|
|
log ""
|
|
log "Configuration:"
|
|
log " - Xvfb display: ${DISPLAY_NUM}"
|
|
log " - VNC server: localhost:${VNC_PORT}"
|
|
log " - WebSocket proxy: localhost:${WS_PORT}"
|
|
log ""
|
|
log "To stop services:"
|
|
log " pkill x11vnc && pkill websockify" |