workspace/projects/gamilit/docs/95-guias-desarrollo/GUIA-DEPLOYMENT-RAPIDO.md
rckrdmrd 289c5a4ee5
Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
Gamilit: Backend fixes, frontend API updates, deployment guides and validations
Backend:
- Fix email verification and password recovery services
- Fix exercise submission and student progress services

Frontend:
- Update missions, password, and profile API services
- Fix ExerciseContentRenderer component

Docs & Scripts:
- Add SSL/Certbot deployment guide
- Add quick deployment guide
- Database scripts for testing and validations
- Migration and homologation reports
- Functions inventory documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 23:42:48 -06:00

228 lines
4.9 KiB
Markdown

# GUIA RAPIDA: Deployment en Produccion
**Version:** 1.0.0
**Fecha:** 2025-12-18
**Servidor:** 74.208.126.102
---
## CHECKLIST RAPIDO (10 PASOS)
```bash
# 1. BACKUP (SIEMPRE PRIMERO)
BACKUP_DIR="/home/gamilit/backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR/config"
cp apps/backend/.env.production "$BACKUP_DIR/config/"
cp apps/frontend/.env.production "$BACKUP_DIR/config/"
# 2. BACKUP BASE DE DATOS
pg_dump "$DATABASE_URL" | gzip > "$BACKUP_DIR/gamilit.sql.gz"
# 3. PULL CAMBIOS
git fetch origin && git reset --hard origin/main
# 4. RESTAURAR CONFIG
cp "$BACKUP_DIR/config/.env.production" apps/backend/
cp "$BACKUP_DIR/config/.env.production" apps/frontend/
# 5. INSTALAR DEPENDENCIAS
npm install && cd apps/backend && npm install && cd ../frontend && npm install && cd ../..
# 6. BUILD
cd apps/backend && npm run build && cd ../frontend && npm run build && cd ../..
# 7. RECREAR BASE DE DATOS (si hay cambios DDL)
cd apps/database && ./drop-and-recreate-database.sh "$DATABASE_URL" && cd ..
# 8. DEPLOY PM2
pm2 delete all 2>/dev/null; pm2 start ecosystem.config.js --env production; pm2 save
# 9. VALIDAR
./scripts/validate-deployment.sh --ssl
# 10. STARTUP (solo primera vez)
pm2 startup && pm2 save
```
---
## ESCENARIOS COMUNES
### A. Solo actualizar codigo (sin cambios BD)
```bash
git pull origin main
cd apps/backend && npm install && npm run build && cd ..
cd apps/frontend && npm install && npm run build && cd ..
pm2 restart all
```
### B. Cambios en frontend unicamente
```bash
git pull origin main
cd apps/frontend && npm install && npm run build && cd ..
pm2 restart gamilit-frontend
```
### C. Cambios en backend unicamente
```bash
git pull origin main
cd apps/backend && npm install && npm run build && cd ..
pm2 restart gamilit-backend
```
### D. Cambios en variables de entorno (.env)
```bash
# Editar archivo
nano apps/backend/.env.production
# O
nano apps/frontend/.env.production
# Rebuild frontend si cambian VITE_*
cd apps/frontend && npm run build && cd ..
# Restart
pm2 restart all
```
### E. Recrear base de datos completa
```bash
cd apps/database
./drop-and-recreate-database.sh "$DATABASE_URL"
cd ..
```
---
## COMANDOS DE EMERGENCIA
### Rollback rapido
```bash
# Restaurar desde backup
pg_restore "$BACKUP_DIR/gamilit.sql.gz" | psql "$DATABASE_URL"
cp "$BACKUP_DIR/config/.env.production" apps/backend/
cp "$BACKUP_DIR/config/.env.production" apps/frontend/
pm2 restart all
```
### Ver logs de errores
```bash
pm2 logs --err --lines 100
```
### Restart de emergencia
```bash
pm2 kill && pm2 start ecosystem.config.js --env production
```
### Status completo
```bash
pm2 list && pm2 logs --lines 10 --nostream
```
---
## VARIABLES DE ENTORNO CRITICAS
### Backend `.env.production`
```bash
NODE_ENV=production
PORT=3006
DB_HOST=localhost
DB_PORT=5432
DB_NAME=gamilit_platform
DB_USER=gamilit_user
DB_PASSWORD=<PASSWORD>
JWT_SECRET=<GENERAR: openssl rand -base64 32>
CORS_ORIGIN=https://gamilit.com
FRONTEND_URL=https://gamilit.com
ENABLE_SWAGGER=false
```
### Frontend `.env.production`
```bash
VITE_ENV=production
VITE_API_HOST=gamilit.com
VITE_API_PROTOCOL=https
VITE_WS_HOST=gamilit.com
VITE_WS_PROTOCOL=wss
VITE_MOCK_API=false
VITE_ENABLE_DEBUG=false
```
---
## SSL CON CERTBOT (NUEVO SERVIDOR)
> **Guia completa:** Ver [GUIA-SSL-CERTBOT-DEPLOYMENT.md](./GUIA-SSL-CERTBOT-DEPLOYMENT.md) para documentacion detallada, troubleshooting y renovacion.
```bash
# Automatizado con Let's Encrypt
sudo ./scripts/setup-ssl-certbot.sh gamilit.com www.gamilit.com
# Auto-firmado (sin dominio)
sudo ./scripts/setup-ssl-certbot.sh --self-signed
# Ayuda
./scripts/setup-ssl-certbot.sh --help
# Manual
sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d gamilit.com -d www.gamilit.com
```
---
## VALIDACION
```bash
# Basica (sin SSL)
./scripts/validate-deployment.sh
# Completa con SSL
./scripts/validate-deployment.sh --ssl --verbose
# Opciones disponibles
./scripts/validate-deployment.sh --help
# --ssl Incluir validaciones de SSL/HTTPS
# --verbose Mostrar informacion adicional
# Manual
curl http://localhost:3006/api/health
curl http://localhost:3005
curl https://gamilit.com/api/health
pm2 list
```
> **Nota:** El script `validate-deployment.sh` verifica archivos .env, builds, PM2, endpoints, SSL (opcional) y base de datos.
---
## TROUBLESHOOTING
| Problema | Solucion |
|----------|----------|
| PM2 no inicia | `pm2 kill && pm2 start ecosystem.config.js --env production` |
| CORS error | Verificar CORS_ORIGIN en backend y rebuildar frontend |
| SSL no funciona | `sudo nginx -t && sudo systemctl restart nginx` |
| BD no conecta | Verificar DB_PASSWORD y que PostgreSQL este corriendo |
| Build falla | `rm -rf node_modules && npm install` |
---
## CONTACTO
- Logs: `/home/isem/workspace/projects/gamilit/logs/`
- Config PM2: `ecosystem.config.js`
- Guia completa: `docs/95-guias-desarrollo/GUIA-DESPLIEGUE-PRODUCCION-COMPLETA.md`