194 lines
4.0 KiB
Markdown
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
|