- 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
360 lines
7.4 KiB
Markdown
360 lines
7.4 KiB
Markdown
# 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)
|