Initial commit: MSP Monitor Dashboard
- 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
This commit is contained in:
332
docs/guias/configuracion.md
Normal file
332
docs/guias/configuracion.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# Guia de Configuracion
|
||||
|
||||
## Configuracion General
|
||||
|
||||
### Variables de Entorno
|
||||
|
||||
El archivo `.env` contiene toda la configuracion del sistema:
|
||||
|
||||
```env
|
||||
# ==================== 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
|
||||
|
||||
1. **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
|
||||
|
||||
2. **Configurar en el dashboard**:
|
||||
- Ir a Configuracion > Integraciones
|
||||
- Ingresar URL, usuario y password
|
||||
- Probar conexion
|
||||
|
||||
3. **Mapear grupos**:
|
||||
- Cada cliente puede tener un grupo de MeshCentral asignado
|
||||
- Los dispositivos del grupo se sincronizaran automaticamente
|
||||
|
||||
### LibreNMS
|
||||
|
||||
1. **Crear API Token en LibreNMS**:
|
||||
- Ir a "Settings" > "API" > "API Settings"
|
||||
- Crear nuevo token con permisos de lectura
|
||||
|
||||
2. **Configurar en el dashboard**:
|
||||
- Ir a Configuracion > Integraciones
|
||||
- Ingresar URL y token
|
||||
- Probar conexion
|
||||
|
||||
3. **Mapear grupos de dispositivos**:
|
||||
- Crear grupos en LibreNMS para cada cliente
|
||||
- Asignar el grupo al cliente en el dashboard
|
||||
|
||||
### Headwind MDM
|
||||
|
||||
1. **Obtener API Token**:
|
||||
- Acceder a panel de admin de Headwind
|
||||
- Ir a configuracion de API
|
||||
- Copiar token de acceso
|
||||
|
||||
2. **Configurar en el dashboard**:
|
||||
- Ir a Configuracion > Integraciones
|
||||
- Ingresar URL y token
|
||||
- Probar conexion
|
||||
|
||||
## Configuracion de Notificaciones
|
||||
|
||||
### Email (SMTP)
|
||||
|
||||
Para Gmail:
|
||||
1. Habilitar autenticacion de dos factores
|
||||
2. Crear "App Password" en configuracion de seguridad
|
||||
3. Usar el app password en `SMTP_PASS`
|
||||
|
||||
```env
|
||||
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)
|
||||
|
||||
1. Crear cuenta en Twilio
|
||||
2. Obtener Account SID y Auth Token
|
||||
3. Comprar numero de telefono
|
||||
4. Configurar en `.env`:
|
||||
|
||||
```env
|
||||
TWILIO_ACCOUNT_SID="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
TWILIO_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
TWILIO_PHONE_NUMBER="+1234567890"
|
||||
```
|
||||
|
||||
### Webhooks
|
||||
|
||||
Los webhooks se configuran por regla de alerta:
|
||||
|
||||
1. Crear regla de alerta
|
||||
2. Habilitar "Notificar por Webhook"
|
||||
3. Ingresar URL del endpoint
|
||||
|
||||
Formato del payload:
|
||||
```json
|
||||
{
|
||||
"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
|
||||
|
||||
1. Ir a Configuracion > Usuarios
|
||||
2. Click en "Nuevo Usuario"
|
||||
3. Completar:
|
||||
- Email
|
||||
- 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
|
||||
|
||||
1. Ir a Alertas > Reglas
|
||||
2. Click en "Nueva Regla"
|
||||
3. 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:
|
||||
|
||||
```bash
|
||||
# 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`:
|
||||
|
||||
```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
|
||||
|
||||
```bash
|
||||
./scripts/restore-db.sh /backups/msp_monitor_20240115_020000.sql.gz
|
||||
```
|
||||
|
||||
## Configuracion de SSL
|
||||
|
||||
### Renovacion Automatica
|
||||
|
||||
El contenedor de Certbot renueva automaticamente. Verificar:
|
||||
|
||||
```bash
|
||||
docker compose -f docker/docker-compose.yml logs certbot
|
||||
```
|
||||
|
||||
### Certificado Manual
|
||||
|
||||
1. Copiar certificados a `docker/nginx/ssl/`
|
||||
2. Actualizar paths en `docker/nginx/conf.d/default.conf`
|
||||
3. Reiniciar Nginx: `docker compose restart nginx`
|
||||
|
||||
## Configuracion de Logs
|
||||
|
||||
### Niveles de Log
|
||||
|
||||
En `.env`:
|
||||
```env
|
||||
# Nivel de log: debug, info, warn, error
|
||||
LOG_LEVEL="info"
|
||||
```
|
||||
|
||||
### Rotacion de Logs
|
||||
|
||||
Docker maneja la rotacion. Configurar en `/etc/docker/daemon.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"log-driver": "json-file",
|
||||
"log-opts": {
|
||||
"max-size": "10m",
|
||||
"max-file": "3"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Personalizacion
|
||||
|
||||
### Tema Visual
|
||||
|
||||
Editar `tailwind.config.ts` para cambiar colores:
|
||||
|
||||
```typescript
|
||||
colors: {
|
||||
primary: {
|
||||
500: '#06b6d4', // Color principal
|
||||
// ...
|
||||
},
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Logo
|
||||
|
||||
Reemplazar archivo en `public/logo.png`
|
||||
|
||||
### Titulo
|
||||
|
||||
Editar `src/app/layout.tsx`:
|
||||
|
||||
```typescript
|
||||
export const metadata: Metadata = {
|
||||
title: 'Mi Dashboard MSP',
|
||||
// ...
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user