- Next.js 14 frontend with dark cyan/navy theme - tRPC API with Prisma ORM - MeshCentral, LibreNMS, Headwind MDM integrations - Multi-tenant architecture - Alert system with email/SMS/webhook notifications - Docker Compose deployment - Complete documentation
7.1 KiB
Guia de Configuracion
Configuracion General
Variables de Entorno
El archivo .env contiene toda la configuracion del sistema:
# ==================== BASE DE DATOS ====================
# URL de conexion a PostgreSQL
DATABASE_URL="postgresql://usuario:password@host:5432/database?schema=public"
# Credenciales para Docker
POSTGRES_USER=mspmonitor
POSTGRES_PASSWORD=password-seguro
POSTGRES_DB=msp_monitor
# ==================== CACHE Y COLAS ====================
# URL de conexion a Redis
REDIS_URL="redis://localhost:6379"
# ==================== SEGURIDAD ====================
# Clave secreta para JWT (minimo 32 caracteres)
JWT_SECRET="clave-muy-segura-de-al-menos-32-caracteres"
# ==================== INTEGRACIONES ====================
# MeshCentral
MESHCENTRAL_URL="https://mesh.tudominio.com"
MESHCENTRAL_USER="admin"
MESHCENTRAL_PASS="password"
MESHCENTRAL_DOMAIN="default"
# LibreNMS
LIBRENMS_URL="https://librenms.tudominio.com"
LIBRENMS_TOKEN="tu-token-api"
# Headwind MDM
HEADWIND_URL="https://mdm.tudominio.com"
HEADWIND_TOKEN="tu-token-api"
# ==================== NOTIFICACIONES ====================
# SMTP
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_USER="tu-email@gmail.com"
SMTP_PASS="tu-app-password"
SMTP_FROM="MSP Monitor <noreply@tudominio.com>"
# Twilio (opcional)
TWILIO_ACCOUNT_SID=""
TWILIO_AUTH_TOKEN=""
TWILIO_PHONE_NUMBER=""
# ==================== APLICACION ====================
# URL publica de la aplicacion
NEXT_PUBLIC_APP_URL="https://monitor.tudominio.com"
# Entorno
NODE_ENV="production"
Configuracion de Integraciones
MeshCentral
-
Crear usuario API en MeshCentral:
- Acceder a MeshCentral como admin
- Ir a "My Account" > "Security" > "Create Login Token"
- O crear usuario dedicado con permisos de API
-
Configurar en el dashboard:
- Ir a Configuracion > Integraciones
- Ingresar URL, usuario y password
- Probar conexion
-
Mapear grupos:
- Cada cliente puede tener un grupo de MeshCentral asignado
- Los dispositivos del grupo se sincronizaran automaticamente
LibreNMS
-
Crear API Token en LibreNMS:
- Ir a "Settings" > "API" > "API Settings"
- Crear nuevo token con permisos de lectura
-
Configurar en el dashboard:
- Ir a Configuracion > Integraciones
- Ingresar URL y token
- Probar conexion
-
Mapear grupos de dispositivos:
- Crear grupos en LibreNMS para cada cliente
- Asignar el grupo al cliente en el dashboard
Headwind MDM
-
Obtener API Token:
- Acceder a panel de admin de Headwind
- Ir a configuracion de API
- Copiar token de acceso
-
Configurar en el dashboard:
- Ir a Configuracion > Integraciones
- Ingresar URL y token
- Probar conexion
Configuracion de Notificaciones
Email (SMTP)
Para Gmail:
- Habilitar autenticacion de dos factores
- Crear "App Password" en configuracion de seguridad
- Usar el app password en
SMTP_PASS
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_USER="tu-cuenta@gmail.com"
SMTP_PASS="xxxx-xxxx-xxxx-xxxx" # App password
SMTP_FROM="MSP Monitor <noreply@tudominio.com>"
Para otros proveedores:
| Proveedor | Host | Puerto |
|---|---|---|
| Gmail | smtp.gmail.com | 587 |
| Office 365 | smtp.office365.com | 587 |
| SendGrid | smtp.sendgrid.net | 587 |
| Mailgun | smtp.mailgun.org | 587 |
SMS (Twilio)
- Crear cuenta en Twilio
- Obtener Account SID y Auth Token
- Comprar numero de telefono
- Configurar en
.env:
TWILIO_ACCOUNT_SID="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TWILIO_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TWILIO_PHONE_NUMBER="+1234567890"
Webhooks
Los webhooks se configuran por regla de alerta:
- Crear regla de alerta
- Habilitar "Notificar por Webhook"
- Ingresar URL del endpoint
Formato del payload:
{
"id": "alert-id",
"severidad": "CRITICAL",
"titulo": "Titulo de la alerta",
"mensaje": "Descripcion detallada",
"dispositivo": "Nombre del dispositivo",
"cliente": "Nombre del cliente",
"timestamp": "2024-01-15T10:30:00Z"
}
Configuracion de Usuarios y Permisos
Roles de Usuario
| Rol | Descripcion | Permisos |
|---|---|---|
| SUPER_ADMIN | Administrador global | Todo |
| ADMIN | Admin de cliente | Gestion de su cliente |
| TECNICO | Soporte tecnico | Operaciones y monitoreo |
| CLIENTE | Usuario cliente | Solo lectura |
| VIEWER | Vista limitada | Dashboard basico |
Crear Usuario
- Ir a Configuracion > Usuarios
- Click en "Nuevo Usuario"
- Completar:
- Nombre
- Rol
- Cliente (opcional)
- Password (o usar SSO de MeshCentral)
Permisos Granulares
Ademas del rol, se pueden asignar permisos especificos:
recursos: dispositivos, alertas, reportes, configuracion, usuarios
acciones: read, write, delete, execute
Configuracion de Alertas
Reglas Predefinidas
El sistema incluye reglas por defecto:
| Regla | Metrica | Umbral | Severidad |
|---|---|---|---|
| CPU Alta | cpu | > 90% | WARNING |
| CPU Critica | cpu | > 95% | CRITICAL |
| RAM Alta | ram | > 85% | WARNING |
| Disco Lleno | disco | > 90% | WARNING |
| Temperatura Alta | temperatura | > 80 | WARNING |
| Bateria Baja | bateria | < 15 | WARNING |
Crear Regla Personalizada
- Ir a Alertas > Reglas
- Click en "Nueva Regla"
- Configurar:
- Nombre descriptivo
- Tipo de dispositivo (opcional)
- Metrica a monitorear
- Condicion (>, <, >=, <=, ==)
- Valor umbral
- Duracion minima (evitar falsos positivos)
- Severidad
- Canales de notificacion
Configuracion de Backups
Backup Automatico
Agregar al crontab del servidor:
# Backup diario a las 2am
0 2 * * * /opt/msp-monitor/scripts/backup-db.sh >> /var/log/msp-backup.log 2>&1
Configuracion de Backup
Variables en .env:
# Directorio de backups
BACKUP_DIR="/backups"
# Dias de retencion
RETENTION_DAYS=30
# S3 (opcional)
S3_BUCKET="mi-bucket-backups"
AWS_ACCESS_KEY_ID="..."
AWS_SECRET_ACCESS_KEY="..."
Restaurar Backup
./scripts/restore-db.sh /backups/msp_monitor_20240115_020000.sql.gz
Configuracion de SSL
Renovacion Automatica
El contenedor de Certbot renueva automaticamente. Verificar:
docker compose -f docker/docker-compose.yml logs certbot
Certificado Manual
- Copiar certificados a
docker/nginx/ssl/ - Actualizar paths en
docker/nginx/conf.d/default.conf - Reiniciar Nginx:
docker compose restart nginx
Configuracion de Logs
Niveles de Log
En .env:
# Nivel de log: debug, info, warn, error
LOG_LEVEL="info"
Rotacion de Logs
Docker maneja la rotacion. Configurar en /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Personalizacion
Tema Visual
Editar tailwind.config.ts para cambiar colores:
colors: {
primary: {
500: '#06b6d4', // Color principal
// ...
},
// ...
}
Logo
Reemplazar archivo en public/logo.png
Titulo
Editar src/app/layout.tsx:
export const metadata: Metadata = {
title: 'Mi Dashboard MSP',
// ...
}