#!/bin/bash set -e # Global PIDs for cleanup VNC_PID="" FLUXBOX_PID="" # Cleanup function to terminate background processes on script exit cleanup() { echo "Cleaning up background processes..." # Kill processes in reverse order of startup. The '|| true' prevents errors if a process is already dead. if [ -n "$FLUXBOX_PID" ]; then kill -TERM $FLUXBOX_PID 2>/dev/null || true; fi if [ -n "$VNC_PID" ]; then kill -TERM $VNC_PID 2>/dev/null || true; fi echo "Cleanup complete." } trap cleanup EXIT # Xvfb is now started by xvfb-run in the Dockerfile ENTRYPOINT. # The DISPLAY variable will be set automatically by xvfb-run. # It's safer to source conda.sh directly source /opt/conda/etc/profile.d/conda.sh conda activate camo # Start supporting services (VNC, window manager) echo "Starting VNC server on port 5900..." # The -noxdamage flag is added to improve compatibility with VNC clients like the one on macOS. # The '-localhost no' part was likely a typo and has been removed as the default is to allow non-localhost connections. x11vnc -forever -usepw -display $DISPLAY -rfbport 5900 -o /var/log/x11vnc.log -shared -noxdamage & VNC_PID=$! echo "Starting Fluxbox window manager..." fluxbox > /var/log/fluxbox.log 2>&1 & FLUXBOX_PID=$! # Start main application echo "Starting Camoufox server with arguments: $@" exec python3 camoufox_server.py "$@"