#!/bin/bash # Script para iniciar el stack completo de TubeScript con Docker set -e echo "════════════════════════════════════════════════════════════" echo " 🐳 TubeScript-API - Inicio con Docker" echo "════════════════════════════════════════════════════════════" echo "" # Colores para output GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Función para imprimir mensajes con color print_success() { echo -e "${GREEN}✅ $1${NC}" } print_warning() { echo -e "${YELLOW}⚠️ $1${NC}" } print_error() { echo -e "${RED}❌ $1${NC}" } # Verificar que Docker esté instalado if ! command -v docker &> /dev/null; then print_error "Docker no está instalado" echo "Instala Docker desde: https://www.docker.com/get-started" exit 1 fi if ! command -v docker-compose &> /dev/null; then print_error "Docker Compose no está instalado" exit 1 fi print_success "Docker y Docker Compose encontrados" # Solicitar URL de la API si no está configurada echo "" echo "🌐 Configuración de API URL..." # Verificar si existe archivo .env if [ ! -f ".env" ]; then echo "" echo "Por favor, ingresa la URL del dominio de la API:" echo "(Ejemplos: https://api.tubescript.com, http://localhost:8080, https://mi-dominio.com)" read -p "API URL [http://localhost:8080]: " api_url api_url=${api_url:-http://localhost:8080} echo "API_URL=$api_url" > .env print_success "Creado archivo .env con API_URL=$api_url" else # Leer URL existente source .env print_success "Usando API_URL existente: $API_URL" echo "¿Deseas cambiar la API URL? (s/N)" read -p "> " change_url if [ "$change_url" = "s" ] || [ "$change_url" = "S" ]; then read -p "Nueva API URL: " new_api_url if [ ! -z "$new_api_url" ]; then sed -i.bak "s|API_URL=.*|API_URL=$new_api_url|" .env print_success "API_URL actualizada a: $new_api_url" fi fi fi # Crear archivos de configuración si no existen echo "" echo "📝 Verificando archivos de configuración..." if [ ! -f "stream_config.json" ]; then echo '{ "platforms": { "YouTube": {"rtmp_url": "", "stream_key": "", "enabled": false}, "Facebook": {"rtmp_url": "", "stream_key": "", "enabled": false}, "Twitch": {"rtmp_url": "", "stream_key": "", "enabled": false}, "X (Twitter)": {"rtmp_url": "", "stream_key": "", "enabled": false}, "Instagram": {"rtmp_url": "", "stream_key": "", "enabled": false}, "TikTok": {"rtmp_url": "", "stream_key": "", "enabled": false} } }' > stream_config.json print_success "Creado stream_config.json" else print_success "stream_config.json ya existe" fi if [ ! -f "streams_state.json" ]; then echo '{}' > streams_state.json print_success "Creado streams_state.json" else print_success "streams_state.json ya existe" fi if [ ! -f "cookies.txt" ]; then touch cookies.txt print_warning "Creado cookies.txt vacío (opcional para videos restringidos)" else print_success "cookies.txt existe" fi # Crear directorio data si no existe if [ ! -d "data" ]; then mkdir -p data print_success "Creado directorio data/" fi # Detener contenedores existentes si los hay echo "" echo "🛑 Deteniendo contenedores existentes..." docker-compose down 2>/dev/null || true # Construir las imágenes echo "" echo "🔨 Construyendo imágenes Docker..." docker-compose build # Iniciar los servicios echo "" echo "🚀 Iniciando servicios..." docker-compose up -d # Esperar a que los servicios estén listos echo "" echo "⏳ Esperando que los servicios inicien..." sleep 5 # Verificar estado de los servicios echo "" echo "📊 Estado de los servicios:" docker-compose ps # Mostrar logs iniciales echo "" echo "📋 Logs recientes:" docker-compose logs --tail=10 echo "" echo "════════════════════════════════════════════════════════════" print_success "¡Servicios iniciados correctamente!" echo "════════════════════════════════════════════════════════════" echo "" echo "📡 Servicios disponibles:" echo "" echo " 🌐 Panel Web Streamlit:" echo " http://localhost:8501" echo "" echo " 📡 API FastAPI:" echo " http://localhost:8080" echo " http://localhost:8080/docs (Documentación Swagger)" echo "" echo "────────────────────────────────────────────────────────────" echo "📝 Comandos útiles:" echo "" echo " Ver logs en tiempo real:" echo " docker-compose logs -f" echo "" echo " Ver logs de un servicio:" echo " docker-compose logs -f streamlit-panel" echo " docker-compose logs -f tubescript-api" echo "" echo " Detener servicios:" echo " docker-compose down" echo "" echo " Reiniciar servicios:" echo " docker-compose restart" echo "" echo " Ver estado:" echo " docker-compose ps" echo "" echo "════════════════════════════════════════════════════════════" echo "🎉 ¡Listo para transmitir!" echo "════════════════════════════════════════════════════════════"