Enabling DomainKeys Identified Mail (DKIM)

DomainKeys Identified Mail (DKIM) is a way to attach an encrypted digital signature to your email. Like adding an SPF record to your server, DKIM helps prevent email spoofing. Email spoofing is when spammers send email that looks like it’s coming from your email address. Spammers spoof your address to make it more likely that recipients will open spam emails, less likely that messages will be marked as spam, and harder to find the true spam source. If your address is spoofed, your server could get flagged as a spam server and you can have trouble sending legitimate mail, even if you aren’t doing anything wrong. This is commonly known as having a bad mail reputation.

Outgoing DKIM works by generating an encrypted digital signature that is attached to email messages sent by your server. This signature is generated using a public key you save as a DNS record. Theoretically, only you have access to your DNS records, so mail signed using this key should be unmodified and verified as coming from your server. If you don’t use your server to send mail, adding DKIM records to your server will have no effect on your mail reputation.

Using Plesk?

DKIM is not natively supported in Plesk 12. Instead, Plesk uses DomainKeys. If you’d like to use DKIM, it is supported with certain Plesk MailEnable plans. If you specifically need DKIM, contact our Heroic Support team to learn more about MailEnable.

There are three parts to enabling DKIM:

Generating Your DKIM Key

On a cPanel server, generating a DKIM key is easy! cPanel does it for you.

  1. Log into the cPanel account with email accounts where you’d like to enable DKIM. DKIM records are tied to a domain, you each domain you email from will need its own record.
  2. Scroll down to Email and click on Authentication.
    dkim1
  3. On the Email Authentication page, you’ll see two different methods: DKIM and SPF. We recommend using both, but this walkthrough will only cover DKIM. We have a separate article on SPF records. In the DKIM section, click Enable if DKIM is disabled.
    dkim2
  4. Once you enable DKIM, you’ll see a field that shows your current raw DKIM record. This is the public key you need to add to your DNS records. It should look something like this:

    default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyGm4KfaLQsOiNqfNGT0DDa+XE+TmIyr03F3/AMU8SXFwgItBU/PikYTmIyr07yhQoqlPrSL27l8XHf8AMIIB1LtxU2/490wRkuu9ZorEjRkIXSbev1GyAinBQNa5Rln2S+8AMIIBhZzfkNw7panbVJ0HPREiZAJ5TQEX1LjTqB/nArmNaMXaRUCwmYzGY45z8" eW2BJMM7Ftsj3nOTmIyr0LFSL27l8OaMDdcvpCglrFWoF1dXA78ORuvMSL27l8A5+UWRFBQ4NP6awWYj2LTSyeNeTlafawRk2B3C/dNcwpoLjz3T1wBHctcLnuC13+nMzzyUtgIVgz/7Ka8AMIIBQIDAQAB\;

Copy this record and paste it into a text document to prepare for the next step: adding your DKIM record to DNS.

Adding Your DKIM Key to DNS

Now that you’ve generated your DKIM record, you need to add it to your DNS records. These directions are different depending on where your DNS is hosted:

If you don’t know where your DNS is hosted, read our article on how to find out first!

Your DNS Is Hosted at Liquid Web

If you are using Liquid Web’s nameservers, you can update your DNS records right in your Liquid Web account. Liquid Web’s nameservers are:

  • ns.liquidweb.com
  • ns1.liquidweb.com
  • ns.sourcedns.com
  • ns1.sourcedns.com

As long as your domain is using one of these nameservers, you’re good to go!

  1. Before you begin to add your DKIM record to your Liquid Web account, there is a small amount of formatting to do. The text portion of your DKIM record should look similar to this:
    "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyGm4KfaBhFDhZzfkNw7pan+XE+TmIyr03F3/AMU8SXFwgItBU/PikYlddmgf7yhQoqlPrUMEqPZXHfIE8uGg1LtxU2/490wRkuu9ZorEjRkIXSbev1GyAinBQNa5Rln2S+AeBhFDhZzfkNw7panbVJ0HPREiZAJ5TQEX1LjTqB/nArmNaMXaRUCwmYzGY45z8" eW2BJMM7Ftsj3nOPYRbYxLFCzroSSOaMDdcvpCglrFWoF1dXA78ORuvMSL27l8A5+UWRFBQ490wRkuu9ZorEjRNeTlafawRk2B3C/dNcwpoLjz3T1wBHctcLnuC13+nMzzyUtgIVgz/7KaGQv5rnQIDAQAB\;
    Some punctuation needs to be removed to format this record correctly.

    • Remove the quotation mark at the beginning of the record.
    • Remove the space and quotation mark in the middle of the record.
    • Remove the slash and semicolon at the end of the record.

    With those few edits, you’re all set to load your DKIM record into your Liquid Web account.

  2. Log into your Liquid Web account.
  3. In the left navigation menu, click on Domains.
  4. The Domains Dashboard has three tabs along the top. Click on DNS.
  5. Scroll down to Current DNS Zones and click the [+] next to the domain where you’re adding the DKIM record. You’ll see a list of your current DNS records. At the bottom of that list, click on Add a New Record. Now, you can follow the steps you’d normally use to add a DNS record.
  6. The first field in your new record is for the subdomain. In this field, enter the first part of your record:
  7. The second field is the time to live, or TTL. This is how quickly new changes will take effect. You can match this to your other DNS records.
  8. Now, choose TXT from the Type dropdown menu.
  9. The last field is the data field. Here you’ll copy and paste the rest of the record cPanel created for you.
  10. Click the green checkmark to save your DNS record.

Now that your DKIM record has been added, all that is left is to add a TXT policy record.

Your DNS is hosted on the same server as your email

If you are using private nameservers on the same server as your email, cPanel will set up your DKIM records automatically! So, once you follow the steps to auto-generate your DKIM record, they are automatically added to your DNS zone in WHM. Just confirm they are correct in WHM:

  1. Log into WHM.
  2. In the search bar above the left navigation, search for “DNS.” Then, click on Edit DNS Zone.
  3. Click on the domain where you auto-generated the DNS record in cPanel, then click Edit.
  4. Scroll down and check to see that your DKIM records are included. If they are, you’re all set!
  5. If the SPF record isn’t there, simply add a new record by copying and pasting the DKIM record information into a new TXT record.

Now that your DKIM record has been added, all that is left is to add a TXT policy record.

Your DNS is hosted with another company

If you registered your domain at another company and host your DNS there, you log into your account with that company to manage your DNS. Find their DNS record editor and enter your DKIM record according to their specifications.

Now that your DKIM record has been added, all that is left is to add a TXT policy record.

Adding a TXT Policy Record

A policy record is a DNS TXT record that talks more generally about DKIM on your server. It shows your server uses DKIM verification and makes DKIM work more smoothly. A policy record is just one more DNS record. Wherever you added the DKIM DNS record, you’ll also add the policy record.

There are different tags that make up the text of a policy record:

  • t=y; tells other servers your domain is testing DKIM. This means if your DKIM isn’t working properly, other servers are less likely to reject your email.
  • o=~; means that some of your mail is signed by DKIM, but not necessarily all. o=-; means all your mail is signed by DKIM. So, if another server receives a message that isn’t signed, it will be rejected.
  • n=your information here; is a note. It doesn’t affect DKIM, but you can use it to explain more about your specific DKIM. This will show up in error logs if something DKIM verification fails.
  • r=postmaster@mysite.com; is the responsible email address for this domain. Use an email address you can access on your server.

Most likely, your policy record will look like this:

_domainkey IN TXT "t=y; o=~; n=Interim Sending Domain Policy; r=postmaster@mysite.com"

Using t=y; and o=~; will help your email be delivered even if the DKIM signature gets broken in transit from your server to the receiving server. Of course, replace “postmaster@mysite.com” with the responsible email address.

Entering your policy record is the exact same procedure as entering any other DNS record. Wherever you entered your domain-specific DKIM record is also where you should enter your policy record: either in your Liquid Web account interface, in WHM, or in the control panel of your external DNS provider

You’ve successfully created a DKIM record for your domain! You can check to make sure it’s working by sending a test message from a domain email account to check-auth@verifier.port25.com. You don’t have to include a subject or any body text. You’ll receive an automated reply with the status of DKIM, as well as other services you may have.

Where Is My DNS Hosted?

From time to time, you’ll have to make changes to your DNS records. For example, if you change IP addresses, your DNS A records will change. You’ll also change DNS if you want to add SPF records to help email authentication. For these changes to work properly, it’s vital to know where DNS is hosted.

DNS is always hosted at your domain’s authoritative nameservers. Your authoritative nameservers, and therefore your DNS, can be in three places:

  • Liquid Web’s nameservers
    • ns.liquidweb.com
    • ns1.liquidweb.com
    • ns.sourcedns.com
    • ns1.sourcedns.com
  • Your private nameservers on your server or another server you control
    • Ex.: ns.mysite.com
  • Where you registered your domain name
    • Ex.: Enom, GoDaddy, Namecheap, etc.

If you are using Liquid Web’s nameservers, you can update your DNS records in your Liquid Web account interface. If you use private nameservers on your server or another server, you can update DNS records in the control panel for your server (most likely WHM or Plesk, sometimes cPanel for SPF records). If your nameservers are where you registered your domain name, you’ll need to log into your account at that registrar and edit DNS there.

Either way you check your domains authoritative DNS you should always remember, if you don’t update DNS in the right place it wont take effect. This could mean your websites won’t load properly and can cause unnecessary downtime.

Discovering Where DNS Is Hosted – Web

If you aren’t comfortable using your terminal program to look up WHOIS information, use an online WHOIS checking tool.

Discovering Where DNS Is Hosted – CLI

You can easily find out where your DNS records are hosted using your server’s WHOIS entries.

  1. Launch your terminal program. Every operating system (Windows, Mac, and Linux) has a terminal program: use your computer’s search function to look for “terminal,” then open the terminal program you find.
  2. In the terminal window, type:
    whois mysite.com
    and press Enter. Be sure to replace “mysite.com” with your site’s domain.
  3. You’ll start seeing a lot of information about your domain, including where it is registered and the nameservers you’re using.
    Domain Name: LIQUIDWEB.COM
    Registrar: NETWORK SOLUTIONS, LLC.
    Sponsoring Registrar IANA ID: 2
    Whois Server: whois.networksolutions.com
    Referral URL: http://networksolutions.com
    Name Server: NS.LIQUIDWEB.COM
    Name Server: NS1.LIQUIDWEB.COM
    Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
    Updated Date: 04-aug-2016
    Creation Date: 05-aug-1997
    Expiration Date: 04-aug-2026
  4. Look specifically at the Name Server listing. In this example, you’ll see liquidweb.com uses Liquid Web’s nameservers. You might also see your own server listed as the nameserver (ns.mysite.com) or a domain registrar listed as the nameserver. This information tells you where you will be editing your DNS records:
    • If you use Liquid Web nameservers: edit your DNS records in your Liquid Web account.
    • If you use private nameservers: edit your DNS by logging into cPanel and searching for “Edit DNS Zone.”
    • If you use a different registrar’s nameservers: edit your DNS records by logging into your account at your registrar.

Understanding the Default WordPress .htaccess

When maintaining a WordPress site you may find yourself attempting things that normally would work and find that they have unexpected results. This is usually due to how WordPress’ default .htaccess rules manipulate the configurations and provide ‘pretty permalinks’.

This article is directly applicable to WordPress on an Apache based server. For WordPress Multi-site or other web servers (Nginx, IIS, etc) please review the official WordPress documentation as rules and configurations may differ.

The Default Rules

The default WordPress .htaccess rules are responsible for how WordPress is able to support ‘pretty permalinks’. Without these rules in place, WordPress permalinks would not resolve correctly. This feature allows your URLs to look much cleaner and more readable without over complicating or cluttering your website’s files structure.

The default rules look as follows:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

To break down what these rules are defining we’ll start at the top and work our way down.
  • First, you see a comment as indicated by the hashtag; this symbol `#` is used to denote a comment in .htaccess files.
  • Next you see an opening brace for Apache’s internal “IfModule” function; this specifies that the contained rules should only be used with the “mod_rewrite” module for Apache.
  • The Rewrite module is enabled.
  • The RewriteBase is declared; this defines the ‘root’ folder that should be applied to rewrite rules.
  • The next line is the first rewrite rule, this rule defines that if an “index.php” file is specifically called then no rewrite is needed.
  • The next two lines are both defining rewrite conditions; these conditions are specifying that if no file or folder can be found at the given URL the next rule should be applied.
  • Finally, the last rewrite rule before the close brace is for the “IfModule”. This rule will only be applied if no file or folder can be found for the URL. If that occurs, the request will be passed to WordPress before providing the client a response.

While this breakdown may be enough of an explanation for some, this is still a very complex chain of rules. The rules are best described and summarized as this: “If Apache itself cannot find the file or folder requested then the request should be dealt with by WordPress directly.”

An interesting result of this is that technically all WordPress pages are a 404 result in the context of Apache and only until PHP and WordPress receive the request can any content be resolved for a response.

Tips for Custom Rules

There usually is not a consistent cause for issues experienced when dealing with .htaccess rules on a WordPress site. As the cause can fluctuate from site to site, and even rule to rule, it’s hard to provide an extensive explanation for the issues. It is also important to note that plugins and themes can also affect how certain rules are managed as well.

A common rule that causes odd behaviour and provides mixed results usually relates to allowing access based on specific IP address. These rules usually look like:

<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.11.109.98 localhost
</Files>

The rule above will deny all IPs access to wp-login.php unless the IP is listed in the ‘Allow from’ line. While it should work by default, occasionally this can cause issues. If it does, the usual fix is to define the error documents. This would look like:

ErrorDocument 401 default
ErrorDocument 403 default
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.101.159.98 localhost
</Files>

Having these error documents defined explicitly will ensure that when an unapproved IP attempts to access the page they are rejected and are sent a proper error page.

As there are various issues that can come up and each has their own solution, we simply cannot cover them all here. If you believe you are experiencing configuration issues related to those rules mentioned here feel free to contact our Heroic Support®.

Import Emails with Webmail on a cPanel Server

When it comes to importing Emails on to a cPanel based server, using Webmail is the easiest method. Currently cPanel-based servers offer three different webmail interfaces [Horde, Squirrel Mail, and RoundCube] for viewing and managing email accounts without the need to setup an email client. This tutorial will focus on how to import emails from your server by utilizing the Horde Webmail interface.

While RoundCube does support email importing, it only allows you to do so with a single email at a time. This may not be an issue for some, but when working to import a large number of emails, this can be an inconvenience. Horde, on the other hand, allows the importing of entire folders, which can speed things up when working to import in bulk.

Pre-flight Checklist

  • These instructions are intended specifically for a managed Liquid Web server with cPanel.
  • The Horde Webmail interface must not be disabled on the server.
  • Access to the cPanel which owns the email address will be necessary.

Import Emails with Horde Webmail

For importing emails via Horde the process is largely the same as when exporting. You will need to start the same by opening the webmail interface for the email account. Once you are logged into the email address and have horde open you can proceed with the importing directions below.

Our example for importing continues from the examples set in exporting found above. Though, in this example we are using a different email account that is currently empty of any Emails.
    1. From the Horde interface of the account you wish to import to, right click the folder you would like emails imported to. We will use the Inbox.

Email Import - Horde Folder Menu

    1. From the folder drop down menu select “Import”

step-two

    1. You will now see a popup to select the file for uploading, select the file by clicking ‘Browse’ to use the file picker.

Email Import - Horde File Select

  1. With a file selected click the “OK” button and Horde will begin the upload and import. After clicking OK you should return to the main Horde interface, there you will begin to see the imported emails to populate.

With this step complete you can now see that the emails were imported. You can see this below by comparing the two screenshots:

Email Export - Horde Interface

Import Results

Export Emails with Webmail on a cPanel Server

When it comes to exporting Emails on a cPanel based server using Webmail is the easiest method. Currently, cPanel-based servers offer three different webmail interfaces [Horde, Squirrel Mail, and RoundCube] for viewing and managing email accounts. Using a webmail client allows you access to your Emails without the need to setup an email client. This tutorial will focus on how to export emails from your server by utilizing the Horde Webmail interface.

While RoundCube does support email exporting, it only allows you to do so with a single email at a time. This may not be an issue for some, but when working to export a large number of emails this can be an inconvenience. On the other hand, Horde allows the exporting of entire folders, this can speed things up when working to export in bulk.

Pre-flight Checklist

  • These instructions are intended specifically for a managed Liquid Web server with cPanel.
  • The Horde Webmail interface must be enabled on the server.
  • Access to the cPanel account which owns the email address will be necessary.

Export Emails with Horde Webmail

  1. Open webmail for the email address you would like to export.
    You can do this by either logging into webmail with the email address directly, or by going in through the cPanel account that owns the email address.

    Open Webmail via cPanel:

    1. Login to the cPanel account that owns the email address you are looking to export.
    2. On the main cPanel page for the account find and click the “Email Accounts” button.
      Email Export Main cPanel
    3. Now on the Email Accounts page, find the email address you’d like to export emails for. Click the “More” button and then find and click “Access Webmail”.
      cPanel Email - Action Menu

    Open Webmail directly:

    1. To open webmail directly you would pull up the webmail login by visiting:
      http://[Server IP]:2097 or http://[Server Hostname]:2097
    2. You should now see a Webmail login page where you can enter the email address and respective password to login.
  2. Once the Webmail login is complete, either by direct login or login via cPanel, you will be presented with a page for Webmail selection.

  3. You should select ‘Horde’ when presented the choice of a Webmail client application. Once Horde is fully loaded you will see an interface similar to the following screenshot:
    Email Export - Horde Interface

    You can choose any folder you would like, for this example we will be using the Inbox.
  4. From Horde, right click ‘Inbox’ and select ‘Export’ from the list.
    Email Export - Horde Folder Menu
  5. You will now see a popup with export options, you can simply click ‘OK’ to get the exported emails in MBOX format.
    Email Export - Horde Download

With that complete you should now see your browser downloading the Emails in the MBOX format. The MBOX file format is a fairly generic format used for backing up Emails. The MBOX format is essentially a plain text file and has a wide range of support with various Email clients.

For more details and information on this file format see the MBOX wikipedia page.

EasyApache 4 & CLI based PHP utilities

With the release of EasyApache 4 in WHM 58 there are various changes to how PHP is managed. The most obvious being that EasyApache 4 brings support for installing multiple PHP versions alongside each other. However with multiple versions of PHP being installed on the server it’s easy to lose track of your command-line based PHP utilities and their PHP requirements.

Certain PHP packages like Composer, Drush, and WP-cli prefer to be run with the latest version of PHP. Unfortunately, having multiple PHP versions can mean not knowing which PHP will execute the utility when you call it directly. This article will detail a few methods to specify which PHP version should be used in instances like this.

Pre-flight Check:

  • These instructions are intended specifically for cPanel-based servers running WHM prior to version 58.
  • Command line access via SSH may be necessary to follow the examples.
  • The server will need to have EasyApache 4 active.
  • PHP 7 will be necessary to follow the provided examples.

Option #1: Directly Call the PHP Binary

The most basic option to workaround these issues is to directly call the PHP binary you need before executing the script. While this can be effective and will work as expected most of the time, certain utilities will not work when using this method.

You may want to attempt this method first and move on to Option #2 if this does not work as expected; generally though, this should work for executing basic PHP code.

/opt/cpanel/ea-php70/root/usr/bin/php someScript.php

The above command will specifically call the 7.0 version of PHP and will execute the someScript.php file within that version of PHP. If they are also installed on the server, the alternative PHP versions can be found at:

  • /opt/cpanel/ea-php55/root/usr/bin/php
  • /opt/cpanel/ea-php56/root/usr/bin/php
  • /opt/cpanel/ea-php70/root/usr/bin/php

Option #2: Use scl to Specify PHP Versions

As mentioned, certain PHP utilities are not provided as basic PHP files and are stored in the PHAR format. These utilities will not execute properly with the above method for specifying the PHP version. For these types of utilities you will need to specify the PHP version using a command called `scl`.

This command is a utility that allows running software in an environment packaged as a ‘Software Collection’. To be brief a ‘Software Collection’ is a way of defining an alternate location to a certain software. Fortunately, WHM provides predefined collections for the various versions of PHP supported by EasyApache 4.

The syntax of this command is as follows:

scl enable {SoftwareCollection} '{CommandToRun}'

Where you replace {SoftwareCollection} with the needed collection [ea-php55, ea-php56, or ea-php70], and you replace {CommandToRun} with the command, utility, or script you need to run.

A good way to highlight this is to review the difference in the following outputs:

root@noms [~]# php -v

PHP 5.6.25 (cli) (built: Aug 25 2016 17:00:38)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with the ionCube PHP Loader v4.7.5, Copyright (c) 2002-2014, by ionCube Ltd., and
with Zend Guard Loader v3.3, Copyright (c) 1998-2014, by Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies

root@noms [~]# scl enable ea-php70 'php -v'

PHP 7.0.10 (cli) (built: Aug 25 2016 18:04:55) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.10, Copyright (c) 1999-2016, by Zend Technologies

As you can see when calling PHP by itself we get the default version, but when using scl we explicitly called the PHP 7.0 collection and get results to match.

Example #1: Executing a utility [Composer]:

root@noms [~]# scl enable ea-php70 'composer --version'

Composer version 1.2.0 2016-07-19 01:28:52

Example #2: Running a PHP script:

root@noms [~]# scl enable ea-php70 './someScript.php'

With these key tips and tricks you should now be equipped with the necessary tools to run CLI utilities on a server using EasyApache 4. If you have any questions or are not comfortable making these changes yourself, please feel free to contact Heroic Support®.

WHMCS with Private Cloud Servers and Advanced Product Setup

Working with WHMCS & the Liquid Web Reseller Plugin

With the steps of the previous articles complete, we now have the WHMCS Liquid Web plugin setup and enabled. If you followed the previous directions, you’ve successfully created the first product based on VPS offerings. We will now cover some more advanced product creation options.

Step #1: Create a Liquid Web Private Cloud Product

To create your first Private Cloud product you will first need to open the Product Setup Wizard page within the WHMCS interface:

  1. Click on the ‘Addons’ tab at the top of the page.
  2. Select the ‘Liquid Web Storm Servers Billing’ option.
  3. From the sidebar on the left, click ‘Product Setup Wizard’.
  4. Once loaded, select only ‘Liquid Web Private Cloud’ then click ‘Next’.
  5. At this point the process will vary depending on if you already have a Private Cloud server connected to your Liquid Web account.
  6. If you already have a Private Cloud server continue to F, otherwise you will need to create a new Private Cloud server:
    Add Private Cloud

    1. You will see a ‘Add New Server’ dialog box come up, once the page loads.
    2. Select the Zone you’d like the server to be in.
    3. Review the available Private Cloud servers and select the one you’d like.
    4. Provide a hostname for the server in the ‘Host Name’ text input.
    5. Click ‘Add Server’.
  7. You may now create the Private Cloud based product.
  8. Create Private Cloud Product

    You may want to adjust most, if not all, of the fields on this configuration page to customize the product based on your current needs.
  9. After adjusting the options as needed, click the ‘Save & Continue’ button.

Step #2: Advanced Product Configuration Settings

While the initial settings in the Product Setup Wizard are generally enough to accommodate most product creations, there are more advanced settings which might be useful when creating more complex product configurations.

There will be small differences between the advanced settings found within the Private Cloud settings and the VPS based settings, though generally they both have most of the same options.

To access the advanced product configuration settings you can either: click ‘Save & go to Advanced mode’ button when creating a new product, or by opening a current product and selecting the ‘Module Settings’ tab.

Vps Advanced
Private Cloud Advanced

Above you see the VPS advanced configuration page (left) and the Private Cloud advanced configuration page (right).

As seen above the advanced configuration pages are fairly similar in nature, this should make using these pretty simple once you’ve worked with either one. To further simplify understanding the options available, you will only find the following options on the VPS page:

  • Default Configurable Options
    • Used to generate a handful of customer customizable server options, such as: VPS type, Backup settings, IP address quantity, and bandwidth quotas
  • Zone
    • Determines the ‘data center zone’ that the server can be created in
  • Config
    • Defines the specific server that will be used to create the product; e.g. 1G SSD vs 2G non-SSD

The following options are only on the Private Cloud page:

  • Configurable Options
    • Similar to ‘Default Configurable Options’ above, this generates a number of Private Cloud specific options that can be exposed to customers upon checkout.
  • Custom Field
    • Similar to the above point, this generates custom fields to collect data on customer checkout.
  • Parent Server
    • Defines the parent server that this product will use when creating new instances.
  • Available Parents
    • A list of available Private Cloud servers that are usable as a Parent server.
  • Select Parent Automatically
    • When enabled the product should automatically select the parent server based on available resources.

On both Private Cloud & VPS pages you will find:

  • Username & Password
    • These are the credentials used when connected to the Storm API – should be prepopulated with the credentials that were initially created.
  • Template
    • This is the image used to bootstrap the server — this determines the Servers OS, Management Panel type, and Server Management Level.
  • Image
    • Allows the new server to be bootstrapped with a Storm Server Image if the account contains some images.
  • Backup Plan & Backup Quota
    • These options determine if backups are enabled, what type of backup plan is used, and the quota applied to the backups.
  • IPs Number & Maximum Number of IPs
    • Defines the default number of IP addresses to start the server with and the maximum number of IPs a single server can allocate.
  • Bandwidth Quota
    • Allows customization of the Bandwidth quota applied to the server.
  • Monitoring
    • Enables customers to control Monitoring services on the server.
  • Firewall
    • Enables customers to control Firewall services on the server.
  • IPs Management
    • Enables customers to control IP address allocations on the server.

With a multitude of product configuration options available, you can choose exactly how you offer products and services to your customers. By fully utilizing these more advanced settings you can allow customers to select from a very specifically tuned array of products, or to adjust product details as they wish during the checkout process.

Step #3: Working with Configurable Options

To expand further upon the ability for your customers to tweak and adjust services they are ordering you can take advantage of the ‘Configurable Options Groups’ within WHMCS. These ‘Configurable Options’ are additional options that can be presented to a user upon ordering a service.

By utilizing these configurable options with the advanced features discussed above you are able to provide customers a build your own server experience, a variety of products to fit specific needs, or a mixture of both.

To begin working with ‘Configurable Options’ you will need to open WHMCS and go to the ‘Setup -> Products/Services -> Configurable Options’ page. Once there you can see a list of the groups similar to the following screenshot.

WHMCS account setup, the Product Setup Wizard and Storm Servers Billing

Working with WHMCS & the Liquid Web Reseller Plugin
I. What is WHMCS and installing the Liquid Web plugin
II. WHMCS account setup, the Product Setup Wizard and Storm Servers Billing
III. WHMCS with Private Cloud Servers and Advanced Product Setup

In the previous article we covered the basics of WHMCS, the benefits of using our plugin, and how to enable the plugin and widgets we provide in our plugin package. This article will cover the configuration of the Storm API access and your first product.

With the rebuilt Liquid Web reseller plugin for WHMCS, the initial account and API connection setup has been integrated into the new Product Setup Wizard. So, to configure the plugin to access your Liquid Web account via Storm API, we simply will start the process of creating your first product.

Step #1: Connect the plugin to Storm API

To make the initial connection to the Storm API you will first need to open the Product Setup Wizard page:

  1. Click on the ‘Addons’ tab at the top of the page.
  2. Select the ‘Liquid Web Storm Servers Billing’ option.
  3. From the sidebar on the left, click ‘Product Setup Wizard’.
  4. Once loaded, we will make our connection by starting to set up our first product:
    1. Adjust the checkboxes to your liking, for this example we will only select: ‘Liquid Web SSD VPS’
    2. Click Next.
    3. If this is the first product setup you will be redirected to the Account Authentication page.
  5. On the ‘Liquid Web account authentication’ page you will be prompted for your Liquid Web API authentication; you may either enter Liquid Web API credentials or your Liquid Web Manage credentials, and the wizard will create a new API user.
    1. For using a current API user:
    2. Api User login

      1. Click the ‘I have Liquid Web API credentials’ heading.
      2. Enter your Liquid Web Storm API user credentials.
      3. Click ‘Continue’.
    3. For creating a new API user:
    4. Manage Login

      1. Click the ‘Create a NEW Liquid Web API username and password for me’ heading.
      2. Enter your Liquid Web Manage credentials.
      3. Click ‘Create new API account’.
      4. You will now see the new Storm API user that has been created. Write these credentials down for safe keeping.
      5. Click ‘Continue’.

With that completed you have now authorized the plugin to access your Liquid Web account via the Storm APIs. You can now begin to create and setup products to offer your new clients.

Step #2: Create your first VPS product

Having completed all the prior steps we are now ready to create the first product via the Product Setup Wizard. In this tutorial our example product will be based on the Liquid Web SSD VPS, so we are now on the related configuration page, as seen below.

Product Wizard - Add VPS Product

You may want to adjust most, if not all, of the fields on this configuration page to customize the product based on your current needs.

Product Details

  • You need to provide the product name, description, and select a product group.

Module Settings

  • Default values from the database are loaded when you open this page.
  • You need to select the OS template and VPS type when changing the Zone.

Pricing (Monthly)

  • You can set the subscription pricing (monthly) either in percentage or fixed values.
  • When using percentage-based pricing, the module will automatically calculate the pricing of the selected configuration and update the pricing table in WHMCS.

Once you have adjusted the options on this page to your liking you can then proceed with creating the product by clicking ‘Save & Continue’ found on the bottom right of the page.

If you would like to you can verify the product was created by pulling up the ‘Products/Services’ page of WHMCS; found under: Setup > Products/Services > Products/Services, you should find your new product listed there. With this step you will have completed the creation of your first product!

Step #3: Storm Server Billing configuration

Now that we’ve created our first product clients can immediately begin putting in orders via the WHMCS client area. They will be charged based on the price values you configured when working through the Product Setup Wizard.

However with certain products or services you may require that clients pay for various resource usages, such as: bandwidth, disk usage, overall disk space, backups, memory, and/or CPU usage.

In order to control these aspects of a product you can use the ‘Liquid Web Storm Servers Billing’ page:

  1. Click on the ‘Addons’ tab at the top of the page.
  2. Select the ‘Liquid Web Storm Servers Billing’ option.
  3. Once loaded you will see a page similar to:
  4. Enable Billing Page

    Note: the paths on your page will be updated to reflect the location of the files needing to be run on cron.
  5. Configure and Enable the cron jobs:
    1. Using your preferred method [cPanel, or Command line], enable each cron job found on this page.
  6. You will see a dropdown under ‘Enable Billing’, open the dropdown and select your new product from the list.
  7. Once the page loads, you will see various resource usage-related categories where you can set extra charges for various metrics. [Bandwidth, Disk, Memory, etc]
  8. Billing Limits page

  9. Adjust these values to your liking and then click ‘Save Changes’ near the bottom of the page

With these new options and limits in place any servers of this type will now be billed based on resource limits defined on the Billing configuration page.

At this point the plugin should be fully configured with WHMCS and you can now continue to use the ‘Product Setup Wizard’ to create even more products and services to offer your clients.