#!/bin/bash # Cloudflare Quick Tunnel (No Domain Required) # Generates a random stable-ish URL for the session echo "🚀 Starting Quick Tunnel..." echo "âš ī¸ Note: This uses a random trycloudflare.com URL." echo "âš ī¸ For a fixed custom domain, you must PURCHASE a domain and configure it via setup.sh" # Kill existing tunnels pkill -f "cloudflared tunnel" >/dev/null 2>&1 || true echo "🌐 Starting Frontend Tunnel (port 5174)..." cloudflared tunnel --url http://localhost:5174 > logs/tunnel-frontend.log 2>&1 & PID_FRONT=$! echo "🌐 Starting Backend Tunnel (port 8000)..." cloudflared tunnel --url http://localhost:8000 > logs/tunnel-backend.log 2>&1 & PID_BACK=$! echo "âŗ Waiting for tunnels to initialize..." sleep 5 URL_FRONT=$(grep -o 'https://.*\.trycloudflare.com' logs/tunnel-frontend.log | head -1) URL_BACK=$(grep -o 'https://.*\.trycloudflare.com' logs/tunnel-backend.log | head -1) check_url() { local url="$1" local max_retry="$2" local retry=1 while [ "$retry" -le "$max_retry" ]; do if curl -kfsS --max-time 8 "$url" >/dev/null 2>&1; then return 0 fi sleep 2 retry=$((retry + 1)) done return 1 } if [ -n "$URL_FRONT" ] && [ -n "$URL_BACK" ]; then FRONT_OK=false BACK_OK=false if check_url "${URL_FRONT}/login" 25 || check_url "${URL_FRONT}" 25; then FRONT_OK=true fi if check_url "${URL_BACK}/healthz" 25; then BACK_OK=true fi echo "" if [ "$FRONT_OK" = true ] && [ "$BACK_OK" = true ]; then echo "✅ Tunnels Started and reachable!" else echo "âš ī¸ Tunnels started, but health check not fully ready yet. Retry in 10-30s." fi echo "----------------------------------------" echo "Frontend: $URL_FRONT" echo "Backend: $URL_BACK" echo "----------------------------------------" echo "â„šī¸ Frontend tunnel can call backend via /api proxy; no need to set VITE_API_BASE_URL." echo "----------------------------------------" else echo "❌ Failed to get tunnel URLs. Check logs/tunnel-*.log" fi wait $PID_FRONT $PID_BACK