# 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= JWT_SECRET= # 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 # 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)