# 🌐 Configuración de API URL ## 📖 Descripción El panel Streamlit necesita conectarse a la API FastAPI para obtener información sobre los streams de YouTube. Puedes configurar la URL de la API según tus necesidades. --- ## ⚙️ Métodos de Configuración ### Método 1: Automático con Script (Recomendado) Cuando ejecutas el script de inicio, se te pedirá la URL de la API: ```bash ./docker-start.sh ``` El script te preguntará: ``` 🌐 Configuración de API URL... Por favor, ingresa la URL del dominio de la API: (Ejemplos: https://api.tubescript.com, http://localhost:8080, https://mi-dominio.com) API URL [http://localhost:8080]: ``` **Opciones:** - Presiona ENTER para usar el valor por defecto: `http://localhost:8080` - O ingresa tu URL personalizada ### Método 2: Archivo .env Manual Crea un archivo `.env` en la raíz del proyecto: ```bash # .env API_URL=https://tu-dominio.com ``` O copia el ejemplo: ```bash cp .env.example .env # Edita .env con tu URL ``` --- ## 🌍 Casos de Uso ### Caso 1: Ambos Servicios en Docker (Local) Si ejecutas tanto la API como el panel Streamlit en Docker en la misma máquina: ```bash API_URL=http://tubescript-api:8000 ``` Este es el valor que se usa internamente entre contenedores Docker. ### Caso 2: API Externa con Dominio Si tienes la API desplegada en un servidor con dominio: ```bash API_URL=https://api.tubescript.com ``` O con subdominio: ```bash API_URL=https://tubescript-api.midominio.com ``` ### Caso 3: API en Otra Máquina Local Si la API está en otra máquina de tu red local: ```bash API_URL=http://192.168.1.100:8080 ``` ### Caso 4: API en Localhost (Sin Docker) Si la API corre directamente en tu máquina sin Docker: ```bash API_URL=http://localhost:8080 ``` O desde el contenedor Docker accediendo al host: ```bash API_URL=http://host.docker.internal:8080 ``` --- ## 🔧 Configuración en docker-compose.yml El archivo `docker-compose.yml` ya está configurado para usar la variable de entorno: ```yaml environment: - API_URL=${API_URL:-http://tubescript-api:8000} ``` Esto significa: - Si existe `API_URL` en `.env`, se usa ese valor - Si no existe, se usa el valor por defecto: `http://tubescript-api:8000` --- ## 📝 Ejemplos Completos ### Ejemplo 1: Desarrollo Local ```bash # .env API_URL=http://localhost:8080 ``` ```bash ./docker-start.sh # Acceder a: http://localhost:8501 ``` ### Ejemplo 2: Producción con Dominio ```bash # .env API_URL=https://api.tubescript.com ``` ```bash ./docker-start.sh # Panel Streamlit se conectará a https://api.tubescript.com ``` ### Ejemplo 3: Servidor Interno ```bash # .env API_URL=http://servidor-interno.empresa.local:8080 ``` --- ## 🔄 Cambiar API URL ### Método 1: Usando el Script ```bash ./docker-start.sh ``` El script detectará que ya existe `.env` y preguntará: ``` ¿Deseas cambiar la API URL? (s/N) > s Nueva API URL: https://nueva-url.com ``` ### Método 2: Editar Manualmente ```bash # Editar .env nano .env # Cambiar la línea: API_URL=https://nueva-url.com # Reiniciar servicios docker-compose down docker-compose up -d ``` ### Método 3: Comando sed ```bash sed -i 's|API_URL=.*|API_URL=https://nueva-url.com|' .env docker-compose restart streamlit-panel ``` --- ## ✅ Verificar Configuración ### Ver la URL Configurada ```bash cat .env ``` ### Ver Variables en el Contenedor ```bash docker exec streamlit_panel env | grep API_URL ``` ### Probar Conexión ```bash # Desde el contenedor docker exec streamlit_panel curl -I $API_URL/docs # Debe retornar 200 OK ``` --- ## 🐛 Solución de Problemas ### Error: "No se puede conectar a la API" **Causa:** La URL de la API no es accesible desde el contenedor Streamlit. **Soluciones:** 1. **Verificar que la API esté corriendo:** ```bash curl http://localhost:8080/docs # Debe responder 200 OK ``` 2. **Si ambos servicios están en Docker, usar nombre interno:** ```bash API_URL=http://tubescript-api:8000 ``` 3. **Si la API está en el host (fuera de Docker):** ```bash # macOS/Windows Docker Desktop API_URL=http://host.docker.internal:8080 # Linux API_URL=http://172.17.0.1:8080 ``` 4. **Verificar firewall:** ```bash # Asegúrate de que el puerto de la API esté abierto ``` ### Error: "Variable API_URL no definida" **Causa:** No existe archivo `.env`. **Solución:** ```bash # Crear .env con valor por defecto echo "API_URL=http://localhost:8080" > .env # O ejecutar el script ./docker-start.sh ``` ### La URL no se actualiza **Causa:** Docker Compose no recargó las variables. **Solución:** ```bash # Reiniciar servicios docker-compose down docker-compose up -d # O reconstruir docker-compose up -d --force-recreate streamlit-panel ``` --- ## 🔐 Seguridad ### Proteger el Archivo .env El archivo `.env` está en `.gitignore` y no se subirá al repositorio. **Nunca hagas:** ```bash git add .env # ❌ NO hacer esto ``` ### Usar HTTPS en Producción Para producción, usa HTTPS: ```bash API_URL=https://api.tubescript.com # ✅ HTTPS ``` No uses HTTP en producción: ```bash API_URL=http://api.tubescript.com # ❌ Inseguro ``` --- ## 📋 Checklist de Configuración - [ ] Crear archivo `.env` o usar `./docker-start.sh` - [ ] Configurar `API_URL` con la URL correcta - [ ] Verificar que la API esté accesible desde esa URL - [ ] Reiniciar servicios Docker si cambias la URL - [ ] Probar conexión desde el panel Streamlit - [ ] No subir `.env` al repositorio Git --- ## 🎯 Configuraciones Recomendadas ### Desarrollo Local (Docker) ```bash API_URL=http://tubescript-api:8000 ``` ### Desarrollo Local (Sin Docker) ```bash API_URL=http://localhost:8080 ``` ### Staging/Testing ```bash API_URL=https://staging-api.tubescript.com ``` ### Producción ```bash API_URL=https://api.tubescript.com ``` --- ## 📞 Comandos Útiles ```bash # Ver configuración actual cat .env # Cambiar API URL echo "API_URL=https://nueva-url.com" > .env # Aplicar cambios docker-compose restart streamlit-panel # Ver logs para verificar conexión docker-compose logs -f streamlit-panel # Probar conexión desde el contenedor docker exec streamlit_panel curl $API_URL/docs ``` --- ## 🎉 Resumen 1. La API URL se configura en el archivo `.env` 2. El script `./docker-start.sh` te ayuda a configurarla automáticamente 3. Usa URLs internas de Docker para mejor rendimiento 4. Usa HTTPS en producción 5. El archivo `.env` está protegido en `.gitignore` **¡Listo para configurar tu API URL! 🚀**