WHM Requirements Deep Dive
Connecting WebHost Manager (WHM) to StackConsole CMP requires specific infrastructure, network, authentication, and platform configurations to ensure reliable automated provisioning. This page details each technical prerequisite, why it is required, where to configure it, how to verify it, and common pitfalls to avoid.
For a quick pre-installation checklist and jump-host IP whitelist details, see the WHM Requirements Checklist.
1. Operating System & WHM Platform
Requirement
A dedicated server or virtual machine running a supported enterprise Linux distribution with an active, licensed installation of cPanel & WHM (Version 110 LTS, 118, or 120+).
- Why it is needed: CMP communicates with WHM's JSON-API v1. Supported operating systems ensure that modern TLS ciphers, systemd services, and cPanel API endpoints are consistently available.
- Where to configure it: During server installation and initial cPanel deployment.
- How to verify it:
/usr/local/cpanel/cpanel -V
- Expected result: Output showing cPanel & WHM version 110.0 or higher with an active license:
118.0 (build 11)
- Common mistakes: Running an expired cPanel trial license, which blocks API access and causes HTTP 403 errors during connection testing.
2. Network Reachability & Port Configuration
Requirement
Bidirectional TCP connectivity between CMP application/worker nodes and the WHM server on port 2087 (HTTPS).
- Why it is needed: All administrative calls (
listpkgs,createacct,suspendacct,changepackage) and customer SSO requests route over WHM's secure management port 2087. - Where to configure it:
- On the WHM host firewall (e.g., CSF
/etc/csf/csf.conforfirewalld). - On intermediate network security groups, edge firewalls, and cloud access control lists.
- On the WHM host firewall (e.g., CSF
- How to verify it:
Run a network socket test from the CMP backend terminal:
nc -zv -w 5 <whm-server-ip-or-fqdn> 2087
- Expected result: Connection to port 2087 succeeded:
Connection to 169.58.163.216 port 2087 [tcp] succeeded!
- Common mistakes:
- Leaving port 2087 closed in CSF or security groups.
- Attempting to connect over unencrypted port 2086 (which is blocked or redirected).
- Overlooking that CMP background workers (
virtual-machinequeue) may reside on separate nodes with different outbound public IPs than the primary web app.
3. SSL / TLS Certificate Requirements
Requirement
A valid, publicly-trusted SSL/TLS certificate installed on the WHM service (cpanel, whm, webmail).
- Why it is needed: In production, CMP's HTTP client enforces strict SSL certificate verification (
Verify SSL Certificate: Yes). Invalid or self-signed certificates will cause cURL / Guzzle SSL verification exceptions (cURL error 60: SSL certificate problem). - Where to configure it: In WHM under Service Configuration → Manage Service SSL Certificates.
- How to verify it:
openssl s_client -connect <whm-server-fqdn>:2087 -servername <whm-server-fqdn> < /dev/null 2>/dev/null | openssl x509 -noout -dates -issuer -subject
- Expected result: Output displaying a valid certificate issued by a trusted Certificate Authority (e.g., Let's Encrypt, Sectigo, DigiCert) with valid start and expiry dates.
- Common mistakes:
- Using the server IP directly with SSL verification enabled when the certificate only covers the hostname FQDN (e.g.,
whm.example.com). - Allowing the default self-signed snakeoil cPanel certificate to remain active in a production deployment.
- Using the server IP directly with SSL verification enabled when the certificate only covers the hostname FQDN (e.g.,
4. API Authentication & Token Privileges
Requirement
A dedicated WHM API token generated for the root administrative user or an authorized reseller account with explicit Access Control List (ACL) privileges.
- Why it is needed: CMP performs account lifecycle operations programmatically. Token authentication avoids exposing underlying server shell passwords and allows granular permission control.
- Where to configure it: In WHM under Development → Manage API Tokens.
- How to verify it:
Query the package list using the token via cURL:
curl -H "Authorization: whm <username>:<api_token>" \https://<whm-server-fqdn>:2087/json-api/listpkgs?api.version=1
- Expected result: A JSON response with
metadata.result: 1and a populated list of packages. - Common mistakes:
- Selecting "Generate Token" without assigning the required ACL permissions (such as
create-user-session,basic-whm-functions,list-pkgs). - Creating the token under a reseller user that does not possess root delegation or sufficient account quotas in WHM.
- Selecting "Generate Token" without assigning the required ACL permissions (such as
5. Required WHM API Permissions Matrix
To adhere to least-privilege principles, ensure the API token possesses the following specific permissions:
| Permission / ACL Feature | Purpose in CMP Integration | Impact if Missing |
|---|---|---|
list-pkgs | Fetches available hosting packages in the rate card setup | CMP package dropdown is empty |
create-acct | Provisions new cPanel accounts upon customer order | Account creation fails with permission denied |
modify-acct | Modifies account settings and quotas | Quota and attribute changes fail |
suspend-acct | Suspends accounts when invoices are overdue | Disciplinary suspension jobs fail |
unsuspend-acct | Restores suspended accounts upon invoice settlement | Accounts remain suspended after payment |
kill-acct / removeacct | Destroys terminated accounts during immediate cancellation | Termination jobs fail and leave orphaned infrastructure |
edit-pkg / changepackage | Applies package upgrades | Customer plan upgrades fail |
create-user-session | Generates secure cPanel Single Sign-On (SSO) URLs | "Open cPanel" button returns 502 or auth error |
passwd | Handles password resets from the customer Access tab | In-portal password changes fail |
6. Hostname, DNS & Mail Defaults
Requirement
A fully qualified server hostname with valid forward and reverse (PTR) DNS records, along with default nameserver configurations.
- Why it is needed:
- WHM uses the primary hostname when configuring system mailers and virtual hosts.
- Newly created customer cPanel accounts inherit default nameserver records and mail routing options configured in WHM.
- Where to configure it:
- Server Hostname: Networking Setup → Change Hostname.
- Nameservers: Server Configuration → Basic WebHost Manager Setup.
- How to verify it:
hostname -fdig +short <server-hostname>dig -x <server-ip> +short
- Expected result: Hostname resolves forward and backward to the same server IP.
- Common mistakes:
- Leaving the default
localhostor an unresolvable domain as the server hostname. - Pointing nameservers to inactive DNS IPs, causing DNS propagation failures for customer primary domains.
- Leaving the default
7. Package Configuration Rules
Requirement
Pre-existing hosting packages whose names CMP can list. basic hosting and Basic Hosting work. basic_hosting does not.
- Why it is needed: CMP queries WHM packages via
listpkgs. A bare underscore name such asbasic_hostingis left out of the CMP dropdown. - Where to configure it: In WHM under Packages → Add a Package.
- How to verify it: Check package names in WHM Packages → Edit a Package.
- Expected result: Names such as
basic hosting,Basic Hosting, orroot_unlimited. - Common mistakes:
- Creating
basic_hosting. That underscore form does not appear in CMP. Usebasic hostingorBasic Hosting. See WHM Package Naming. - Renaming a package in WHM after customers have already been provisioned without updating CMP's plan mapping.
- Creating
8. Queue Workers & Notification System
Requirement
Operational CMP queue workers running for the virtual-machine queue, and active email notification templates.
- Why it is needed:
- Account provisioning, upgrades, suspensions, and terminations are asynchronous jobs dispatched to the
virtual-machinequeue. - Welcome emails containing cPanel credentials depend on active notification workers.
- Account provisioning, upgrades, suspensions, and terminations are asynchronous jobs dispatched to the
- Where to configure it: On the CMP application host (
supervisoror systemd service configurations). - How to verify it:
Check supervisor status on the CMP server:
supervisorctl status
- Expected result: Queue worker processes for
virtual-machineanddefaultqueues are inRUNNINGstatus. - Common mistakes:
- Queue workers are stopped or crashed, leaving customer accounts indefinitely in the
creatingstate. - Notification worker disabled, preventing customers from receiving automated welcome emails.
- Queue workers are stopped or crashed, leaving customer accounts indefinitely in the