feat(deploy): mover install.sh a la raiz con soporte unificado para backend, frontend y seleccion de base de datos postgres

This commit is contained in:
2026-09-23 14:12:09 -03:00
parent 902e30a261
commit 6bfaab634f
3 changed files with 647 additions and 475 deletions
+25 -1
View File
@@ -17,7 +17,8 @@ Fase 1: Paridad Legacy y Estabilización [████████████
Fase 2: Co-docencia y Matriz Conflictos [████████████████████] 100% (Completado)
Fase 3: Hitos Evaluativos y Calificaciones[████████████████████] 100% (Completado)
Fase 4: UI/UX Drag & Drop e Impersonación[████████████████████] 100% (Completado)
Fase 5: Despliegue Producción e Integrac.[░░░░░░░░░░░░░░░░░░░░] 0% (Planificada)
Fase 5: Integración Auth, Email & Moodle [████████████████████] 100% (Completado)
Fase 6: Despliegue Producción e Integrac.[████░░░░░░░░░░░░░░░░] 25% (En Curso)
```
---
@@ -153,6 +154,29 @@ node src/app.js
---
## 📦 Despliegue Automatizado en Producción (Linux / Proxmox LXC)
Para servidores Debian 12 / Ubuntu en Proxmox LXC o VPS, el repositorio incluye el instalador unificado [install.sh](install.sh) en la raíz:
```bash
# Despliegue interactivo (pregunta si mantener o restaurar la BD si ya existe):
sudo bash install.sh
# Despliegue desatendido manteniendo la base de datos existente:
sudo bash install.sh --keep-db
# Despliegue desatendido recreando la base de datos desde cero (DROP y restore snapshot):
sudo bash install.sh --fresh-db
```
El script configura automáticamente:
1. Entorno Python 3.10+ y virtualenv en `backend/venv` con Gunicorn y servicio `admin-edu-space-backend.service` (puerto 5000).
2. Entorno Node.js 20 LTS en `frontend/` con servicio `admin-edu-space-frontend.service` (puerto 3000).
3. Motor PostgreSQL local con configuración de usuario y opciones seguras para preservar o restaurar la base `classrooms_db`.
4. Servicio maestro unificado `admin-edu-space.service` gestionable vía `systemctl {status|restart|stop} admin-edu-space`.
---
## 🧪 Pruebas Automatizadas
Para ejecutar la suite completa de pruebas unitarias de regresión (Fases 2, 3 y 4):