first commit
This commit is contained in:
193
DEPLOYMENT.md
Normal file
193
DEPLOYMENT.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user