Guía de Implementación — GNL CRM
Para el área de Sistemas / IT
1. Stack Tecnológico
| Componente | Tecnología |
|---|---|
| Lenguaje servidor | Node.js (JavaScript) |
| Framework HTTP | Express.js v5 |
| Base de datos | SQLite (fichero único crm.db) |
| Driver de BD | better-sqlite3 (síncrono, sin servidor externo) |
| Frontend | HTML5 + CSS3 + JavaScript Vanilla (sin frameworks) |
| Iconografía | Font Awesome 6 (CDN) |
| Mapas | Leaflet.js + OpenStreetMap (CDN) |
| Gestión sesiones | express-session (memoria del proceso) |
| Importación Excel | librería xlsx |
| Puerto por defecto | 3000 (configurable vía variable de entorno PORT) |
| Repositorio | https://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
- Node.js v18 o superior — https://nodejs.org
- Git — https://git-scm.com
- Acceso a internet para la descarga inicial (CDNs de Font Awesome y Leaflet se cargan en el navegador)
- Puerto 3000 abierto en el firewall del servidor (o el puerto que se configure)
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.
- En el portal Azure, crear un App Service con runtime Node.js 20 LTS en Windows o Linux.
- En la sección Deployment Center, conectar directamente con el repositorio GitHub
trpindado/CRMy activar el despliegue continuo (CI/CD automático). - En Configuration → Application Settings, añadir si se desea:
PORT=8080(Azure redirige el 80/443 automáticamente)
- Azure App Service gestiona el inicio/parada del proceso Node.js de forma automática.
- El fichero
crm.dbreside 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.
- Aprovisionar una VM Azure con Windows Server 2022 o Ubuntu 22.04 LTS.
- Instalar Node.js y Git en la VM.
- Clonar el repositorio y arrancar la aplicación (ver sección 4).
- Configurar IIS (Windows) o nginx (Linux) como proxy inverso hacia el puerto 3000.
- 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:
- Usuario:
admin/ Contraseña:admin123 - Usuario:
comercial/ Contraseña:comercial123
⚠️ 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)
| Variable | Descripción | Valor por defecto |
|---|---|---|
PORT | Puerto en que escucha la app | 3000 |
9. Consideraciones de Seguridad
- La aplicación usa HTTPS si se coloca detrás de un proxy inverso (IIS / nginx / Azure App Service) que gestione el certificado SSL.
- Las sesiones duran 8 horas y se invalidan al cerrar sesión.
- Se recomienda restringir el acceso por IP a la red corporativa mediante las reglas de red de Azure o el firewall corporativo.
- Cambiar las contraseñas por defecto en el primer acceso.
10. Integración con Ecosistema Microsoft (opcional)
| Necesidad | Solución |
|---|---|
| SSO con cuentas corporativas | Añadir autenticación Azure AD (Microsoft Entra ID) mediante la librería msal-node |
| Visibilidad en Power BI | Conectar Power BI Desktop a crm.db vía conector SQLite ODBC |
| Notificaciones en Teams | Llamar a un webhook de Teams desde el servidor cuando haya eventos relevantes |
| Backup automático | Azure Backup o script programado en Azure Automation que copie crm.db a Azure Blob Storage |
| Dominio corporativo | Configurar un Custom Domain en Azure App Service con el dominio de la empresa |
GNL CRM — Repositorio: https://github.com/trpindado/CRM