TubeScript-API/API_URL_CONFIG.md
2026-01-29 22:49:00 -07:00

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_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

# .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:

  1. Verificar que la API esté corriendo:

    curl http://localhost:8080/docs
    # Debe responder 200 OK
    
  2. Si ambos servicios están en Docker, usar nombre interno:

    API_URL=http://tubescript-api:8000
    
  3. 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
    
  4. 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 .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)

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

  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! 🚀