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

362 lines
6.4 KiB
Markdown

# 🌐 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! 🚀**