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:
MSP Monitor
2026-01-21 19:29:20 +00:00
commit f4491757d9
57 changed files with 10503 additions and 0 deletions

359
docs/guias/instalacion.md Normal file
View File

@@ -0,0 +1,359 @@
# Guia de Instalacion
## Requisitos del Sistema
### Hardware Minimo
| Componente | Minimo | Recomendado |
|------------|--------|-------------|
| CPU | 2 cores | 4+ cores |
| RAM | 4 GB | 8+ GB |
| Disco | 40 GB SSD | 100+ GB SSD |
| Red | 100 Mbps | 1 Gbps |
### Software
- **Sistema Operativo**: Ubuntu 22.04 LTS o Debian 12
- **Docker**: 24.0+
- **Docker Compose**: 2.20+
- **Node.js**: 20.x (solo para desarrollo)
### Requisitos de Red
- Puerto 80 (HTTP)
- Puerto 443 (HTTPS)
- Puerto 5432 (PostgreSQL, solo interno)
- Puerto 6379 (Redis, solo interno)
- Acceso a MeshCentral, LibreNMS y/o Headwind MDM
## Instalacion en Produccion
### 1. Preparar el Servidor
```bash
# Actualizar sistema
sudo apt update && sudo apt upgrade -y
# Instalar dependencias
sudo apt install -y curl git
# Instalar Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Agregar usuario al grupo docker
sudo usermod -aG docker $USER
newgrp docker
# Instalar Docker Compose
sudo apt install -y docker-compose-plugin
```
### 2. Clonar el Repositorio
```bash
# Crear directorio
sudo mkdir -p /opt/msp-monitor
cd /opt/msp-monitor
# Clonar repositorio
git clone https://git.consultoria-as.com/msp/msp-monitor-dashboard.git .
# Configurar permisos
sudo chown -R $USER:$USER /opt/msp-monitor
```
### 3. Configurar Variables de Entorno
```bash
# Copiar archivo de ejemplo
cp .env.example .env
# Editar configuracion
nano .env
```
Configuracion minima requerida:
```env
# Seguridad - CAMBIAR ESTOS VALORES
POSTGRES_PASSWORD=<password-seguro>
JWT_SECRET=<clave-jwt-minimo-32-caracteres>
# MeshCentral (opcional si no se usa)
MESHCENTRAL_URL=https://mesh.tudominio.com
MESHCENTRAL_USER=admin
MESHCENTRAL_PASS=password
MESHCENTRAL_DOMAIN=default
# LibreNMS (opcional si no se usa)
LIBRENMS_URL=https://librenms.tudominio.com
LIBRENMS_TOKEN=tu-api-token
# Headwind MDM (opcional si no se usa)
HEADWIND_URL=https://mdm.tudominio.com
HEADWIND_TOKEN=tu-api-token
# Email (para notificaciones)
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>
# URL de la aplicacion
APP_URL=https://monitor.tudominio.com
```
### 4. Configurar SSL
#### Opcion A: Certificado Let's Encrypt (recomendado)
```bash
# Crear directorios
mkdir -p docker/nginx/ssl
# Iniciar Nginx sin SSL primero
docker compose -f docker/docker-compose.yml up -d nginx
# Obtener certificado
docker compose -f docker/docker-compose.yml run --rm certbot certonly \
--webroot \
--webroot-path=/var/www/certbot \
-d monitor.tudominio.com \
--email tu-email@tudominio.com \
--agree-tos \
--no-eff-email
# Reiniciar con SSL
docker compose -f docker/docker-compose.yml restart nginx
```
#### Opcion B: Certificado Propio
```bash
# Copiar certificados
cp /ruta/certificado.crt docker/nginx/ssl/live/monitor.tudominio.com/fullchain.pem
cp /ruta/certificado.key docker/nginx/ssl/live/monitor.tudominio.com/privkey.pem
```
### 5. Configurar Nginx
Editar `docker/nginx/conf.d/default.conf`:
```nginx
server {
listen 443 ssl http2;
server_name monitor.tudominio.com; # Cambiar por tu dominio
ssl_certificate /etc/nginx/ssl/live/monitor.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/monitor.tudominio.com/privkey.pem;
# ... resto de configuracion
}
```
### 6. Iniciar Servicios
```bash
# Construir imagenes
docker compose -f docker/docker-compose.yml build
# Iniciar servicios
docker compose -f docker/docker-compose.yml up -d
# Verificar estado
docker compose -f docker/docker-compose.yml ps
```
### 7. Aplicar Migraciones
```bash
# Ejecutar migraciones
docker compose -f docker/docker-compose.yml exec dashboard npx prisma db push
# Verificar conexion a BD
docker compose -f docker/docker-compose.yml exec dashboard npx prisma studio
```
### 8. Crear Usuario Administrador
```bash
# Conectar a la BD
docker compose -f docker/docker-compose.yml exec postgres psql -U mspmonitor -d msp_monitor
# Crear usuario (dentro de psql)
INSERT INTO usuarios (id, email, nombre, password_hash, rol, activo, created_at, updated_at)
VALUES (
gen_random_uuid(),
'admin@tudominio.com',
'Administrador',
'$2a$12$hash-del-password', -- Generar con bcrypt
'SUPER_ADMIN',
true,
NOW(),
NOW()
);
```
O usando el script de setup interactivo:
```bash
./scripts/setup.sh
```
### 9. Verificar Instalacion
1. Acceder a `https://monitor.tudominio.com`
2. Iniciar sesion con las credenciales creadas
3. Verificar conexion a MeshCentral, LibreNMS, Headwind
4. Revisar logs: `docker compose -f docker/docker-compose.yml logs -f`
## Instalacion en Desarrollo
### 1. Requisitos
- Node.js 20+
- npm o yarn
- Docker (para PostgreSQL y Redis)
### 2. Configurar Entorno
```bash
# Clonar repositorio
git clone https://git.consultoria-as.com/msp/msp-monitor-dashboard.git
cd msp-monitor-dashboard
# Instalar dependencias
npm install
# Configurar variables
cp .env.example .env
# Editar .env con configuracion local
```
### 3. Iniciar Servicios de Base de Datos
```bash
# Solo PostgreSQL y Redis
docker compose -f docker/docker-compose.yml up -d postgres redis
```
### 4. Configurar Base de Datos
```bash
# Generar cliente Prisma
npm run db:generate
# Aplicar schema
npm run db:push
# (Opcional) Abrir Prisma Studio
npm run db:studio
```
### 5. Iniciar Desarrollo
```bash
# Iniciar servidor de desarrollo
npm run dev
# En otra terminal, iniciar workers (opcional)
npm run jobs:start
```
Acceder a `http://localhost:3000`
## Actualizacion
### Actualizacion en Produccion
```bash
cd /opt/msp-monitor
# Detener servicios
docker compose -f docker/docker-compose.yml down
# Actualizar codigo
git pull origin main
# Reconstruir imagenes
docker compose -f docker/docker-compose.yml build
# Iniciar servicios
docker compose -f docker/docker-compose.yml up -d
# Aplicar migraciones si hay cambios de BD
docker compose -f docker/docker-compose.yml exec dashboard npx prisma db push
```
### Actualizacion en Desarrollo
```bash
# Actualizar codigo
git pull origin main
# Actualizar dependencias
npm install
# Regenerar cliente Prisma
npm run db:generate
# Aplicar migraciones
npm run db:push
```
## Solucion de Problemas
### Error de Conexion a Base de Datos
```bash
# Verificar que PostgreSQL esta corriendo
docker compose -f docker/docker-compose.yml ps postgres
# Ver logs de PostgreSQL
docker compose -f docker/docker-compose.yml logs postgres
# Verificar conectividad
docker compose -f docker/docker-compose.yml exec postgres pg_isready
```
### Error de Conexion a Redis
```bash
# Verificar que Redis esta corriendo
docker compose -f docker/docker-compose.yml ps redis
# Probar conexion
docker compose -f docker/docker-compose.yml exec redis redis-cli ping
```
### Dashboard no Carga
```bash
# Ver logs del dashboard
docker compose -f docker/docker-compose.yml logs dashboard
# Verificar variables de entorno
docker compose -f docker/docker-compose.yml exec dashboard env
# Reiniciar servicio
docker compose -f docker/docker-compose.yml restart dashboard
```
### Workers no Procesan Jobs
```bash
# Ver logs del worker
docker compose -f docker/docker-compose.yml logs worker
# Verificar colas en Redis
docker compose -f docker/docker-compose.yml exec redis redis-cli KEYS "bull:*"
```
## Proximos Pasos
- [Configuracion del Sistema](configuracion.md)
- [Integracion con MeshCentral](../integraciones/meshcentral.md)
- [Integracion con LibreNMS](../integraciones/librenms.md)
- [Integracion con Headwind MDM](../integraciones/headwind.md)