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.

Upgrading from v1.2

MCM 2.0 is a clean-start release. It uses a new data model (PostgreSQL and Elasticsearch only — MongoDB is no longer used), so data from a v1.2 installation is not migrated. Plan to deploy 2.0 on a fresh VM (or after removing the old installation), then re-onboard your cloud accounts and re-run discovery. v1.2 settings, users, policies, budgets, workspaces and AI conversation history are not carried over. Keep your v1.2 environment running until you have validated 2.0.


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. The same applies to the MCM management service (port 8642) — it is used only by the platform itself on the same host and must not be exposed.

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.

Changed in 2.0: fewer inbound ports

MCM 2.0 no longer uses the Wazuh agent ports (1514/1515) or the separate upgrade-agent port (9098). Only SSH, HTTP and HTTPS are needed inbound.

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 and Web traffic
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"

# 3. 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 every domain, port, and protocol 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), Git providers (GitHub, GitLab, Bitbucket) and 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*.ubuntu.com80, 443HTTP/HTTPSInstallation / RuntimeUbuntu system package updates (apt-get)
11*.canonical.com80, 443HTTP/HTTPSInstallation / RuntimeCanonical security updates & kernel patches
12*.github.com443HTTPSInstallation / RuntimeGitHub API integration & CLI binary downloads
13*.githubusercontent.com443HTTPSInstallationRaw GitHub assets, scripts & binary downloads
14ghcr.io443HTTPSInstallation / RuntimeGitHub Container Registry for service images
15registry.opentofu.org443HTTPSRuntimeOpenTofu provider registry for IaC Orchestration
16*.cloudflarestorage.com443HTTPSRuntimeCloudflare R2 storage for OpenTofu & container asset downloads
17hub.steampipe.io443HTTPSRuntimeSteampipe cloud discovery plugins & registry
18*.digicert.com80, 443HTTP/HTTPSInstallation / RuntimeTLS certificate chain validation & CRL revocation checks
19api.frankfurter.app443HTTPSRuntimeLive currency exchange rates for FinOps multi-currency conversion
20*.revdau.ai443HTTPSInstallation / RuntimeMCM Nexus portal (nexus.mcm.revdau.ai), license verification & artifact downloads
21*.ntp.ubuntu.com123, 4460UDP/TCPRuntimeNetwork Time Protocol (NTP) for server clock synchronization
22gitlab.com443HTTPSRuntimeGitLab repository discovery & scanning (only if you onboard GitLab)
23bitbucket.org, api.bitbucket.org443HTTPSRuntimeBitbucket repository discovery & scanning (only if you onboard Bitbucket)

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 Your License: In the MCM Nexus portal, open Licenses and select your license. Under Subscription key, click Create key if you have not already. Copy the key when it is shown — it is displayed only once, and you can Rotate key at any time. You will use it both to download the installer and to activate the platform.

    MCM License Tab
  2. Select Release Version & Copy Download Command: Under Download installation package, select version 2.0.0 from the Version dropdown and click Copy next to the wget command. If your server reaches the internet through a proxy, enter it in Proxy URL (optional) first and the command is adjusted for you. You can also click Download to save the package through your browser.

    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 -c --header="Authorization: ApiKey <YOUR_SUBSCRIPTION_KEY>" \
      "https://nexus.mcm.revdau.ai/api/mcm-app/downloads/package?version=2.0.0" -O mcm-installer.tar.gz

    Replace <YOUR_SUBSCRIPTION_KEY> with your subscription key. The -c flag resumes an interrupted download — re-run the same command to continue.

  5. Extract and Launch the Installer:

    tar -xzf mcm-installer.tar.gz
    cd mcm_artifacts
    sudo ./mcm install --env=main --mode=single

    MCM 2.0 is installed with a single mcm command-line tool (it replaces the install.sh and upgrade.sh scripts used in v1.2). Run it from inside the extracted mcm_artifacts folder.

Installation Details:

  • Installation Time: Installation takes 15–30 minutes. Outbound internet access is required on the server during installation to install dependencies.
  • Pre-flight checks: Before deploying, the installer checks the server's CPU, free memory and free disk space, and tests outbound connectivity to the domains listed above. If a check fails it reports the exact issue; fix it and re-run the command.
  • Forward proxy: If the server reaches the internet through a corporate proxy, add --http-proxy=http://<PROXY_HOST>:<PORT> and --https-proxy=http://<PROXY_HOST>:<PORT> (and optionally --no-proxy=<COMMA_SEPARATED_DESTINATIONS>) to the install command. You can change the proxy later under Settings > Proxy in the MCM console or with sudo mcm proxy configure (see the Helper Scripts and Commands Guide).
  • Docker: If Docker is not already installed, the installer installs it. All secrets, passwords and internal certificates are generated automatically — you do not need to create them.
  • Management service: The installer also sets up the mcm management service (mcm.service) that powers the mcm status, mcm upgrade and other commands described in the Helper Scripts and Commands Guide. Running the install command again on an already-installed server does nothing unless you pass --force.

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 Subscription Key and click Continue. Review the license details (organization, license name, plan, status, validity and owner), then click Activate.

    MCM Subscription Activation
  2. Owner Account Created: Activation creates the account for the license owner and emails their login details. When you see Owner account created, click Continue to login.

    MCM Create Primary Administrator
  3. Log In to Platform: Log in with the credentials from the email and proceed to the User Guide: first-run activation.


5. Operations & Health Verification

You can verify the status and health of all deployed services with the mcm tool (optional):

mcm status         # platform version, URL and per-service replica status
mcm healthcheck    # point-in-time health snapshot of every service

A service that is still starting, or running below its expected replica count, is reported as unhealthy. Allow about 5 minutes after installation for all services to initialize.

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