Google Cloud Compute Engine

Installing cPanel & WHM on Google Compute Engine

Disclosure: This post may contain affiliate links, which means we may receive a commission if you click a link and purchase something that we recommended.

Pinterest LinkedIn Tumblr

This guide will help you learn how to install cPanel and WHM in Google Compute Engine VM Instance. This is the old set up of cPanel, you can view how to install and set up the latest cPanel v76 on Google Cloud.

cPanel is a server management software for website owners which comes with a 15-day trial.

Click here to activate your cPanel License

Steps to install cPanel and WHM

  1. Create the VM Instance
  2. Verify cPanel & WHM license history and validity
  3. Setup Cloud DNS
  4. Setup Firewall rules
  5. Install cPanel
  6. Set up Hostname in Google Cloud
  7. Setup WHM
  8. Setup Email in WHM
  9. Activate cPanel License

Cpanel and WHM can also be installed on other cloud platforms. You can choose anyone from the below.

Here are some options.

Check how to install cPanel on AWS.

Create the VM Instance

Go to Compute Engine >> VM Instances and click Create Instance

In Name provide a name for your Instance

In Region choose the region closest to your visitors

In Machine Type choose 3.75 GB memory 1vCPU

In Boot disk click Change and choose CentOS 7. In Size enter your required size, the minimum should be 40 GB and click Select

In Firewall check both Allow HTTP traffic and Allow HTTPS traffic

Click Create

It will take a while before the VM instance will be available for you

Verify cPanel & WHM license history and validity

Once your VM instance is created you will be provided with an external IP address which is used to license your cPanel. So you need to verify if the IP address has a valid 15-day trial license. So visit verify cPanel license and enter your external IP address and click Verify License. If the IP address does not have a valid license you can restart your VM instance. Then a new IP will be assigned. Then you can check again.

Reserve your IP address

If your IP address has a valid license you can proceed to reserve your IP address by going to VPC Networks >> External IP Addresses reserve your IP address to Static

Setup Cloud DNS

Please follow this guide to setup Cloud DNS and point your domain to Google Cloud

Once you have created DNS Zone, you need to create one additional A record for cpanel subdomain in your Cloud DNS

Click Add record set

In Name enter cpanel

Select Resource Record Type to "A"

IPv4 Address with the IP address of your instance that you have reserved earlier

Leave everything to default.

Click Create

Now your VM instance is configured and ready to setup Firewall rules for cPanel installation.

Setup Firewall rules

cPanel & WHM uses some ports to manage the server, so you need to create a firewall to provide access to these ports.

Go to VPC Network >> Firewall rules and click Create Firewall rules

In Name enter cpanel

In Targets select All instances in the network

In Source filter select IP ranges

In Source IP ranges enter 0.0.0.0/0

In Protocols and ports check TCP and enter 2077, 2078, 2082, 2083, 2086, 2087, 2096, 3306, 53.
Also check UDP and enter 53.

Click Create

Install cPanel

Go to Compute Engine >> VM Instances and click the SSH button right next to your instance to open the terminal window in the browser

Once the terminal is opened enter the following commands one by one

sudo -s
yum update
yum install perl
yum install wget

Then set the hostname with your domain name. Replace yourdomainname.com with your domain name

hostname cpanel.yourdomainname.com

Now stop firewall and disable Network manager

systemctl stop firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager

Download latest cPanel and install it by running the following command

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

It will take around 30 – 40 min to complete the install. Don’t close the terminal until the setup is completed.

Once the setup is completed, you can set the root password by executing the following command

passwd

Save your password safely, you will need that to login to your WHM

Set up Hostname in Google Cloud

Google Compute Engine won’t preserve the hostname (cpanel.yourdomainname.com) you set and changes it to default hostname, so this may result in a locked cPanel & WHM license. To preserve the hostname follow the below simple steps

cd /etc/dhcp/dhclient-exit-hooks.d/
sudo nano set-hostname.sh

Paste the following contents and hit Ctrl+X followed by Y to save the filter. Remember to replace yourdomainname.com with your domain name

#!/bin/sh
hostname cpanel.yourdomainname.com
/scripts/fixetchosts

Set correct permissions to the file you created

chmod 744 set-hostname.sh

That’s all now your cPanel is installed and ready to finish the WHM setup

Setup WHM

Open your browser and navigate to https://cpanel.yourdomainname.com:2087

Enter username as root

Enter the password you created by running the command passwd

Now you will be logged into your WHM

Agree with Terms and Conditions and go to step 2

Provide your email address

Server hostname which we set earlier

In Primary Resolver enter 8.8.8.8

In Secondary Resolver enter 8.8.4.4

Goto Step 3 and again Goto Step 4

Scroll down and Check Configure nameserver A records

Check Add hostname A records

Copy IP Address from Add hostname A records and paste in the above two IPv4

Goto step 5

Enable all notifications

Goto step 6

Click Finish

Goto WHM

Setup Email in WHM

In Google Cloud Platform port 25, which cPanel & WHM utilizes for SMTP, is not open. So you need to create an account with Mailgun or Sendgrid and integrate with WHM for emails
Google provides additional documentation for sending email from Compute Engine Instances here

Allow SMTP on Port 2525

Go to Service Configuration >> Service Manager

Tick both boxes next to Exim Mail Server (on another port)

Change Allow exim to listen on a port other than 25 to 2525

Click Save

Email Configuration

As the standard email port is blocked in Google Cloud, you need to configure a third party email service provider to send emails. Here we can use Mailgun to configure emails in cPanel.

Make sure you have these DNS records.

A record pointing to mail.domain.com

MX record with 0 priority pointing to mail.domain.com

Mailgun Configuration

Go to Service Configuration >> Exim Configuration Manager

Click Advanced Editor tab

In CONFIG section, under domainlist local_domains enter lsearch;/etc/localdomains : localhost : cpanel.yourdomainname.com : [GOOGLE INSTANCE NAME] : @

In daemon_smtp_ports enter 465 : 25 : 587 : 2525

In the Section: AUTH box enter

mailgun_login:
driver = plaintext
public_name = LOGIN
hide client_send = : Default SMTP Login : Default Password

In the Section: PREROUTERS box enter

mailgun:
driver = manualroute
domains = ! +local_domains
transport = mailgun_transport
route_list = * smtp.mailgun.org::2525 byname

In the Section: TRANSPORTSTART box enter

mailgun_transport:
driver=smtp
hosts_try_auth = smtp.mailgun.org

Activate cPanel

cPanel is a subscription based software, you can activate your license within your 15 days trial period.

Save the configurations, that’s everything about cPanel & WHM on Google Cloud.

18 Comments

  1. I have followed all the steps by the one in this article.
    but always after I enter the IPv4 nameservers with my internal Vm instances ip.
    after a few minutes later connetion failed. and ssh also experienced the same thing (connetion failed to VM on port 22. learn more about possible causes of the issue)

    • CloudBooklet Reply

      The IPv4 address must be the External IP Address of your VM Instance. Please try this.

  2. for the past problem, I have successfully completed it.
    for now I have a new problem. I have succeeded in cpanel. but I can’t add a new domain to the cpanel.
    the description is like this “Sorry, the domain has been assigned to an IP address that does not seem to use the DNS server associated with this server. Please transfer the domain to the server with these nameservers or ask your administrator to add one of the nameservers to / etc / ips. remotedns and make the A entry correct in the remote nameservers. ”
    I’ve changed the domain nameservers that I want to add to gcloud. still can’t too….

    • CloudBooklet Reply

      For adding a new domain please try creating private nameservers by hostnames pointing to the VM instance IP address and use them.

      • I have the same problem, actually it doesn’t let you use the “same” External IP when doing so, you have to use the new dedicated IP created, but still doesn’t resolve the problem.
        I’ve tried every method, but obviously I’m doing something wrong.

        Can I pay you to help set this up for me? I also have issue with Let’s Encrypt not installing too.

    • CloudBooklet Reply

      Please check you have enabled all the listed Firewall ports. TCP: 2082,2083,2086,2087,53 and UDP: 53

  3. Bijay Kumar Shaw Reply

    How to set correct permissions to the file you created?

    • CloudBooklet Reply

      You mean the file set-hostname.sh.

      You can just set it to chmod 744 set-hostname.sh

  4. After the first time and that also just for about 15 minutes, I am not able to login to my WHM account.

    • CloudBooklet Reply

      Maybe DNS has not yes propagated or DNS is not mapped correctly. Fitst you can also use your External IP address to access WHM

  5. mailgun not working in WHM, Please tell me is there anything to replace in the provide command.

    • Hi bDas, I’m not sure of your particular issue, but the Mail Queue and Delivery Reports in WHM might show you some info. Another thing to check is the Exim logs. Good luck!

  6. Thanks for the article CloudBooklet!

    If using MailGun, do all new domains that are sending mail have to be added/verified on MailGun?

    • Hi CJ, Thank you too for using Cloudbooklet. Yes, all domains should be added in MailGun and smarthost needs to be configured

  7. Thank you, I will consider your request, by the way I also included to preserve hostname, may be you have missed that. Please read carefully again.

    • Hi

      In AUTH

      sendgrid_login:
      driver = plaintext
      public_name = LOGIN
      hide client_send = : SMTP Login : Password

      In PREROUTERS you can use

      send_via_sendgrid:
      driver = manualroute
      domains = ! +local_domains
      transport = sendgrid_smtp
      route_list = “* smtp.sendgrid.net::2525 byname”
      host_find_failed = defer
      no_more

      In TRANSPORTSTSRT you can use
      sendgrid_smtp:
      driver = smtp
      hosts = smtp.sendgrid.net
      hosts_require_auth = smtp.sendgrid.net
      hosts_require_tls = smtp.sendgrid.net

Write A Comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.