181 lines
5.7 KiB
Bash
181 lines
5.7 KiB
Bash
#!/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 "════════════════════════════════════════════════════════════"
|