You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
| #!/bin/bash
 | |
| set -euo pipefail
 | |
| 
 | |
| # Normalizar rutas de DB a absolutas para que bot y web apunten al mismo archivo
 | |
| if [ -n "${DB_PATH:-}" ]; then
 | |
|   # readlink -f resuelve a ruta absoluta y elimina ./, ../, etc.
 | |
|   DB_PATH="$(readlink -f "$DB_PATH")" || true
 | |
|   export DB_PATH
 | |
| else
 | |
|   DATA_DIR="${DATA_DIR:-/app/data}"
 | |
|   DATA_DIR="$(readlink -f "$DATA_DIR")" || true
 | |
|   export DATA_DIR
 | |
| fi
 | |
| 
 | |
| # Determinar archivo de base de datos para esperas
 | |
| if [ -n "${DB_PATH:-}" ]; then
 | |
|   DB_FILE="$DB_PATH"
 | |
| else
 | |
|   DB_FILE="${DATA_DIR:-/app/data}/tasks.db"
 | |
| fi
 | |
| 
 | |
| # Arranca el bot en segundo plano (puerto 3007 por defecto)
 | |
| BOT_PORT="${BOT_PORT:-3007}"
 | |
| PORT="$BOT_PORT" bun run index.ts &
 | |
| 
 | |
| # Esperar a que exista el archivo de DB (máx ~30s)
 | |
| echo "[startup] Esperando a que exista la base de datos en: $DB_FILE"
 | |
| for i in $(seq 1 150); do
 | |
|   if [ -f "$DB_FILE" ]; then break; fi
 | |
|   sleep 0.2
 | |
| done
 | |
| 
 | |
| # Esperar a que las tablas de auth estén creadas por las migraciones del bot (máx ~30s)
 | |
| if command -v sqlite3 >/dev/null 2>&1; then
 | |
|   echo "[startup] Verificando tablas de autenticación (web_tokens, web_sessions)..."
 | |
|   for i in $(seq 1 150); do
 | |
|     if [ -f "$DB_FILE" ]; then
 | |
|       HAS_AUTH=$(sqlite3 "$DB_FILE" "SELECT 1 FROM sqlite_master WHERE type='table' AND name IN ('web_tokens','web_sessions') LIMIT 1;" || true)
 | |
|       if [ "$HAS_AUTH" = "1" ]; then
 | |
|         break
 | |
|       fi
 | |
|     fi
 | |
|     sleep 0.2
 | |
|   done
 | |
| else
 | |
|   echo "[startup] sqlite3 no disponible; se omite verificación de tablas (continuando)."
 | |
| fi
 | |
| 
 | |
| # Arranca la web (SvelteKit) en segundo plano en el puerto 3008
 | |
| WEB_PORT="${WEB_PORT:-3008}"
 | |
| pushd apps/web >/dev/null
 | |
| PORT="$WEB_PORT" bun ./build/index.js &
 | |
| popd >/dev/null
 | |
| 
 | |
| # Pequeña espera para evitar condiciones de carrera
 | |
| sleep 1
 | |
| 
 | |
| # Arranca el router en primer plano en el puerto 3000 (o $PORT si viene de CapRover)
 | |
| exec bun proxy.ts
 |