Install cPanel & WHM on AlmaLinux

VPS & Servers

0 people found this article helpful

On a fresh AlmaLinux 9 or 10 server, set a hostname, disable SELinux and firewalld, then run cPanel's installer as root and finish the setup in WHM.

Before you start: install cPanel & WHM only on a freshly installed server with nothing else on it. There's no uninstaller: to remove cPanel later, the server has to be reinstalled.

Which systems cPanel supports

Operating systemStatus for new installs
AlmaLinux 9 and 10Supported, recommended by cPanel (AlmaLinux 10 needs cPanel & WHM 132 or later)
AlmaLinux 8Supported
CloudLinux 8, 9 and 10Supported (CloudLinux 10 needs cPanel & WHM 134 or later)
Ubuntu 24.04 LTSSupported (the same installer command works)
Rocky LinuxNo longer supported: cPanel recommends AlmaLinux instead
Ubuntu 22.04, CentOS 7, CloudLinux 7No longer supported for new installs

The server needs at least 2 GB of RAM (4 GB recommended), 20 GB of disk space (40 GB recommended), a 64-bit Intel or AMD processor (ARM isn't supported) and a static public IPv4 address. If the server's IP has an active CloudLinux licence, the installer converts the server to CloudLinux automatically.

A new installation runs on a free 15-day trial. After that the server needs a paid cPanel licence for its IP address. Each server needs its own licence.

On Ubuntu 24.04 the steps are the same with three differences: update with apt update && apt -y upgrade, skip step 3 (Ubuntu uses AppArmor, which works with cPanel), and in step 4 stop UFW instead of firewalld with systemctl stop ufw.service and systemctl disable ufw.service.

1. Connect as root and update the system

Log in as root (see Connect to your server with SSH) and bring the system up to date:

dnf -y update

If a new kernel was installed, reboot with reboot and log in again.

2. Set the hostname

The hostname must be a fully qualified domain name under a domain you own, such as server.example.com. It must not be the same as a website you'll host (so not example.com itself), must be 60 characters or shorter and needs an A record that points to the server's IP address.

hostnamectl set-hostname server.example.com
hostname

The second command should print the new name. Create the A record for server.example.com at your DNS provider now, so the server can get a free SSL certificate for its hostname later.

3. Disable SELinux

cPanel & WHM doesn't work with SELinux in enforcing mode, and AlmaLinux turns it on by default. Check its state:

sestatus

If it says enabled, set it to disabled and reboot:

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
grep ^SELINUX= /etc/selinux/config
reboot

The grep line should show SELINUX=disabled. After the reboot, sestatus should report disabled.

4. Stop the firewall

cPanel recommends turning off the system firewall before the installation. You can add a firewall again afterwards (see Install or remove the CSF firewall on a cPanel server).

systemctl stop firewalld.service
systemctl disable firewalld.service

If these say the unit doesn't exist, firewalld isn't installed and there's nothing to do.

Do I need to disable NetworkManager?

No. Older guides for CentOS 7 tell you to stop NetworkManager because the old installer refused to run with it. On AlmaLinux 9 and later the installer works with NetworkManager, so leave it on. On AlmaLinux 8 the installer switches it off by itself.

5. Run the installer

The installation takes a while and must not be interrupted. Start a tmux session first, so it keeps running if your SSH connection drops:

dnf -y install tmux
tmux new -s cpanel

On Ubuntu, tmux is usually installed already. Then start the official installer. This changes to /home, downloads the latest installer from cPanel and runs it:

cd /home && curl -o latest -L https://securedownloads.cpanel.net/latest && sh latest

If your connection drops, log in again and reattach with tmux attach -t cpanel. The installer is done when it prints a message that the installation is complete, together with a link to WHM.

6. Finish the setup in WHM

  1. Open https://your-server-ip:2087 in your browser (for example https://203.0.113.10:2087). The browser warns about the certificate the first time, because the server still uses a self-signed one. Continue to the page.

  2. Log in with the user name root and the root password.

  3. Accept the licence agreement and go through the setup steps: contact email address, nameservers and the other basic settings.

Check the installed version from SSH:

/usr/local/cpanel/cpanel -V

WHM also shows the version at the top of every page.

Common problems

The installer stops straight away

Read the last lines of its output. Common reasons: the server has too little memory, it isn't a fresh installation, the operating system isn't supported (see the table above) or SELinux is still enabled.

WHM doesn't open on port 2087

A firewall in front of the server may block it. The ports cPanel needs include 2083 (cPanel), 2087 (WHM), 2096 (Webmail), 80, 443 and the mail ports. Also check that you used https://.

Your server runs CloudLinux and you want to go back to AlmaLinux

Old guides describe a manual removal of CloudLinux on CentOS 7. Those steps don't apply to current systems. Use the conversion steps in CloudLinux's own documentation for your version, or reinstall the server with AlmaLinux and move your accounts across with WHM's Transfer Tool. If you're not sure, open a ticket and ask us first.

Your server runs Rocky Linux

cPanel no longer supports Rocky Linux and blocks updates to newer cPanel versions on it. cPanel recommends moving to AlmaLinux 9 or 10. On a server with websites, plan this carefully and take a full backup first.

If you'd rather not manage the server yourself, ElySpace also offers fully managed cPanel servers.

Related articles

Still stuck? Open a support ticket and we'll help.


Was this answer helpful?

2FA 301 redirect 3D Secure 404 page 500 error 550 error A record accept quote access log account credit account details account password Account Preferences account security add funds addon domain address importer affiliate program AI assistant AlmaLinux 9 Android email Apache Apache virtual host API token Apple Mail Ask AI auth code authenticator app auto-renew automatic payment automatic updates autoresponder AutoSSL bandwidth billing address billing contact billing section block editor block IP bounce bounce message BoxTrapper build a WordPress website bulk email accounts business email buy domain buy hosting buy SSL certificate CalDAV calendar sync callback can't log in cancel hosting cancellation card declined CardDAV catch-all Certbot change domain WordPress change email change nameserver change package change password change payment checklist checkout choose a plan client accounts client area clone WordPress cloud server coming soon page commission company name confirmation link contact contact form Contact Information contacts control panel cPanel cPanel API cPanel contact email cPanel DNS cPanel domains cPanel email cPanel install cPanel language cPanel layout cPanel login cPanel password cPanel SSL cPanel update cPanel users create cPanel account create mailbox credit card cron cron job CRT key CA bundle CSF firewall CSV import currency custom error page Custom Nameservers custom offer dashboard data center database password database privileges database user Database Wizard date.timezone DDNS deceptive site ahead default address delete database delete old emails deny access deploy deposit device email settings Directory Privacy disk space disk usage DKIM DMARC DNS cache DNS explained DNS Records DNS Zone Management document root domain alias domain grace period Domain Hosting Domain Management domain name domain renewal domain transfer downgrade download invoice due date dynamic DNS ElySpace email account email account exists email backup email client email delivery email disk usage email filters email forwarder email history email hosting email login email migration email password email ports email preferences email quota email routing email signature email test email verification EPP code error error log error pages EV SSL expired domain expiry expiry date export database export emails fake email faster support feedback File Manager file permissions firewall first website flush DNS folder force HTTPS forgot password form email not received forward email free migration free SSL FTP account's password FTP password Galaxy email setup getting started Git GitHub Gmail Gmail app GoDaddy good ticket Google malware warning Google sign-in Google Workspace GST number Gzip compression hacked website hacked WordPress hardening help help center home server hosting hosting addons hosting glossary hosting location hosting plan Hosting Service hosting terms hosting tools hosting types hostname hostname SSL hostnamectl hotlink protection HOW TO ADD NAME SERVERS TO MY DOMAIN NAME How to create additional FTP accounts in cPanel How to create FTP accounts in cPanel How to setup name-servers for a domain htaccess htaccess redirect HTTP to HTTPS image theft IMAP IMAP settings IMAP SMTP settings import emails import SQL Imunify360 index.php virus INR install plugin install SSL certificate install WordPress instant answers invite user invoice invoice details invoice emails invoice PDF invoices IP address IP Blocker iPad iPhone email knowledgebase language large database leech protection LEMP Let's Encrypt LFD linked accounts LiteSpeed Cache live chat locked out log out login login email login problem lost email Mac Mac email mail rules mailbox mailbox check mailbox full mailbox size mailing list Mailman maintenance maintenance mode malware removal malware scan manage services mass payment max_execution_time members area memory_limit menu migrate WordPress migration request migration ticket mobile webmail money-back guarantee move email move website move WordPress site MultiPHP INI Editor MultiPHP Manager multiple accounts multiple websites MX record MX records my domains MySQL MySQL database MySQL user mysqldump nameserver Nameservers network drive new account new order newsletter Nginx Node.js notifications npm nvm open ticket Optimize Website or delete order order email out of office outage Outlook Outlook app Outlook IMAP Outlook mobile Outlook password prompt OX App Suite OX webmail page speed password protect pay all pay invoice payment payment details payment failed payment method payment methods PayPal permalinks permissions phishing phone support PHP errors PHP timezone PHP version PHP-FPM php.ini PHPMailer phpMyAdmin plugin updates point domain print invoice printer SMTP product addons products professional email profile public_html publish a post quick start quota quote quotes rating Raw Access raw access logs reading settings redemption period redirect referral link refund register register domain remove user renew domain renewal repair database reseller hosting reset admin password reset password resource usage restore WordPress revoke access revoke privileges root login Roundcube Roundcube export Roundcube identities Roundcube signature rsync backup Samsung Email scam scan to email scheduled task search Search Console self-hosted WordPress send and receive send as server IP address server location server security server status service details services session setup setup domain i setup domain name shared passwords shared vs VPS sign up single sign-on site address Sitejet Builder SMTP SMTP settings spam spam filter SpamAssassin SPF SSH SSH hardening SSH key SSL certificate static front page strong password subaccount subdomain suggestions support ticket support ticket tips support tickets suspension switch account tar test site Thunderbird ticket reply ticket status track delivery transfer website troubleshooting two-factor authentication UAPI Ubuntu Ubuntu 24.04 UFW unpaid invoice unsubscribe unzip upcp upgrade hosting UPI upload files upload_max_filesize URL forwarding user management User Manager username vacation reply VAT ID verify email Web Disk web hosting web hosting basics web server WebDAV webmail webmail From address webmail on phone webmail password website builder website email website migration website not loading Website Performance website security welcome email WhatsApp WhatsApp support whitelist WHM wildcard SSL WordPress 404 WordPress backup WordPress caching WordPress critical error WordPress email WordPress errors WordPress homepage WordPress hosting WordPress login WordPress malware WordPress Management WordPress menu WordPress offline WordPress pages WordPress password WordPress plugins WordPress post WordPress security WordPress SMTP WordPress speed WordPress staging WordPress themes WordPress transfer WordPress update WordPress URL WordPress.org vs WordPress.com WP Mail SMTP wp-admin wp-admin login wp-cron zip Zone Editor zone templates