chore(release): v1.0.0 — primer despliegue a producción

project.linkedcorp.net operativo en https://project.linkedcorp.net (servidor
192.168.222.3, BD 192.168.222.32, NPM con SSL forzado). Documenta la
topología real y el flujo de deploy en PRODUCCION.md/DEPLOY_WEB.md, y
actualiza AGENTS.md/ESTADO.md/README.md con el estado actual.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-09-05 22:47:43 -05:00
parent c7b270e6ea
commit 556bbc7314
9 changed files with 424 additions and 67 deletions
+80
View File
@@ -0,0 +1,80 @@
# Produccion - project.linkedcorp.net
## Estado actual
- Version actual: `1.0.0`
- Estado: `operativo`
- Ultima validacion: `2026-09-06`
## Servidor
- Host: `192.168.222.3`
- SSH: `deploy@192.168.222.3 -p 2203` (llave `~/.ssh/id_ed25519`, sudo NOPASSWD)
- Ruta base: `/opt/apps/project.linkedcorp.net/`
## Runtime
- Frontend: `/opt/apps/project.linkedcorp.net/frontend/` (dist/ + node_modules propio con `serve`)
- Backend: `/opt/apps/project.linkedcorp.net/backend/` (node_modules + `.env` de produccion)
- Source (checkout de Gitea, WorkingDirectory de ambos servicios): `/opt/apps/project.linkedcorp.net/source/`
- Storage: `/opt/apps/project.linkedcorp.net/storage/` (adjuntos — `STORAGE_ROOT` en `.env`)
- Logs: `/opt/apps/project.linkedcorp.net/logs/`
- APKs Android publicados: no aplica
## Servicios
- Frontend: `project-linkedcorp-frontend` (`node node_modules/.bin/serve -s dist -l 5196`, WorkingDirectory `source/frontend`... revisar nota abajo)
- Backend: `project-linkedcorp-backend` (`node src/server.js`, WorkingDirectory `source/backend`, `EnvironmentFile=backend/.env`)
> Nota real: el servicio frontend corre con `WorkingDirectory=/opt/apps/project.linkedcorp.net/frontend`
> (no `source/frontend`) sirviendo `frontend/dist/` con el `serve` instalado ahi mismo (node_modules
> minimo, solo el paquete `serve`). El `dist/` se copia desde `source/frontend/dist` en cada deploy.
## Puertos internos
- Frontend: `127.0.0.1:5196`
- Backend: `127.0.0.1:4019`
## Base de datos
- Host pruebas/desarrollo: `192.168.222.20`
- Host produccion real: `192.168.222.32`
- Base: `project_linkedcorp`
- Usuario app: `project_linkedcorp` (permitido solo desde `192.168.222.3`)
- Regla dura: produccion web siempre usa `192.168.222.32`
- Regla dura: pruebas y desarrollo siempre usan `192.168.222.20`
- Antes de cada deploy, validar el `DB_HOST` activo en runtime (`backend/.env` de produccion)
## NPM (Nginx Proxy Manager)
- Dominio: `project.linkedcorp.net`, SSL Let's Encrypt (auto-renovacion), Force SSL activo.
- Proxy Host (id 77) -> `192.168.222.3:5196` (frontend).
- Custom Location `/api` -> `192.168.222.3:4019` (backend).
## Estado confirmado (2026-09-06)
- Migraciones aplicadas (`001_initial.sql`) sobre `project_linkedcorp` en `.32`.
- Catalogos base sembrados (roles, prioridades, estados de proyecto/actividad, tipos de proyecto).
Sin datos de ejemplo (departamentos/usuario dev) — produccion arranca limpia.
- Usuario Administrador inicial creado con `create-admin.js` (clave fuerte generada, entregada
una sola vez fuera de este repo). El admin debe crear ahi mismo los demas usuarios/departamentos.
- Login, dashboard y flujo proyecto->actividad verificados via curl contra
`https://project.linkedcorp.net` (backend + frontend + SSL + BD produccion, todo real).
- Pendiente (no bloqueante): limpiar archivos `.md` de `/opt/apps/project.linkedcorp.net/source`
(paso de higiene del checklist de `DEPLOY_WEB.md`, no se ejecuto por restriccion del entorno
del agente — pendiente de accion manual o autorizacion explicita).
## Comandos utiles
```bash
sudo systemctl status project-linkedcorp-backend
sudo systemctl status project-linkedcorp-frontend
sudo journalctl -u project-linkedcorp-backend -n 100 --no-pager
sudo journalctl -u project-linkedcorp-frontend -n 100 --no-pager
```
## Notas
- No dejar secretos en el repo (`.env` de produccion vive solo en `backend/.env` del servidor).
- No reemplazar `storage/` ni `logs/` durante un deploy.
- Documentar cambios de version y estado real en este archivo y en `CHANGELOG.md`.