GNL CRM — Guía de Implementación Documento para el área de Sistemas / IT

Guía de Implementación — GNL CRM

Para el área de Sistemas / IT


1. Stack Tecnológico

ComponenteTecnología
Lenguaje servidorNode.js (JavaScript)
Framework HTTPExpress.js v5
Base de datosSQLite (fichero único crm.db)
Driver de BDbetter-sqlite3 (síncrono, sin servidor externo)
FrontendHTML5 + CSS3 + JavaScript Vanilla (sin frameworks)
IconografíaFont Awesome 6 (CDN)
MapasLeaflet.js + OpenStreetMap (CDN)
Gestión sesionesexpress-session (memoria del proceso)
Importación Excellibrería xlsx
Puerto por defecto3000 (configurable vía variable de entorno PORT)
Repositoriohttps://github.com/trpindado/CRM
La aplicación no requiere base de datos externa, ni servicios en la nube propios, ni licencias de software. Todo corre en un único proceso Node.js con un fichero SQLite local.

2. Requisitos Previos


3. Opciones de Despliegue en Entorno Microsoft

Opción A — Azure App Service (recomendada)

Es la opción más sencilla e integrada con el ecosistema Microsoft.

  1. En el portal Azure, crear un App Service con runtime Node.js 20 LTS en Windows o Linux.
  2. En la sección Deployment Center, conectar directamente con el repositorio GitHub trpindado/CRM y activar el despliegue continuo (CI/CD automático).
  3. En Configuration → Application Settings, añadir si se desea:
    • PORT = 8080 (Azure redirige el 80/443 automáticamente)
  4. Azure App Service gestiona el inicio/parada del proceso Node.js de forma automática.
  5. El fichero crm.db reside en el sistema de ficheros persistente del App Service (/home/site/wwwroot/).
Coste orientativo: Plan B1 (~13 €/mes). Plan F1 gratuito disponible para pruebas.

Opción B — Máquina Virtual Azure (IaaS)

Para entornos que requieren más control o ya disponen de VMs corporativas.

  1. Aprovisionar una VM Azure con Windows Server 2022 o Ubuntu 22.04 LTS.
  2. Instalar Node.js y Git en la VM.
  3. Clonar el repositorio y arrancar la aplicación (ver sección 4).
  4. Configurar IIS (Windows) o nginx (Linux) como proxy inverso hacia el puerto 3000.
  5. Opcionalmente instalar la aplicación como servicio con PM2 para que se reinicie automáticamente.

Opción C — Servidor On-Premise corporativo

Válido si la compañía dispone de servidores Windows/Linux internos con Node.js.
El procedimiento es idéntico a la Opción B sin la capa de Azure.


4. Instalación Paso a Paso

# 1. Clonar el repositorio
git clone https://github.com/trpindado/CRM.git
cd CRM

# 2. Instalar dependencias
npm install

# 3. Arrancar la aplicación
node server.js

La aplicación queda disponible en http://localhost:3000

Credenciales por defecto:

⚠️ Cambiar las contraseñas por defecto antes de poner en producción.

5. Ejecución como Servicio (producción)

Para que la aplicación se reinicie automáticamente tras un reinicio del servidor, se recomienda PM2:

# Instalar PM2 globalmente
npm install -g pm2

# Arrancar la app con PM2
pm2 start server.js --name gnl-crm

# Configurar inicio automático con el sistema
pm2 startup
pm2 save

6. Actualización de la Aplicación

# Parar el servidor
pm2 stop gnl-crm

# Descargar la última versión de GitHub
git pull origin master

# Reinstalar dependencias si han cambiado
npm install

# Reiniciar
pm2 start gnl-crm
Si se usa Azure App Service con CI/CD, este paso es automático en cada push al repositorio.

7. Backup de Datos

Toda la información está en un único fichero: crm.db

# Copia de seguridad manual
copy crm.db crm_backup_YYYYMMDD.db        # Windows
cp crm.db crm_backup_$(date +%F).db       # Linux

Se recomienda incluir este fichero en la política de backup corporativo existente (Azure Backup, robocopy programado, etc.).


8. Variables de Entorno (opcionales)

VariableDescripciónValor por defecto
PORTPuerto en que escucha la app3000

9. Consideraciones de Seguridad


10. Integración con Ecosistema Microsoft (opcional)

NecesidadSolución
SSO con cuentas corporativasAñadir autenticación Azure AD (Microsoft Entra ID) mediante la librería msal-node
Visibilidad en Power BIConectar Power BI Desktop a crm.db vía conector SQLite ODBC
Notificaciones en TeamsLlamar a un webhook de Teams desde el servidor cuando haya eventos relevantes
Backup automáticoAzure Backup o script programado en Azure Automation que copie crm.db a Azure Blob Storage
Dominio corporativoConfigurar un Custom Domain en Azure App Service con el dominio de la empresa

GNL CRM — Repositorio: https://github.com/trpindado/CRM