#!/bin/sh set -eu export PORT="${PORT:-7860}" export STEALTH_PORT="${STEALTH_PORT:-3011}" export ENABLE_STEALTH="${ENABLE_STEALTH:-false}" export PLAYWRIGHT_BROWSERS_PATH="${PLAYWRIGHT_BROWSERS_PATH:-/ms-playwright}" export FULL_APP_RESTART_INTERVAL="${FULL_APP_RESTART_INTERVAL:-3000}" echo "[start] PORT=$PORT" echo "[start] ENABLE_STEALTH=$ENABLE_STEALTH" echo "[start] STEALTH_PORT=$STEALTH_PORT" echo "[start] FULL_APP_RESTART_INTERVAL=$FULL_APP_RESTART_INTERVAL" shutdown_children() { echo "[start] stopping child processes..." if [ -n "${MAIN_PID:-}" ]; then kill "$MAIN_PID" 2>/dev/null || true fi if [ -n "${STEALTH_PID:-}" ]; then kill "$STEALTH_PID" 2>/dev/null || true fi wait 2>/dev/null || true } trap 'shutdown_children; exit 0' INT TERM while true; do echo "[start] launching app stack..." unset STEALTH_PID unset MAIN_PID unset TIMER_PID if [ "$ENABLE_STEALTH" = "true" ]; then export STEALTH_PROXY="${STEALTH_PROXY:-http://127.0.0.1:$STEALTH_PORT}" echo "[start] starting stealth-proxy at $STEALTH_PROXY" PORT="$STEALTH_PORT" node /app/stealth-proxy/index.js & STEALTH_PID=$! echo "[start] waiting for stealth-proxy to be ready..." READY=false for i in $(seq 1 30); do if wget -qO- "http://127.0.0.1:$STEALTH_PORT/health" 2>/dev/null | grep -q '"ok"\|"restarting"\|"initializing"'; then READY=true break fi sleep 2 done if [ "$READY" = "true" ]; then echo "[start] stealth-proxy responded on port $STEALTH_PORT" else echo "[start] warning: stealth-proxy did not become ready in time" fi fi echo "[start] starting main service on port $PORT..." node /app/dist/index.js & MAIN_PID=$! echo "[start] main pid=$MAIN_PID" if [ -n "${STEALTH_PID:-}" ]; then echo "[start] stealth pid=$STEALTH_PID" fi ( sleep "$FULL_APP_RESTART_INTERVAL" echo "[start] scheduled full app restart triggered" if [ -n "${MAIN_PID:-}" ]; then kill "$MAIN_PID" 2>/dev/null || true fi if [ -n "${STEALTH_PID:-}" ]; then kill "$STEALTH_PID" 2>/dev/null || true fi ) & TIMER_PID=$! set +e wait "$MAIN_PID" MAIN_EXIT=$? set -e echo "[start] main service exited with code $MAIN_EXIT" if [ -n "${TIMER_PID:-}" ]; then kill "$TIMER_PID" 2>/dev/null || true fi if [ -n "${STEALTH_PID:-}" ]; then kill "$STEALTH_PID" 2>/dev/null || true wait "$STEALTH_PID" 2>/dev/null || true fi echo "[start] app stack stopped, restarting in 3s..." sleep 3 done