MCMMCMBy Revdau
Single VM Deployment

Single VM Deployment Guide

Deployment guide for the MCM Platform on a Single VM — commands, requirements, and configurations.

MCM Platform — Single VM Deployment Guide


Get MCM up and running in under 30 minutes. This guide provides the essential commands, network requirements, and validation steps for deploying the platform on a Single VM.


1. Prerequisites & VM Specifications

Ensure your target virtual machine meets the following minimum specifications:

RequirementSpecification
OSUbuntu Server 24.04 LTS
CPU8 CPU
RAM32 GB
Disk150 GB
Network1 Gbps
AccessRoot SSH
Inbound Ports22 (SSH), 443 (HTTPS)

Scaling for Production

The above specifications are the minimum requirements to deploy and run the MCM Platform. For production environments with larger workloads, refer to the VM Sizing Guide for recommended specifications based on your managed resource count.


2. Network & Connectivity Requirements

Deploying the MCM platform on a Single VM requires provisioning the underlying hosting server. The instance should be configured with the operating system and resources specified in Prerequisites & VM Specifications (Ubuntu 24.04 LTS, 8 CPU, 32 GB RAM, 150 GB Disk).

Infrastructure Setup: On-Premises

Provision a single physical host or local virtual machine meeting the resource specifications:

  • OS: Clean installation of Ubuntu Server 24.04 LTS.
  • Networking: Assign a static internal LAN IP (and map a public IP or configure a reverse proxy/VPN gateway if external access is required).

Mandatory Outbound Internet Egress

Regardless of whether the VM is deployed on-premises, in a public subnet, or in a private subnet (behind VPN/Load Balancers), the server must have outbound internet access (directly or via NAT Gateway / Egress Firewall):

  1. Installation & Updates: Required during setup to download Docker containers, APT system packages, and software dependencies.
  2. Cloud API Synchronization: Required continuously at runtime for MCM backend services to communicate with public cloud provider APIs (AWS, Azure) to sync inventory, cost metrics, and security policies.

3. Firewall & Security Rules

To secure the single-node deployment, only administrative SSH and web traffic (HTTP/HTTPS) should be allowed inbound. Since the platform utilizes Docker Swarm internally, all cluster management ports (2377, 7946, 4789) must remain blocked from external inbound access to prevent unauthorized cluster probes.

Security Rule Rationale

  1. Port 22 (TCP): Used for administrative SSH access to the host.
  2. Port 80 (TCP): Used for standard HTTP traffic. Port 80 automatically redirects incoming requests to secure HTTPS (port 443) so users do not experience connection errors if they access the site via http://.
  3. Port 443 (TCP): Used for the primary secure application gateway access.
  4. Ports 1514 & 1515 (TCP): Used internally by the Wazuh Security Agent for security event monitoring, log collection (port 1514), and agent registration/enrollment (port 1515) with the Wazuh Manager container (Required when the SecOps module is enabled).
  5. Port 9098 (TCP): Used by the MCM Upgrade Agent service for automated platform upgrades and version management.

Procedure: On-Premises Host-Level Firewall (UFW)

Run the UFW configuration commands on your Single VM:

# 1. Set default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 2. Allow SSH, Web traffic, and Upgrade Agent
sudo ufw allow 22/tcp comment "SSH Administrative Access"
sudo ufw allow 80/tcp comment "HTTP Gateway Redirection"
sudo ufw allow 443/tcp comment "HTTPS Ingress Gateway"
sudo ufw allow 9098/tcp comment "MCM Upgrade Agent Service"

# 3. Allow SecOps Wazuh Agent ports (Optional - Required if SecOps module is enabled)
sudo ufw allow 1514/tcp comment "Wazuh Agent Log Collection (SecOps module)"
sudo ufw allow 1515/tcp comment "Wazuh Agent Enrollment (SecOps module)"

# 4. Enable the firewall
sudo ufw enable

Outbound Connection Requirements

The MCM platform requires outbound HTTPS (port 443) connectivity to the following main domains:

IMPORTANT: Mandatory Egress Whitelisting for Private Infrastructure

If your infrastructure is provisioned inside a private subnet, air-gapped network, or operates behind a corporate egress firewall / forward proxy (e.g. Palo Alto, Fortinet, AWS NAT Gateway, Azure Firewall, Squid), you MUST whitelist all 21 domains, ports, and protocols listed below.

  • Installation Impact: Failure to whitelist will cause apt-get dependency installations, Docker container image pulls, or installer package downloads to hang or fail.
  • Runtime Impact: The MCM platform persistently connects to AWS/Azure APIs, Microsoft Graph/Entra ID, NTP time servers, currency feeds (FinOps), and security threat intelligence feeds (SecOps Wazuh & Elastic).
  • Wildcard Configuration: Where indicated, configure domain wildcard rules (e.g., *.amazonaws.com, *.azure.com, *.revdau.ai, *.ubuntu.com) in your egress firewall to avoid dropped connections to regional or dynamic endpoints.
#Domain / DestinationPortsProtocolPhasePurpose
1*.amazonaws.com443HTTPSRuntimeAWS Cloud management, STS & cost telemetry APIs
2*.api.aws443HTTPSRuntimeModern AWS service API endpoints
3*.windows.net443HTTPSRuntimeAzure Cloud management, blob storage & resource sync
4*.azure.com443HTTPSRuntimeAzure Resource Manager (ARM) APIs & cost reporting
5login.microsoftonline.com443HTTPSRuntimeMicrosoft Entra ID (Azure AD) OAuth authentication
6graph.microsoft.com443HTTPSRuntimeMicrosoft Graph API for tenant discovery & identity management
7*.docker.io443HTTPSInstallation / RuntimeDocker Hub container registry & image layers
8*.docker.com443HTTPSInstallation / RuntimeDocker Engine package repository & authentication
9*.elastic.co443HTTPSInstallation / RuntimeElastic packages, integration assets & telemetry
10*.wazuh.com443HTTPSRuntimeWazuh SIEM rulesets, CVE threat intelligence & agent updates
11*.ubuntu.com80, 443HTTP/HTTPSInstallation / RuntimeUbuntu system package updates (apt-get)
12*.canonical.com80, 443HTTP/HTTPSInstallation / RuntimeCanonical security updates & kernel patches
13*.github.com443HTTPSInstallation / RuntimeGitHub API integration & CLI binary downloads
14*.githubusercontent.com443HTTPSInstallationRaw GitHub assets, scripts & binary downloads
15ghcr.io443HTTPSInstallation / RuntimeGitHub Container Registry for service images
16registry.opentofu.org443HTTPSRuntimeOpenTofu provider registry for IaC Orchestration
17*.cloudflarestorage.com443HTTPSRuntimeCloudflare R2 storage for OpenTofu & container asset downloads
18hub.steampipe.io443HTTPSRuntimeSteampipe cloud discovery plugins & registry
19*.digicert.com80, 443HTTP/HTTPSInstallation / RuntimeTLS certificate chain validation & CRL revocation checks
20api.frankfurter.app443HTTPSRuntimeLive currency exchange rates for FinOps multi-currency conversion
21*.revdau.ai443HTTPSInstallation / RuntimeMCM Nexus portal (nexus.mcm.revdau.ai), license verification & artifact downloads
22*.ntp.ubuntu.com123, 4460UDP/TCPRuntimeNetwork Time Protocol (NTP) for server clock synchronization

Understanding Connection Phases: * Installation: Outbound access required during initial platform deployment to download system packages, container images, and binary dependencies. * Runtime: Outbound access required continuously while the platform is running for cloud API synchronization, inventory discovery, cost metrics, and security threat intelligence feeds.


4. Installation Procedure

Step 1: Account Registration & Portal Access

Follow these steps on the MCM Nexus Portal to set up your account:

  1. Visit MCM Portal Landing Page: Navigate to https://nexus.mcm.revdau.ai and click the Continue button.

    MCM Nexus Portal Landing Page
  2. Complete the Sign-Up Form: Fill in your organizational and contact details in the registration form to create your account.

    MCM Portal Sign Up Form
  3. Receive Verification & Credentials Email: Check your inbox for the welcome email containing your initial credentials and verification details.

    MCM Account Verification Email
  4. Sign In to MCM Portal: Go to the login screen and sign in using your registered email and temporary password.

    MCM Portal Sign In
  5. Set Your Account Password: On your first login, configure a secure password for your account.

    MCM Change Password MCM Password Confirmation

Step 2: License Request & Approval Workflow

  1. Access Portal Workspace Dashboard: After logging in, access your workspace dashboard.

    MCM Workspace Dashboard
  2. Navigate to the Request Tab: Click on the Request tab in the top navigation bar.

    MCM Request Tab
  3. Submit License Request & Wait for Approval: Fill out and submit your license entitlement request.

    MCM License Request Submission

    Administrator Approval

    The MCM Administrator team reviews and approves submitted license requests. Once approved, the software package download and license entitlements become accessible under the License tab.


Step 3: Generate Download Command & Server Deployment

  1. Open the License Tab: Navigate to the License tab (/license) to view your MCM App Credentials (Username and Token).

    MCM License Tab
  2. Select Release Version & Copy Download Command: Under Download installation package, select version 1.2.0 from the dropdown and click Copy to copy the pre-authenticated wget command.

    MCM License Package & Download Command Generation
  3. Connect to the server via SSH:

    ssh [VM_SSH_USER]@<SERVER_IP>
  4. Execute the Copied Download Command:

    wget --user="your_email@example.com" --password="your_mcm_app_password" \
      "https://nexus.mcm.revdau.ai/api/mcm-app/downloads/package?version=1.2.0" -O mcm_artifacts_1.2.0.tar.gz
  5. Extract and Launch the Installer:

    tar -xzf mcm_artifacts_1.2.0.tar.gz
    cd mcm_artifacts
    sudo chmod +x install.sh
    sudo bash install.sh --single-vm

Installation Details:

  • Installation Time: Installation takes 15–30 minutes. Outbound internet access is required on the server during installation to install dependencies.
  • Docker Permissions: The installer configures a docker user group and adds the current user to it. To execute Docker commands without sudo post-installation, run newgrp docker in your current terminal session, or log out and log back in.

Step 4: Platform Activation & Super Admin Setup

Once deployment completes, navigate to https://<DOMAIN_OR_IP>/subscription in your browser:

  1. Activate Subscription: Enter your registered Username and Password/Token received via email, then click Activate.

    MCM Subscription Activation
  2. Create Organization Administrator: Enter the details for the primary platform super administrator and submit.

    MCM Create Primary Administrator
  3. Log In to Platform: Log in with your administrator credentials and proceed to the Getting Started User Guide.


5. Operations & Health Verification

You can verify the status and health of all deployed services by executing the healthcheck script (Optional):

sudo bash /opt/mcm/scripts/healthcheck.sh

General Verification and Control

For verification steps, stack teardown commands, and utility control scripts (starting, stopping, restarting, or upgrading the platform components), please refer to the Helper Scripts and Commands Guide.

For custom domain configuration and SSL/TLS certificate management, please refer to the Domain and TLS Certificate Configuration Guide.

For troubleshooting configuration, certificate, or service initialization errors, refer to the Troubleshooting Guide.

On this page