#!/usr/bin/env zsh # start-chrome-remote.sh # Abre Google Chrome/Chromium en modo remote-debugging y usa un perfil persistente # Uso: # chmod +x start-chrome-remote.sh # ./start-chrome-remote.sh # # Mejoras: # - Permite configurar REMOTE_DEBUG_ADDRESS (por defecto 127.0.0.1). # - Si REMOTE_DEBUG_PUBLIC=1 se fuerza 0.0.0.0 (exponer a red pública, INSEGURO). # - Permite configurar REMOTE_DEBUG_PORT (por defecto 9222). # - Permite pasar flags adicionales con EXTRA_CHROME_FLAGS. # - Mantiene comportamiento headless cuando no hay DISPLAY. PROFILE_DIR="$HOME/.config/avanzacast-e2e-profile" mkdir -p "$PROFILE_DIR" # Permite sobreescribir binario con variable de entorno CHROME_BIN CHROME_BIN=${CHROME_BIN:-/usr/bin/google-chrome} if [ ! -x "$CHROME_BIN" ]; then CHROME_BIN=/usr/bin/google-chrome-stable fi if [ ! -x "$CHROME_BIN" ]; then CHROME_BIN=/usr/bin/chromium-browser fi if [ ! -x "$CHROME_BIN" ]; then CHROME_BIN=/usr/bin/chromium fi if [ ! -x "$CHROME_BIN" ]; then echo "No se encontró un binario de Chrome/Chromium. Exporta CHROME_BIN o instala Chrome/Chromium." >&2 exit 1 fi # Configurables REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-9222} # By default restrict debugging to localhost; set REMOTE_DEBUG_PUBLIC=1 to allow 0.0.0.0 if [ "${REMOTE_DEBUG_PUBLIC:-0}" = "1" ]; then REMOTE_DEBUG_ADDRESS=${REMOTE_DEBUG_ADDRESS:-0.0.0.0} else REMOTE_DEBUG_ADDRESS=${REMOTE_DEBUG_ADDRESS:-127.0.0.1} fi # Extra flags puede ser usado para ajustar comportamiento en CI o debug EXTRA_CHROME_FLAGS=${EXTRA_CHROME_FLAGS:-} echo "Arrancando Chrome/Chromium con remote-debugging en http://${REMOTE_DEBUG_ADDRESS}:${REMOTE_DEBUG_PORT} usando perfil: $PROFILE_DIR" if [ "${REMOTE_DEBUG_PUBLIC:-0}" = "1" ]; then echo "ADVERTENCIA: REMOTE_DEBUG_PUBLIC=1 permite conexiones desde cualquier host. Asegúrate de usar firewall/SSH tunneling para seguridad." >&2 fi # Opciones: usa headless nuevo por defecto si se ejecuta en CI (no hay DISPLAY), pero permite pasar flags extra. FLAGS=( --remote-debugging-port=${REMOTE_DEBUG_PORT} --remote-debugging-address=${REMOTE_DEBUG_ADDRESS} --user-data-dir="$PROFILE_DIR" --no-first-run --disable-extensions --disable-backgrounding-occluded-windows --window-size=1280,900 --enable-logging --v=1 ) # Si no hay DISPLAY, arrancamos headless; si hay DISPLAY, arrancamos en modo normal if [ -z "$DISPLAY" ]; then FLAGS+=(--headless=new --disable-gpu --no-sandbox --disable-dev-shm-usage) fi # Añadir flags extra si se proporcionan if [ -n "$EXTRA_CHROME_FLAGS" ]; then # Separa por espacio, permite pasar múltiples flags FLAGS+=(${=EXTRA_CHROME_FLAGS}) fi # Ejecutar en background y devolver control "$CHROME_BIN" "${(@)FLAGS}" "$@" & CHROME_PID=$! echo "Chrome PID: $CHROME_PID" echo "Remote debugging URL: http://${REMOTE_DEBUG_ADDRESS}:${REMOTE_DEBUG_PORT}/" # Notas de uso: # - Para exponer a otra máquina de forma segura, crea un tunnel SSH en lugar de exponer el puerto públicamente: # ssh -L 9222:localhost:9222 user@remoteserver # - Para probar la disponibilidad del endpoint: # curl -sS http://localhost:${REMOTE_DEBUG_PORT}/json/version