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:
359
docs/guias/instalacion.md
Normal file
359
docs/guias/instalacion.md
Normal 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)
|
||||
Reference in New Issue
Block a user