g2api / start.sh
LerinaOwO's picture
Update start.sh
f72b0fb verified
#!/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