MeshCentral es una plataforma open source de gestión remota: desde un panel web puedes abrir una terminal, transferir archivos o ver el escritorio de los equipos donde instalas su agente, sin coste por dispositivo. En este tutorial instalarás MeshCentral en Ubuntu 24.04 con Node.js, lo ejecutarás como servicio systemd con un usuario sin privilegios, obtendrás un certificado de Let's Encrypt con el cliente ACME integrado y conectarás tu primer equipo.
Requisitos previos
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 1 GB de RAM.
- Un usuario no root con privilegios
sudo. - Un dominio o subdominio (en esta guía,
your_domain) con un registro DNS A que apunte a la IP pública del servidor. - Los puertos 80 y 443 libres: MeshCentral los usará directamente, así que no debe haber Nginx ni Apache escuchando en ellos.
Paso 1: Instalar Node.js
MeshCentral es una aplicación Node.js. Instala la versión LTS actual desde el repositorio de NodeSource. Descarga primero el script de configuración para poder revisarlo antes de ejecutarlo:
curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
less nodesource_setup.sh
El script añade el repositorio de NodeSource con su clave en /etc/apt/keyrings. Ejecútalo e instala Node.js:
sudo bash nodesource_setup.sh
sudo apt install -y nodejs
Comprueba las versiones instaladas:
node --version
npm --version
v22.x.x
10.x.x
Paso 2: Crear el usuario y el directorio de MeshCentral
Ejecutar MeshCentral como root es innecesario y peligroso. Crea un usuario de sistema con su directorio de trabajo en /opt/meshcentral:
sudo useradd --system --create-home --home-dir /opt/meshcentral --shell /usr/sbin/nologin meshcentral
Instala el paquete meshcentral de npm dentro de ese directorio y como ese usuario. Es importante que el usuario meshcentral sea dueño de node_modules, porque el servidor descarga módulos adicionales la primera vez que arranca. El directorio no es accesible para tu usuario, así que el cd se hace dentro de la shell de meshcentral:
sudo -u meshcentral -H bash -c 'cd /opt/meshcentral && npm install meshcentral'
Comprueba que el paquete está en su sitio:
sudo -u meshcentral node -p "require('/opt/meshcentral/node_modules/meshcentral/package.json').version"
1.x.x
Paso 3: Configurar el dominio y Let's Encrypt
MeshCentral lee su configuración de meshcentral-data/config.json. Crea el directorio:
sudo -u meshcentral mkdir -p /opt/meshcentral/meshcentral-data
Abre el archivo de configuración:
sudo -u meshcentral nano /opt/meshcentral/meshcentral-data/config.json
Pega el siguiente contenido, sustituyendo your_domain por tu dominio y [email protected] por un correo real para los avisos de Let's Encrypt:
{
"settings": {
"cert": "your_domain",
"port": 443,
"redirPort": 80
},
"domains": {
"": {
"title": "MeshCentral",
"newAccounts": false
}
},
"letsencrypt": {
"email": "[email protected]",
"names": "your_domain",
"production": true
}
}
Qué hace cada bloque:
cert: el nombre DNS del servidor. Los agentes lo usan para conectarse, así que debe ser el dominio definitivo.portyredirPort: MeshCentral sirve HTTPS en el 443 y usa el 80 para redirigir a HTTPS y responder al reto HTTP de Let's Encrypt.newAccounts: false: nadie podrá registrarse desde la página de inicio. Crearás la cuenta de administrador por línea de comandos.letsencrypt: activa el cliente ACME integrado. Conproductionafalseusaría el entorno de pruebas de Let's Encrypt, útil si quieres probar sin gastar el límite de emisiones.
Paso 4: Crear el servicio systemd
Crea la unidad de systemd:
sudo nano /etc/systemd/system/meshcentral.service
Añade este contenido:
[Unit]
Description=MeshCentral Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=meshcentral
Group=meshcentral
WorkingDirectory=/opt/meshcentral
ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral
AmbientCapabilities=CAP_NET_BIND_SERVICE
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
AmbientCapabilities=CAP_NET_BIND_SERVICE permite al proceso escuchar en los puertos 80 y 443 sin ejecutarse como root, y solo afecta a este servicio, no a todos los programas Node.js del sistema.
Antes de arrancarlo, abre los puertos en UFW. Incluye SSH para no perder el acceso:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Recarga systemd, habilita el servicio y arráncalo:
sudo systemctl daemon-reload
sudo systemctl enable --now meshcentral
El primer arranque tarda un par de minutos: MeshCentral instala dependencias, genera sus certificados internos y solicita el de Let's Encrypt. Sigue el proceso en el registro:
sudo journalctl -u meshcentral -f
Cuando veas líneas parecidas a estas, pulsa Ctrl+C:
MeshCentral HTTP redirection server running on port 80.
MeshCentral HTTPS server running on your_domain:443.
Comprueba desde el propio servidor que el certificado es válido (sin -k):
curl -sI https://your_domain | head -n 1
HTTP/1.1 200 OK
Notasi Let's Encrypt todavía no ha emitido el certificado, MeshCentral sirve uno autofirmado y
curlfallará con un error de certificado. Espera unos minutos y revisa el registro; el certificado se guarda enmeshcentral-data/letsencrypty se renueva solo.
Paso 5: Crear la cuenta de administrador
Como el registro público está desactivado, crea la cuenta con la propia herramienta de MeshCentral. Para evitar que la base de datos se abra desde dos procesos a la vez, detén primero el servicio:
sudo systemctl stop meshcentral
Crea el usuario sustituyendo your_strong_password y el correo por los tuyos:
sudo -u meshcentral node /opt/meshcentral/node_modules/meshcentral --createaccount admin --pass 'your_strong_password' --email [email protected]
Promuévelo a administrador del sitio y vuelve a arrancar el servicio:
sudo -u meshcentral node /opt/meshcentral/node_modules/meshcentral --adminaccount admin
sudo systemctl start meshcentral
Abre https://your_domain en el navegador e inicia sesión con admin. Lo primero que conviene hacer es activar la autenticación en dos pasos en My Account > Account Security.
Consejola contraseña queda en el historial de la shell. Bórrala con
history -dseguido del número de la línea, o cámbiala después desde el panel.
Paso 6: Crear un grupo y conectar el primer agente
Los equipos se organizan en grupos de dispositivos, y cada grupo tiene su propio instalador de agente.
- En el panel, pulsa Add Device Group, ponle un nombre (por ejemplo,
servidores) y deja el tipo Manage using a software agent. - Dentro del grupo, pulsa Add Agent y elige el sistema operativo del equipo que quieres gestionar.
- Para Linux, el panel muestra un comando de instalación que ya incluye la URL de tu servidor y el identificador del grupo. Cópialo tal cual.
Ejecuta ese comando en el equipo que quieres gestionar (no en el servidor de MeshCentral, salvo que también quieras gestionarlo). El instalador crea el servicio meshagent. Comprueba que está activo:
sudo systemctl status meshagent
● meshagent.service - meshagent background service
Loaded: loaded (/lib/systemd/system/meshagent.service; enabled; preset: enabled)
Active: active (running) since ...
A los pocos segundos el equipo aparece en el grupo del panel. Selecciónalo para usar las pestañas Terminal (shell remota), Files (explorador de archivos) y, en equipos con entorno gráfico, Desktop.
Para Windows y macOS el proceso es el mismo: descarga el instalador desde Add Agent y ejecútalo en el equipo.
Paso 7: Dar acceso a otros técnicos
Para que otra persona use el panel sin ser administradora, créale una cuenta desde My Users > Add User. Después, abre el grupo de dispositivos, entra en sus detalles y añade a ese usuario en la sección de permisos, marcando solo lo que necesite (por ejemplo, terminal y archivos, pero no escritorio remoto). Así cada técnico solo ve los grupos que le has asignado.
Solución de problemas
El servicio no arranca o se reinicia en bucle. Consulta las últimas líneas del registro:
sudo journalctl -u meshcentral --no-pager -n 50
Un error EACCES al escuchar en el puerto 80 o 443 indica que falta AmbientCapabilities en la unidad; EADDRINUSE indica que otro servicio (normalmente Nginx o Apache) ocupa el puerto. Compruébalo con:
sudo ss -tlnp | grep -E ':(80|443) '
El certificado de Let's Encrypt no se emite. El reto HTTP necesita que http://your_domain llegue al puerto 80 de este servidor. Verifica que el registro A apunta a la IP correcta con dig +short your_domain y que UFW permite el puerto 80.
Los agentes no se conectan tras cambiar el dominio. El valor de cert va incrustado en los agentes instalados. Si lo cambias, tendrás que reinstalar los agentes con el comando nuevo del panel.
Conclusión
Tienes MeshCentral funcionando como servicio en Ubuntu 24.04, con HTTPS de Let's Encrypt, el registro público cerrado y un primer equipo gestionado. Como siguientes pasos, puedes desplegar el agente en el resto de tus servidores con el mismo comando del grupo, activar la autenticación en dos pasos para todos los usuarios y programar una copia de seguridad del directorio /opt/meshcentral/meshcentral-data, que contiene la base de datos y los certificados.
