browserpilot / DEPLOY_RENDER.md
ncolex's picture
Deploy BrowserPilot with NumPy fix (2.2.6)
c1f04cf verified
# Despliegue en Render.com + Neon Database
## Arquitectura
- **Aplicación**: Render.com (Docker)
- **Base de Datos**: Neon PostgreSQL (gratis, 500MB)
- **Outputs**: Disco persistente en Render (5GB)
## Paso 1: Crear la Base de Datos en Neon
1. **Ir a Neon**
- Visitá https://neon.tech
- Click en "Sign Up" (usá GitHub para más facilidad)
2. **Crear un nuevo proyecto**
- Click en "New Project"
- **Name**: `browserpilot-db`
- **Region**: Us-West (Oregon) - misma que Render
- Click en "Create Project"
3. **Obtener la DATABASE_URL**
- En el dashboard del proyecto, vas a ver la "Connection String"
- Copiá el string que dice algo como:
```
postgresql://user:password@ep-xxx.us-west-2.aws.neon.tech/dbname?sslmode=require
```
- Guardala para el próximo paso
4. **Configuración opcional**
- Podés ver la base de datos desde el dashboard de Neon
- Las tablas se crean automáticamente al iniciar la app
## Paso 2: Desplegar en Render
### Opción 1: Usando el Dashboard de Render (Recomendado)
1. **Crear una cuenta en Render**
- Ir a https://render.com y registrarse
2. **Crear un nuevo Web Service**
- Click en "New +" → "Web Service"
- Conectar tu repositorio de GitHub
3. **Configurar el servicio**
- **Name**: `browserpilot` (o el nombre que quieras)
- **Region**: Oregon (us-west-2) - misma que Neon
- **Branch**: `main`
- **Root Directory**: (dejar vacío)
- **Runtime**: `Docker`
- **Docker Command**: (dejar vacío)
4. **Configurar Variables de Entorno**
En la sección "Environment", agregar:
| Key | Value |
|-----|-------|
| `GOOGLE_API_KEY` | `AIzaSyBDl98MXre7ecN9jW16EVltBlaf38awkdo` |
| `DATABASE_URL` | (pegá el connection string de Neon) |
| `SCRAPER_PROXIES` | `[]` (o tu configuración de proxies si tenés) |
5. **Configurar Disk (opcional pero recomendado)**
- Click en "Add Disk"
- **Name**: `outputs`
- **Mount Path**: `/app/outputs`
- **Size**: 5 GB (mínimo)
6. **Seleccionar Plan**
- **Starter** ($7/mes) - recomendado para empezar
- El plan free no soporta Docker
7. **Deploy**
- Click en "Create Web Service"
- Esperar a que se complete el despliegue (~5-10 minutos)
### Opción 2: Usando Render CLI
```bash
# Instalar Render CLI
npm install -g @render-cloud/renderctl
# Login
renderctl login
# Deploy usando el render.yaml
cd /home/ncx/BROPILOT/33BrowserPilot
renderctl up -f render.yaml
```
## Configuración del render.yaml
El archivo `render.yaml` ya está configurado con:
- Tipo: Web Service con Docker
- Región: Oregon
- Plan: Starter
- Health check: `/`
- Disco persistente para outputs
## Después del despliegue
1. **Verificar el deploy**
- Ir al dashboard de Render
- Ver los logs en tiempo real
- Verificar que el health check pase
2. **Acceder a la aplicación**
- La URL será algo como: `https://browserpilot-xxxx.onrender.com`
3. **Configurar dominio personalizado (opcional)**
- En el dashboard → Settings → Custom Domain
## Variables de Entorno Requeridas
| Variable | Requerida | Descripción |
|----------|-----------|-------------|
| `GOOGLE_API_KEY` | ✅ Sí | API key de Google Gemini |
| `DATABASE_URL` | ✅ Sí | Connection string de Neon PostgreSQL |
| `SCRAPER_PROXIES` | ❌ No | Configuración de proxies (JSON array) |
## Costos Estimados
| Servicio | Plan | Costo |
|----------|------|-------|
| **Render** | Starter | $7/mes |
| **Render Disk** | 5GB | ~$0.50/mes |
| **Neon** | Free | $0/mes (500MB) |
| **Total** | | ~$7.50/mes |
## Endpoints de la API
### Jobs
- `POST /job` - Crear un nuevo job
- `GET /jobs` - Listar todos los jobs (con paginación)
- `GET /job/{job_id}` - Obtener detalles de un job
- `DELETE /job/{job_id}` - Eliminar un job
- `GET /download/{job_id}` - Descargar el resultado
### Streaming
- `GET /streaming/{job_id}` - Obtener info de streaming
- `POST /streaming/create/{job_id}` - Crear sesión de streaming
- `DELETE /streaming/{job_id}` - Limpiar sesión
- `WS /stream/{job_id}` - WebSocket para streaming
### Sistema
- `GET /stats` - Estadísticas del sistema
- `GET /proxy/stats` - Estadísticas de proxies
- `POST /proxy/reload` - Recargar proxies
## Notas Importantes
⚠️ **Importante**: Render no soporta el plan free para servicios Docker.
⚠️ **Importante**: Los servicios en el plan starter se duermen después de 15 minutos de inactividad. El primer request después de dormir puede tardar ~30 segundos.
⚠️ **Importante**: Neon tiene un límite de 500MB en el plan free. Si necesitás más espacio, considerá upgrade a Neon Pro ($19/mes).
## Troubleshooting
### El deploy falla
- Verificar los logs en el dashboard de Render
- Asegurarse de que el Dockerfile sea correcto
- Verificar que las variables de entorno estén configuradas
- Checkear que la DATABASE_URL de Neon sea correcta
### La aplicación no responde
- Verificar el health check en el dashboard
- Revisar los logs de errores
- Verificar que la GOOGLE_API_KEY sea válida
- Verificar que la conexión a Neon funcione
### Problemas de memoria
- El plan starter tiene 512MB RAM
- Si necesitás más, upgrade al plan Standard ($15/mes)
### La base de datos no conecta
- Verificar que la DATABASE_URL incluya `?sslmode=require`
- Checkear que la región de Neon sea la misma que Render (us-west-2)
- Verificar los logs de error de conexión