Files
checklist/DEPLOYMENT.md
2025-11-19 01:09:25 -03:00

194 lines
4.0 KiB
Markdown

# Syntria - Despliegue en Producción
## 📋 Requisitos Previos
- Docker y Docker Compose instalados
- Cuenta en Docker Hub
- Servidor Linux/Windows con puertos 80, 8000 y 5432 disponibles
## 🚀 Despliegue Rápido
### 1. Construir y Publicar Imágenes
**Windows (PowerShell):**
```powershell
.\build-and-push.ps1
```
**Linux/Mac:**
```bash
chmod +x build-and-push.sh
./build-and-push.sh
```
### 2. Configurar Producción
Edita `.env.production` con tus valores:
```env
POSTGRES_PASSWORD=tu_password_seguro_aqui
SECRET_KEY=clave_secreta_minimo_32_caracteres
DOCKER_USERNAME=tu_usuario_dockerhub
API_URL=http://tu-dominio.com:8000
ALLOWED_ORIGINS=http://tu-dominio.com,https://tu-dominio.com
```
### 3. Desplegar en Servidor
En tu servidor de producción:
```bash
# Clonar o subir archivos necesarios
# - docker-compose.prod.yml
# - .env.production
# - init-db.sh
# Desplegar
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d
# Verificar estado
docker-compose -f docker-compose.prod.yml ps
# Ver logs
docker-compose -f docker-compose.prod.yml logs -f
```
### 4. Inicializar Base de Datos
```bash
# Crear usuarios iniciales
docker exec -it syntria-backend-prod python init_db.py
```
## 🔧 Mantenimiento
### Ver Logs
```bash
# Todos los servicios
docker-compose -f docker-compose.prod.yml logs -f
# Solo backend
docker-compose -f docker-compose.prod.yml logs -f backend
# Solo frontend
docker-compose -f docker-compose.prod.yml logs -f frontend
```
### Actualizar Imágenes
```bash
# Pull nuevas versiones
docker-compose -f docker-compose.prod.yml pull
# Reiniciar servicios
docker-compose -f docker-compose.prod.yml up -d
```
### Backup Base de Datos
```bash
# Crear backup
docker exec syntria-db-prod pg_dump -U syntria_user syntria_db > backup_$(date +%Y%m%d).sql
# Restaurar backup
docker exec -i syntria-db-prod psql -U syntria_user syntria_db < backup_20241118.sql
```
## 🌐 Acceso
- **Frontend:** http://tu-servidor
- **Backend API:** http://tu-servidor:8000
- **Docs API:** http://tu-servidor:8000/docs
## 🔒 Seguridad
### Recomendaciones:
1. **Cambiar passwords por defecto**
- PostgreSQL password
- SECRET_KEY (mínimo 32 caracteres aleatorios)
2. **Usar HTTPS**
- Configurar certificado SSL
- Usar reverse proxy (Nginx/Traefik)
3. **Firewall**
- Abrir solo puertos necesarios (80, 443)
- Cerrar puerto 5432 al público
4. **Backups automáticos**
- Configurar cron job para backups diarios
## 📊 Monitoreo
### Health Checks
```bash
# Backend
curl http://localhost:8000/health
# Frontend
curl http://localhost
# Database
docker exec syntria-db-prod pg_isready -U syntria_user
```
## 🐳 Imágenes Docker Hub
Las imágenes están disponibles en:
- `usuario/syntria-backend:latest`
- `usuario/syntria-frontend:latest`
## ⚙️ Variables de Entorno
### Backend
- `DATABASE_URL` - PostgreSQL connection string
- `SECRET_KEY` - JWT secret key (32+ chars)
- `OPENAI_API_KEY` - OpenAI API key (opcional)
- `ENVIRONMENT` - `production`
- `ALLOWED_ORIGINS` - CORS origins
### Frontend
- `VITE_API_URL` - Backend API URL
## 🆘 Troubleshooting
### Error: Connection refused
```bash
# Verificar que todos los servicios estén corriendo
docker-compose -f docker-compose.prod.yml ps
# Verificar logs
docker-compose -f docker-compose.prod.yml logs backend
```
### Error: Database connection
```bash
# Verificar variables de entorno
docker exec syntria-backend-prod env | grep DATABASE_URL
# Verificar que postgres esté healthy
docker inspect syntria-db-prod | grep Health
```
### Error: CORS
- Actualizar `ALLOWED_ORIGINS` en `.env.production`
- Incluir http:// y https:// si usas ambos
## 📝 Usuarios por Defecto
Después de `init_db.py`:
- **Admin:** admin / admin123
- **Mecánico:** mechanic / mechanic123
⚠️ **Cambiar passwords en producción**
## 🔄 Actualización de Versiones
1. Hacer cambios en código
2. Ejecutar `build-and-push.ps1` con nueva versión
3. En servidor: `docker-compose pull && docker-compose up -d`
## 📞 Soporte
Para issues y preguntas: GitHub Issues