Instalación de MeshCentral para Gestión Remota

MeshCentral es una plataforma open-source de gestión remota de dispositivos que permite controlar, monitorizar y administrar múltiples equipos desde un panel web centralizado. Con soporte para terminal remota, transferencia de archivos, RDP, escritorio remoto y grupos de dispositivos, MeshCentral es una alternativa completa a soluciones como ManageEngine o ScreenConnect. Esta guía explica cómo instalar MeshCentral en un servidor Linux.

Requisitos Previos

  • Ubuntu 20.04+, Debian 11+ o CentOS 8+/Rocky Linux 8+
  • Mínimo 512 MB de RAM (1 GB+ recomendado para múltiples dispositivos)
  • Node.js 14+
  • Puerto 443 (HTTPS) accesible públicamente
  • Dominio con DNS apuntando al servidor (recomendado para TLS automático)

Instalación de Node.js

MeshCentral requiere Node.js. Instalar usando NodeSource:

# Ubuntu/Debian - Instalar Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# CentOS/Rocky Linux
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo dnf install -y nodejs

# Verificar la instalación
node --version
npm --version

Instalación de MeshCentral

# Crear usuario dedicado para MeshCentral
sudo useradd -r -m -d /opt/meshcentral -s /bin/false meshcentral

# Crear directorio de instalación
sudo mkdir -p /opt/meshcentral/meshcentral-data
sudo chown -R meshcentral:meshcentral /opt/meshcentral

# Instalar MeshCentral como usuario meshcentral
sudo -u meshcentral bash -c "cd /opt/meshcentral && npm install meshcentral"

# Verificar la instalación
ls /opt/meshcentral/node_modules/meshcentral/

Crear el servicio systemd:

sudo tee /etc/systemd/system/meshcentral.service << 'EOF'
[Unit]
Description=MeshCentral Server
After=network.target

[Service]
Type=simple
User=meshcentral
WorkingDirectory=/opt/meshcentral
ExecStart=/usr/bin/node node_modules/meshcentral
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable meshcentral

Configuración Inicial

Antes de iniciar, crear el archivo de configuración:

sudo -u meshcentral mkdir -p /opt/meshcentral/meshcentral-data

# Crear configuración básica
sudo -u meshcentral tee /opt/meshcentral/meshcentral-data/config.json << 'EOF'
{
  "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json",
  "settings": {
    "cert": "tu-dominio.com",
    "port": 443,
    "redirPort": 80,
    "mongoDb": "nedb",
    "mongoDbName": "meshcentral"
  },
  "domains": {
    "": {
      "title": "Mi Panel de Gestión",
      "title2": "MeshCentral",
      "newAccounts": false,
      "certUrl": "https://tu-dominio.com"
    }
  }
}
EOF

Iniciar MeshCentral por primera vez (generará certificados TLS automáticamente):

# Iniciar el servicio
sudo systemctl start meshcentral

# Ver los logs del proceso de inicio
sudo journalctl -u meshcentral -f

# Esperar a que aparezca el mensaje "MeshCentral HTTP server running on port 443"
# El primer inicio puede tardar varios minutos para generar certificados

Crear la cuenta de administrador:

# Crear el primer usuario administrador
sudo -u meshcentral node /opt/meshcentral/node_modules/meshcentral --createaccount admin --pass TU_CONTRASENA_SEGURA --adminaccount

# Verificar que el usuario fue creado
sudo -u meshcentral node /opt/meshcentral/node_modules/meshcentral --listaccounts

Configuración con Proxy Inverso Nginx

Si prefieres usar Nginx como proxy inverso (con Let's Encrypt):

# Instalar Nginx y Certbot
sudo apt install -y nginx certbot python3-certbot-nginx  # Ubuntu/Debian
# sudo dnf install -y nginx certbot python3-certbot-nginx  # CentOS/Rocky

# Obtener certificado SSL
sudo certbot --nginx -d tu-dominio.com

# Configurar MeshCentral para escuchar solo en localhost
# Editar /opt/meshcentral/meshcentral-data/config.json
{
  "settings": {
    "port": 4430,
    "redirPort": 800,
    "cert": "tu-dominio.com",
    "TLSOffload": "nginx"
  }
}

Configuración de Nginx para MeshCentral:

sudo tee /etc/nginx/sites-available/meshcentral << 'EOF'
server {
    listen 80;
    server_name tu-dominio.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name tu-dominio.com;

    ssl_certificate /etc/letsencrypt/live/tu-dominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tu-dominio.com/privkey.pem;

    # Soporte WebSocket (requerido por MeshCentral)
    location / {
        proxy_pass http://127.0.0.1:4430;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/meshcentral /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Despliegue de Agentes

Los agentes MeshCentral se instalan en los dispositivos que quieres gestionar:

# Descargar el agente desde el panel web:
# Panel > Grupos de Dispositivos > Agregar > Descargar Agente

# O descargar directamente desde la URL del servidor
wget https://tu-dominio.com/meshagents?id=6&meshid=TU_MESH_ID -O meshagent

# Dar permisos de ejecución
chmod +x meshagent

# Instalar el agente en el sistema
sudo ./meshagent -install

# Verificar que el agente está ejecutándose
sudo systemctl status meshagent

Script de instalación masiva de agentes:

#!/bin/bash
# Instalar el agente MeshCentral en múltiples servidores

SERVIDOR="https://tu-dominio.com"
MESH_ID="TU_MESH_ID_AQUI"

# Descargar el instalador del agente
wget "${SERVIDOR}/meshagents?id=6&meshid=${MESH_ID}" -O /tmp/meshagent
chmod +x /tmp/meshagent

# Instalar
sudo /tmp/meshagent -install

echo "Agente instalado. Estado: $(systemctl is-active meshagent)"

Terminal y Escritorio Remotos

MeshCentral soporta múltiples métodos de acceso remoto desde el panel web:

Terminal remota (shell):

  • Seleccionar un dispositivo en el panel
  • Clic en "Terminal" para abrir una sesión de terminal interactiva
  • Funciona en Linux, macOS y Windows

Escritorio remoto:

  • Seleccionar el dispositivo > "Escritorio Remoto"
  • Soporta VNC sobre WebSocket
  • En Linux, requiere un servidor VNC o Xvfb instalado en el dispositivo
# Instalar soporte de escritorio remoto en el agente (Linux con X11)
sudo apt install -y x11vnc xvfb  # Ubuntu/Debian

# El agente MeshCentral gestiona automáticamente la sesión VNC
sudo systemctl restart meshagent

Transferencia de archivos:

  • Panel > Dispositivo > "Archivos"
  • Explorador de archivos bidireccional
  • Soporte de arrastrar y soltar

Control de Acceso Multi-Usuario

# Crear usuarios adicionales (desde la línea de comandos)
sudo -u meshcentral node /opt/meshcentral/node_modules/meshcentral \
  --createaccount tecnico1 \
  --pass contrasena123

# Crear usuarios desde el panel: Usuarios > Agregar Usuario

# Asignar permisos por grupo de dispositivos
# Panel > Grupos de Dispositivos > Permisos > Agregar Usuario

Configuración de permisos en config.json:

{
  "domains": {
    "": {
      "newAccounts": false,
      "userGroups": {
        "tecnicos": {
          "devicesGroups": ["servidores-web", "bases-de-datos"]
        }
      }
    }
  }
}

Solución de Problemas

MeshCentral no inicia:

# Ver logs detallados
sudo journalctl -u meshcentral --no-pager -n 50

# Probar inicio manual para ver errores
sudo -u meshcentral node /opt/meshcentral/node_modules/meshcentral

# Verificar permisos
ls -la /opt/meshcentral/meshcentral-data/

El agente no conecta con el servidor:

# Ver logs del agente
sudo journalctl -u meshagent -f

# Verificar conectividad con el servidor
curl -k https://tu-dominio.com

# Comprobar el estado del agente
sudo /usr/local/mesh/meshagent -state

Certificados TLS no se generan:

# Verificar permisos del directorio de datos
ls -la /opt/meshcentral/meshcentral-data/

# Los certificados se guardan en:
ls /opt/meshcentral/meshcentral-data/*.pem

# Reparar permisos
sudo chown -R meshcentral:meshcentral /opt/meshcentral/

Conclusión

MeshCentral es una plataforma de gestión remota completa y gratuita que puede reemplazar soluciones comerciales costosas. Su instalación en un VPS propio garantiza privacidad total y sin costes por dispositivo, siendo especialmente útil para administrar flotas de servidores Linux de forma centralizada y segura.