362 lines
6.4 KiB
Markdown
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! 🚀**
|