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

4.9 KiB

GUIA RAPIDA: Deployment en Produccion

Version: 1.0.0 Fecha: 2025-12-18 Servidor: 74.208.126.102


CHECKLIST RAPIDO (10 PASOS)

# 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)

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

git pull origin main
cd apps/frontend && npm install && npm run build && cd ..
pm2 restart gamilit-frontend

C. Cambios en backend unicamente

git pull origin main
cd apps/backend && npm install && npm run build && cd ..
pm2 restart gamilit-backend

D. Cambios en variables de entorno (.env)

# 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

cd apps/database
./drop-and-recreate-database.sh "$DATABASE_URL"
cd ..

COMANDOS DE EMERGENCIA

Rollback rapido

# 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

pm2 logs --err --lines 100

Restart de emergencia

pm2 kill && pm2 start ecosystem.config.js --env production

Status completo

pm2 list && pm2 logs --lines 10 --nostream

VARIABLES DE ENTORNO CRITICAS

Backend .env.production

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

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 para documentacion detallada, troubleshooting y renovacion.

# 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

# 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