# Desplegar TUNEMPOX SIFEL API en el VPS

Este paquete trae: `dist/` (ya compilado), `package.json` + `package-lock.json`,
`prisma/` (schema + migraciones), `.env` (produccion), `public/`, y `ecosystem.config.js` (PM2).

**A proposito NO incluye `node_modules/`.** Prisma usa un motor binario especifico de la
plataforma (Windows != Linux), asi que instalar los modulos aqui y subirlos rompe Prisma en el
VPS. Se instalan directo en el servidor, en el paso 3.

## 0. Requisitos en el VPS

- Node.js 20+ y npm
- PM2 instalado globalmente (`npm install -g pm2`) o gestionado por cPanel/WHM
- La base de datos PostgreSQL `tunempo_fact` ya creada en cPanel, con el usuario
  `tunempo_fact` y el password que aparece en `.env` (`DATABASE_URL`)

## 1. Subir y descomprimir

```bash
# en el VPS, dentro de la carpeta donde va a vivir la app
unzip tunempox-sifel-deploy.zip -d tunempox-sifel-api
cd tunempox-sifel-api
```

## 2. Revisar el `.env`

Ya viene con los valores que diste. Antes de arrancar, confirma:

- `DATABASE_URL` apunta a la base real ya creada en cPanel
- `CORS_ORIGIN` es la URL exacta del frontend en produccion (`https://fact1.tunempo.com`)
- `SRI_AMBIENTE=pruebas` — cambialo a `produccion` **solo cuando** cada empresa (RUC) tenga
  cargada su firma electronica real de produccion (esto se configura por RUC dentro de la app,
  en "Mi compania", no aqui en el .env — ver conversacion anterior sobre esto)

## 3. Instalar dependencias y generar el cliente de Prisma

```bash
npm ci --omit=dev
npx prisma generate
```

## 4. Aplicar las migraciones (crea las tablas en la base nueva)

```bash
npx prisma migrate deploy
```

## 5. Arrancar con PM2

```bash
pm2 start ecosystem.config.js
pm2 save
pm2 startup   # sigue las instrucciones que imprime, para que arranque solo si el VPS reinicia
```

## 6. Verificar

```bash
curl http://127.0.0.1:3002/health
# deberia responder {"status":"ok"}
```

Si tienes un proxy (nginx/Apache/cPanel) al frente, apunta el dominio del backend hacia
`127.0.0.1:3002`.

## 7. Primer ingreso

En el primer arranque, como la tabla `usuarios` esta vacia, se crea automaticamente el
SUPERADMIN con `ADMIN_EMAIL` / `ADMIN_PASSWORD` del `.env`. Inicia sesion con esos datos y
cambia la contrasena desde tu perfil apenas puedas.

## Notas

- Los certificados `.p12` de cada empresa se cargan **desde la app** (Mi compania → Firmas
  electronicas), no se suben por aqui. Quedan cifrados en la base de datos y en
  `certs/emisores/` (la app crea esa carpeta sola la primera vez que se sube un certificado —
  asegurate de que el usuario que corre PM2 tenga permiso de escritura en esta carpeta).
- Para actualizar la app mas adelante: recompila (`npm run build`) en tu maquina, sube de nuevo
  `dist/` + `package.json`/`package-lock.json` (o el zip completo), corre `npm ci --omit=dev` y
  `npx prisma migrate deploy` de nuevo si hay migraciones nuevas, y `pm2 restart tunempox-sifel-api`.
