6.4 KiB
🌐 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:
./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:
# .env
API_URL=https://tu-dominio.com
O copia el ejemplo:
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:
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:
API_URL=https://api.tubescript.com
O con subdominio:
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:
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:
API_URL=http://localhost:8080
O desde el contenedor Docker accediendo al host:
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:
environment:
- API_URL=${API_URL:-http://tubescript-api:8000}
Esto significa:
- Si existe
API_URLen.env, se usa ese valor - Si no existe, se usa el valor por defecto:
http://tubescript-api:8000
📝 Ejemplos Completos
Ejemplo 1: Desarrollo Local
# .env
API_URL=http://localhost:8080
./docker-start.sh
# Acceder a: http://localhost:8501
Ejemplo 2: Producción con Dominio
# .env
API_URL=https://api.tubescript.com
./docker-start.sh
# Panel Streamlit se conectará a https://api.tubescript.com
Ejemplo 3: Servidor Interno
# .env
API_URL=http://servidor-interno.empresa.local:8080
🔄 Cambiar API URL
Método 1: Usando el Script
./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
# 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
sed -i 's|API_URL=.*|API_URL=https://nueva-url.com|' .env
docker-compose restart streamlit-panel
✅ Verificar Configuración
Ver la URL Configurada
cat .env
Ver Variables en el Contenedor
docker exec streamlit_panel env | grep API_URL
Probar Conexión
# 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:
-
Verificar que la API esté corriendo:
curl http://localhost:8080/docs # Debe responder 200 OK -
Si ambos servicios están en Docker, usar nombre interno:
API_URL=http://tubescript-api:8000 -
Si la API está en el host (fuera de Docker):
# macOS/Windows Docker Desktop API_URL=http://host.docker.internal:8080 # Linux API_URL=http://172.17.0.1:8080 -
Verificar firewall:
# Asegúrate de que el puerto de la API esté abierto
Error: "Variable API_URL no definida"
Causa: No existe archivo .env.
Solución:
# 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:
# 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:
git add .env # ❌ NO hacer esto
Usar HTTPS en Producción
Para producción, usa HTTPS:
API_URL=https://api.tubescript.com # ✅ HTTPS
No uses HTTP en producción:
API_URL=http://api.tubescript.com # ❌ Inseguro
📋 Checklist de Configuración
- Crear archivo
.envo usar./docker-start.sh - Configurar
API_URLcon 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
.enval repositorio Git
🎯 Configuraciones Recomendadas
Desarrollo Local (Docker)
API_URL=http://tubescript-api:8000
Desarrollo Local (Sin Docker)
API_URL=http://localhost:8080
Staging/Testing
API_URL=https://staging-api.tubescript.com
Producción
API_URL=https://api.tubescript.com
📞 Comandos Útiles
# 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
- La API URL se configura en el archivo
.env - El script
./docker-start.shte ayuda a configurarla automáticamente - Usa URLs internas de Docker para mejor rendimiento
- Usa HTTPS en producción
- El archivo
.envestá protegido en.gitignore
¡Listo para configurar tu API URL! 🚀