MeshCentral on AlmaLinux 9

(Self-Hosted Remote Management + Node.js + Nginx + SSL)

MeshCentral is a powerful, open-source remote management and remote access platform that allows administrators to securely control, monitor, and manage computers and servers through a web browser. It supports remote desktop, terminal access, file transfer, device grouping, user and role management, and optional out-of-band management, all without relying on third-party cloud services.

Unlike proprietary tools such as TeamViewer or AnyDesk, MeshCentral can be fully self-hosted, giving you complete ownership of devices, credentials, and connection data. This makes it an excellent choice for system administrators, MSPs, DevOps teams, and privacy-focused organizations.

Running MeshCentral on AlmaLinux 9, a RHEL-compatible, enterprise-grade Linux distribution, provides long-term stability, predictable updates, and strong security defaults. AlmaLinux 9, combined with Node.js LTS, Nginx, and HTTPS (SSL), offers a production-ready foundation for a secure and scalable remote management server.


Architecture Overview

LayerComponentRole
OSAlmaLinux 9Enterprise-grade, RHEL-compatible Linux base
RuntimeNode.js LTS (18 / 20)Runs the MeshCentral server
ApplicationMeshCentralWeb UI, device management, relay services
DatabaseBuilt-in (NeDB / SQLite)Stores users, devices, and settings
Reverse ProxyNginx (recommended)HTTPS termination and routing
TLSLet’s Encrypt / PKIEncrypted secure connections
ClientsBrowsers + Mesh AgentsRemote access and device control

MeshCentral uses a single-service, lightweight architecture, which makes it easy to deploy, maintain, and scale.


Why Use MeshCentral?

  • Fully self-hosted — no vendor lock-in
  • Remote desktop & terminal — browser-based access
  • Agent-based management — Windows, Linux, macOS
  • Granular permissions — users, groups, roles
  • WebSocket-based connections — fast and efficient
  • File transfer & power controls
  • Multi-tenant capable — suitable for MSPs
  • Open-source & actively maintained
  • Very low resource usage

MeshCentral is designed for secure, scalable remote administration with full infrastructure control.


MeshCentral vs Other Remote Management Tools

Feature / CapabilityMeshCentralTeamViewerAnyDeskApache Guacamole
HostingSelf-hostedCloud onlyCloud onlySelf-hosted
Open-source✅ Yes❌ No❌ No✅ Yes
Data ownershipFull controlVendor-controlledVendor-controlledFull control
Agent-based✅ Yes✅ Yes✅ Yes❌ No
Web UI✅ Yes❌ No❌ No✅ Yes
CostFreePaidPaidFree

MeshCentral stands out for privacy, transparency, and flexibility.


Security & Best Practices on AlmaLinux 9

  • Always run MeshCentral over HTTPS.
  • Use Let’s Encrypt SSL certificates with automatic renewal.
  • Bind MeshCentral to 127.0.0.1 and expose it via Nginx.
  • Store secrets only in configuration files or environment variables.
  • Disable public account creation if not required.
  • Enforce strong passwords and role-based access.
  • Enable SELinux (enforcing mode) and label Docker/Node paths correctly.
  • Configure firewalld and allow only ports 80 / 443.
  • Keep AlmaLinux, Node.js, and MeshCentral updated.
  • Regularly back up:
    • MeshCentral data directory
    • Configuration files
  • Monitor logs for authentication and device activity.

Typical Use Cases

  • Remote server administration
  • IT support and helpdesk operations
  • MSPs managing multiple clients
  • Home labs and self-hosted environments
  • Device inventory and monitoring
  • Secure alternative to TeamViewer or AnyDesk
  • Enterprise or compliance-sensitive environments

Deploying MeshCentral on AlmaLinux 9 gives you a secure, scalable, and fully self-hosted remote management solution — combining modern Node.js performance with enterprise-grade Linux stability, strong encryption, and full control over your infrastructure.


Step 1: Create a Server Instance on Shape.Host

Before installing MeshCentral, you need a VPS with a public IP address.

Log in to https://shape.host

Click Create → Instance

Shape.host Resources dashboard with Create > Instance highlighted.

Choose a data center close to your users

Shape.host instance form with the data center location selector highlighted.

Select a plan with at least:

2 CPU cores

4 GB RAM

30–40 GB SSD

Choose AlmaLinux 9 (64-bit) as the operating system

Shape.host instance form with the operating system image selector highlighted.

Create the instance and wait for provisioning

Shape.host instance form with the Create Instance button highlighted.

Copy the public IP address

Shape.host Resources dashboard with the server IP address highlighted.

Step 2: Connect to the Server (Linux, macOS & Windows)

Linux / macOS

ssh root@YOUR_SERVER_IP

Windows (PowerShell / Windows Terminal)

ssh root@YOUR_SERVER_IP

Windows (PuTTY)

  • Host Name: YOUR_SERVER_IP
  • Port: 22
  • Connection Type: SSH
  • Username: root

Step 3: Update the System

dnf update

This command:

  • Updates all installed packages
  • Applies security patches
  • Prepares the system for Node.js and MeshCentral installation
Terminal showing DNF/YUM package management commands and output.

Step 4: Install Required Dependencies

dnf install curl ca-certificates gnupg

These packages are required to:

  • Securely download external scripts (curl)
  • Validate HTTPS connections (ca-certificates)
  • Verify repository signatures (gnupg)
Terminal showing DNF/YUM package management commands and output.

Step 5: Install Node.js 20 (Required by MeshCentral)

MeshCentral requires a modern Node.js runtime.

curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
Terminal showing DNF/YUM package management commands and output.
  • Adds the official NodeSource repository for Node.js 20
dnf install nodejs
Terminal showing DNF/YUM package management commands and output.

Verify installation:

node -v
npm -v
Terminal showing Node.js or npm version output.

Step 6: Install MeshCentral

Create the application directory:

mkdir -p /opt/meshcentral
cd /opt/meshcentral

Install MeshCentral using npm:

npm install meshcentral
Terminal showing npm package installation messages.

Create the data directory:

mkdir -p /opt/meshcentral/meshcentral-data

This directory will store:

  • Configuration files
  • SSL certificates
  • Runtime data and logs

Step 7: Initial MeshCentral Configuration

Create the configuration file:

nano /opt/meshcentral/meshcentral-data/config.json

Initial configuration:

{
  "settings": {
    "cert": "almalinux-tutorials.shape.host",
    "port": 443,
    "redirPort": 80,
    "selfUpdate": false
  },
  "domains": {
    "": {
      "title": "MeshCentral",
      "newAccounts": true
    }
  }
}

What this configuration does

  • Sets the domain MeshCentral will use
  • Runs MeshCentral on HTTPS (443) and redirects HTTP (80)
  • Disables automatic updates (recommended for stability)
  • Allows creation of the first administrator account
Terminal showing the GNU nano editor and configuration text.

Test-run MeshCentral manually:

node /opt/meshcentral/node_modules/meshcentral
  • Confirms MeshCentral starts correctly
  • Stop it with Ctrl + C after verification
Terminal showing file and directory setup commands.

Step 8: Create a systemd Service

Create the systemd service file:

nano /etc/systemd/system/meshcentral.service

Paste the following:

[Unit]
Description=MeshCentral Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral
WorkingDirectory=/opt/meshcentral
Restart=always
RestartSec=10
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
Terminal showing a systemd service unit configuration.

Reload systemd configuration:

systemctl daemon-reload

Enable and start MeshCentral:

systemctl enable meshcentral
systemctl start meshcentral

Check service status:

systemctl status meshcentral
Terminal showing the interactive process monitor.

Step 9: Enable Let’s Encrypt SSL

Edit the configuration file again:

nano /opt/meshcentral/meshcentral-data/config.json

Final production configuration:

{
  "settings": {
    "cert": "almalinux-tutorials.shape.host",
    "port": 443,
    "redirPort": 80,
    "selfUpdate": false,
    "letsencrypt": {
      "email": "contact@shape.host",
      "names": "almalinux-tutorials.shape.host",
      "production": true
    }
  },
  "domains": {
    "": {
      "title": "MeshCentral",
      "newAccounts": false
    }
  }
}

What changed

  • Enables automatic Let’s Encrypt SSL
  • Issues a trusted HTTPS certificate
  • Disables public account creation (recommended for security)
Terminal showing the GNU nano editor and configuration text.

Restart MeshCentral to apply changes:

systemctl restart meshcentral
Terminal showing nano commands or output during What changed.

Step 10: Access MeshCentral

Open your browser:

https://almalinux-tutorials.shape.host

You now have:

  • A fully self-hosted MeshCentral server
  • Running on AlmaLinux 9
  • Secured with Let’s Encrypt HTTPS
  • Managed as a systemd service
MeshCentral account registration form.
MeshCentral device management screen.

You installed MeshCentral on AlmaLinux 9, configured it to run persistently as a system service, and secured it with Let’s Encrypt SSL. This setup provides a robust, centralized, and secure platform for remote management of systems and devices.

For production-grade hosting with full root access, high performance, and long-term stability, Shape.Host Linux SSD VPS is an excellent foundation for running platforms like MeshCentral.