feat: instalador para servidor nuevo + fix migracion 006 en BD vacia

scripts/install.sh automatiza el primer despliegue en un servidor Debian/Ubuntu nuevo: verifica
requisitos (Node.js, npm, cliente mysql, systemd, espacio, puertos libres), pregunta dominio,
puertos y base de datos (MariaDB local auto-instalada o un servidor existente), genera
backend/.env con secretos aleatorios, corre migraciones + catalogos, compila el frontend y
crea/arranca los servicios systemd. No crea usuarios: el primer registro publico se vuelve
superadmin solo (bootstrap ya existente).

Probando el instalador de punta a punta contra una base de datos recien creada goo un bug real:
la migracion 006_seed_it_baseline.sql (datos de ejemplo especificos de LinkedCorp) fallaba por
foreign key al no existir todavia catalogos ni usuario. Corregido para que detecte esa situacion
y quede inerte en instalaciones nuevas, sin tocar el comportamiento ya probado en dev/prod.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-09-15 15:43:11 -05:00
parent 2a1bdf1ba9
commit f8e42d4377
7 changed files with 501 additions and 60 deletions
+24
View File
@@ -4,6 +4,30 @@ Arquetipo B (dos servicios separados). Primer deploy realizado el 2026-09-06.
---
## Instalación automatizada en un servidor NUEVO
`scripts/install.sh` automatiza todo lo de esta sección para un servidor Debian/Ubuntu nuevo:
verifica requisitos (Node.js, npm, cliente mysql, systemd, espacio, puertos libres), pregunta
dominio/puertos y datos de base de datos (MariaDB local — se instala sola si hace falta — o un
servidor existente), crea la base + usuario, genera `backend/.env` con secretos aleatorios,
instala dependencias, corre migraciones + catálogos, compila el frontend y crea/arranca los
servicios systemd.
```bash
# En el servidor nuevo, ya con el repo clonado en /opt/apps/project.linkedcorp.net/source:
cd /opt/apps/project.linkedcorp.net/source
sudo scripts/install.sh
```
No configura el reverse proxy/TLS (paso 11 más abajo, específico de cada proveedor) ni crea
ningún usuario: el primer registro público en `/registro` se vuelve superadministrador solo — no
hace falta `create-admin.js` en instalaciones nuevas.
Las secciones de abajo son la referencia manual (lo que hace el script paso a paso) — útiles para
entender el porqué de cada cosa o para resolver un problema puntual sin volver a correr todo.
---
## Primer despliegue en producción (ya ejecutado — referencia)
### 1. Entrar al servidor