If you’re running a web hosting business, you know how challenging and time-consuming it can be to manage your clients, billing, support, domains, and more.

You need a solution that can automate your tasks and make your life easier.

That’s where WHMCS comes in.

WHMCS is a powerful and popular web hosting automation platform that can help you run your business smoothly and effectively. But how do you install WHMCS on RunCloud, the best cloud server management platform?

In this article, we will explain what WHMCS is and how it works, and then we will guide you through the quick and simple steps of installing it on RunCloud. You’ll also learn about some of the best alternatives to WHMCS that can offer you more features and benefits for your web hosting business. Read on to find out more!

What Is WHMCS

WHMCS is short for Web Host Manager Complete Solution. It’s a management platform that simplifies the process of selling domain names and hosting services online. WHMCS provides a suite of tools that can automate daily operations such as billing, invoicing, client management, and support requests. 

WHMCS was first introduced back in 2005, and since then it has become a popular choice for web hosting companies to manage their online business. It’s an invaluable tool for such hosting companies, as it helps them to manage their businesses more efficiently and effectively.

If you’re looking for alternatives to WHMCS, you might want to check out this article: The Best WHMCS Alternatives (Free, Open Source & Premium). It will give you an overview of some of the most popular and promising options for web hosting automation. You might find a solution that suits your needs and budget better than WHMCS.

Key Features Of WHMCS

  1. Billing and Invoicing: WHMCS can automate the process of generating invoices, and allows users to manage their finances and payments easily. You can also configure recurring billing, payment reminders and promotional discounts to boost your sales.
    There are mechanisms set in place to handle multi-currency transactions, as well as initiating refunds in case of a dispute.
  2. Client Management: It provides a centralized location to manage client data and information such as order history, support tickets, and billing information. Having a unified dashboard which tracks everything streamlines the operations process, and improves productivity.
  3. Product and Service Management: WHMCS allows you to manage your products and services quickly and easily. You can add new products, set up pricing, packages, and use custom options to provide additional offerings to your customers.
  4. Support Ticket System: There is a built-in support ticket system for managing customer support requests and inquiries. This system can be organized to replicate the hierarchy of support staff, and organize them in departments to segregate responsibilities. 
    It’s possible to open and communicate in a ticket via email or directly from the web interface. The ticketing system also supports attachments, and you can set up additional escalation rules to perform automated actions and enforce SLAs.
  5. Integrations: WHMCS has built-in support for various payment gateways such as PayPal, Stripe, Skrill, eWay, etc. It can integrate with various domain registrars, including GoDaddy, ResellerClub, NameCheap, and more. 
    It can send notifications via Slack and Hipchat, which makes it easier for users to manage all aspects of their business.
  6. Customizable: One of the key features of WHMCS is its modular architecture which allows for unlimited customizations. It offers a powerful API that supports both XML and JSON to execute actions within WHMCS from third party code. There are themes and templates available, which can be used to create a professional and branded experience for clients.

Benefits of using WHMCS

  1. Improved Efficiency: WHMCS can automate various business operations, thereby reducing manual work, saving time and improving efficiency. This will free up time for businesses to focus on growth and improving overall efficiency.
  2. Streamlined Financial Management: The platform facilitates billing and invoicing automatically for a large number of clients, allowing businesses to manage their finances and maximize their revenue. 
  3. Improves Customer Experience: With WHMCS, you get a centralized location to manage your client accounts and manage support tickets. Having a user friendly interface that makes it easy to perform the desired actions, and ask questions from support staff, leads to improved customer satisfaction. 
  4. Easy to Use: WHMCS consolidates multiple tools and features into a single platform. This eliminates the need to switch between multiple tools to manage business operations. It also provides tutorials, guides, and support resources to help users quickly get up to speed with the platform. 

How Install WHMCS on RunCloud

Creating an Empty Web app

Log in to your RunCloud dashboard, and select the server you want to use. Click on the Web Application tab and then click on the “Deploy New Web Application” button.

Choose a name for your web app, such as whmcs-app, and then select the web application owner. We recommend creating a new owner for each web application.

Next, choose a domain name for your web app, such as whmcs.example.com, and make sure you have pointed it to your server’s IP address or hostname. 

Select the PHP version that you want to use. At the time of writing, WHMCS recommends using PHP 8.1. Finally, click on the Create Web Application button, and wait until your web app is created and ready to use.

After creating the web application, you need to log into your server as the owner of the application via SSH, and navigate to the root directory of your web application. If you are not sure how to do this, we recommend reading How To Add a SSH Key and How To Use SSH Keys with PuTTY

Download WHMCS Binaries

Prerequisite: You need to install and enable ionCube first. Follow our tutorial on installing ionCube Loader and confirm that you have it installed.

After installing the ionCube Loader, you need to download and extract the WHMCS installation archive on your server. You can either download it to your personal computer and then move it to your server via FileZilla, or you can follow the instructions below to download it directly to your server if you’re feeling adventurous!

To download the binary directly to your server, we will use the curl command. First, go to https://download.whmcs.com/ and open the DevTools page in your browser.

In the DevTools windows, switch to the “Network” tab – any web requests that you make on download.whmcs.com will be recorded here. 

Next, go back to the download page and download the latest available binary – you need to have a valid license key to access this page.

Choose the Full Release option, and click on the Download button. This will start downloading the zip file to your local computer. You can cancel the download if you like as we won’t be using the downloaded file.In the network tab, you should see a single request – this is the request that was made to download the zip file. Right click on the request, and go to Copy > Copy as Curl. If you are using Windows, you might see two options – select the “Copy as Curl (bash)”. 

If you followed the instructions correctly, you will have copied the curl request that contains the necessary cookies and request headers that are specific to your license key. We can paste this into your server terminal to make the same request again (i.e. download the file). After pasting it in the terminal, we need to specify the name of the file that will be downloaded. To do this, write -o whmcs_87.zip at the end of the command. The resulting command should look something like this:

The above command will download the file to your server and save it as whmcs_87.zip. You can use the ll command to list all the files in the current directory.

The above screenshot shows that a new zip file was created on the server. We can extract it using the unzip command. This will create another folder inside our application folder.

We can quickly copy the necessary files to the root of the application folder, and remove the obsolete files such as the default index.html file and downloaded archive. We can also set permissions for the configuration file.

You can execute the following commands to perform the above tasks, and terminate the session.

unzip whmcs_87.zip # Unzip the downloaded file
cp -r whmcs/* . # Copy installation files to correct directory
rm -rf whmcs/ index.html whmcs_87.zip # Remove unnecessary files
mv configuration.php.new configuration.php # Rename file
chmod 400 configuration.php # Set Permissions
exit # Close the SSH connection

After executing the above commands, you can begin the installation process.

Open your website in a web browser – you’ll see a welcome screen. Click on the install button to start the installation process.

Note: If you receive an error message asking you to install ionCube loader, you should refer to our blog post: How To Install ionCube Loader (Step-by-Step Tutorial).

On the next screen, you will need to provide your License key for the WHMCS installation – you can get this from the WHMCS dashboard under Services > My Licenses menu.Next you need to create a database and link it to your web application.

After the installation is complete, you will see a success message, along with a list of steps to secure your installation. If you were not able to complete the installation successfully, you can refer to the troubleshooting guide by WHMCS

Logging in to the Dashboard

After the installation is complete, you can log in to your dashboard to check everything is working properly. Go to the “PHP Version Compatibility” section in the left menu to confirm that everything is configured correctly.

Next, click on the wrench icon on the top right and go to the “System Health” page to check your installation. Here you will see a list of warnings. We will resolve them one-by-one to secure your WHMCS installation.

Securing WHMCS Installation

Deleting the Installation Directory

WHMCS recommends deleting the “install” directory after installation is complete. Go to the RunCloud file manager and click on the checkbox next to the “Install” directory, and then press “Delete”.

Enable Necessary PHP Functions

You might need to enable certain PHP functions that are blocked on RunCloud by default.

Go to the “Settings” tab of your web application and scroll down to the “PHP settings” section. You can delete the required functions from the “disable_functions” list, and it will be enabled for that particular web application on your server.Don’t forget to click “Update PHP Settings” for the changes to take effect.

Change Permissions for configuration.php

If you are getting the “Insecure Permissions Check” message, you can update the file permissions using the RunCloud file manager.

Simply click on the configuration.php file and then set the permissions to read only. Click on the “Change Permissions” to save the changes, and then refresh the WHMCS dashboard to see the changes.Note: If you configured the permissions via the command line earlier during installation, you won’t need to do this again.

Rename Sensitive Directories

We can further enhance the security of our WHMCS installation by moving certain sensitive directories to a different location. Although you can move the directories, a quick and easy way to achieve a similar level of security is by just renaming them to something obscure.

Go to the RunCloud file manager and rename the following folders to anything you like:

  • templates_c
  • cons
  • admin 

We recommend adding a random string of alphanumeric characters either at the beginning or the end, rather than completely renaming it.

After renaming the folders, we need to tell WHMCS where the new folders are located. To do this, add the following code snippet at the end of your configuration.php file. Make sure to replace the name of the folder with the name that you chose. 

$templates_compiledir = "/home/whmcs/webapps/whmcs/templates_c_22";
$crons_dir = "/home/whmcs/webapps/whmcs/3f002g_crons/";
$customadminpath = "3fw0047_admin";

In the above example:

  • the templates_c directory was renamed to templates_c_22
  • the crons directory was renamed to 3f002g_crons
  • the admin directory was renamed to 3fw0047_admin

Note: You don’t need to specify the entire path from the root of the server when changing the custom admin path. 

After editing, your configuration file should look similar to the following example:

Save the file and refresh the WHMCS dashboard. Since we changed the admin directory, this will log you out of the dashboard.

Log in to the dashboard again by navigating to the new admin URL in your browser. For example, if you renamed your admin folder to 3fw0047_admin then your login page will be located at example.com/3fw0047_admin/.

Setting Up Cron Jobs

WHMCS needs to execute certain code at regular intervals to function correctly. We need to configure a cron job to handle this.

Click on the “Automation Status” (three cogs) button on the top right of the screen. This will show you the status of your cron jobs. Since we have just configured the server, the status might be okay but it will definitely show an error message after a few hours if you don’t configure the cron job.

To configure the cron job, click on the “OK” card in the middle of the screen. This will show a pop-up that displays the status of your cron jobs, along with the command that you need to execute. Copy this command.

Next, you need to navigate back to the RunCloud dashboard and click on the “Cronjob” button in the left-menu.

Give your job a descriptive name, and provide the name of the web application owner that you specified while creating the application.

Select the version of the PHP that your WHMCS installation is using, and then paste the copied command in the text box provided below. Make sure to remove the “php” from the start of the command as we have already specified a custom version of PHP for this.Finally, you need to specify the frequency of the job. From the drop-down menu, select “Use Custom Settings” and then type */5 in the minute text box.

Click on the “Save Cron Job” to add it to your server. Check the WHMCS dashboard in a couple of hours – if the cron status is still “ok” then you have performed this step successfully.

Block Access to Sensitive Directories

WHMCS recommends blocking requests that are served directly from the vendor. We can create a new rule on our server that will deny access to visitors. 

On LiteSpeed servers, you can do this quickly by adding the following code to your LiteSpeed configuration:

context /vendor/ {
allowBrowse 0
}

After adding these lines, the configuration file should look something like this:

For Nginx servers, you need to create a custom configuration to do this. Go to the “Nginx Config” page on your RunCloud dashboard, and create a new configuration. Provide a suitable name for the configuration, and then paste the following code:

location ^~ /vendor/ {
    deny all;
    return 403;
}

After adding the configuration, you can press “Run and Debug” to test the configuration. If you get a success message, you can click “Save” to add the configuration to your server.

Securing The Attachments and Downloads Directory

You need to secure the attachments and downloads directory. This is where WHMCS will store any files that you upload or attach to your invoices, tickets, products, etc. 

The way you secure these files and directories will depend on how you want to store them.

You might want to attach a different drive to your server to store this data, or save it on an S3 compatible storage service, such as AWS S3, DigitalOcean Spaces, etc. You can also use the default location inside your web app root directory, but you need to make sure it is not accessible from the web.

We recommend referring to the official WHMCS documentation for this step, as it will guide you through the different options and scenarios. 

After Action Report

WHMCS is a powerful and popular web hosting automation platform that can help you manage your clients, billing, support, domains, and more. However, it is not without its challenges and limitations. You might encounter issues with maintaining or upgrading your server.

That’s why you need a reliable and efficient web hosting control panel to run your WHMCS web app.

RunCloud is a cloud-based server management platform that can help you deploy, configure, optimize, and secure your web app on any cloud server. You can choose from various web application stacks and enjoy features such as SSL certificates, firewall, backup, cron jobs, SSH keys, and more.

Working with RunCloud is easy and intuitive. You can create and manage your web app from a user-friendly dashboard, or use the API and CLI tools for more advanced tasks.

You can also monitor your server’s health and performance with real-time graphs and alerts.

RunCloud also provides excellent customer support and documentation to help you with any questions or issues.

By using RunCloud to run your WHMCS web app, or any other web hosting automation platform, you can save time and improve your productivity. You can focus on growing your business and providing value to your customers, while RunCloud takes care of the technical aspects of your web app.

RunCloud is the ultimate partner for web hosting automation – get started with RunCloud today!