Welcome back to our WHMCS tutorial series! If you’ve been following along, I’m showing you how to fully automate the provisioning of services for your managed service provider or reseller hosting business using WHMCS. With a limited-time offer, we’re including a WHMCS license with our Turbo, Plus, and Business CloudShield packages.
From a business standpoint, WHMCS is incredibly powerful. It’s not just for provisioning web hosting and domain services, but it’s also a full billing system, handles invoicing, integrates a front-end website, and includes a ticketing system and knowledge base.
What We’ve Covered So Far:
In this tutorial, I’ll walk you through setting up web hosting packages in both the back-end and front-end of your site so that your customers can begin purchasing and using your services.
Step 1: Create Hosting Packages on Your CloudShield VPS
Before diving into WHMCS, you need to create the hosting packages on your CloudShield VPS where the accounts will reside. For this example, I’ll set up a Starter package similar to what we offer at NameHero, but you can modify it as needed for your business.
To create a hosting package in WHM:
- Log in to your NameHero Client Portal.
- Navigate to your CloudShield VPS product.
- Click the orange WHM login button.
Inside Web Host Manager (WHM), search for “Add a Package” in the left-hand sidebar and click on it.
Example: Setting Up the ‘Starter’ Package
You’ll want to configure the following resource limits based on the package you are offering:
- Disk Space Quota: This is the total space the customer can use for website files, emails, and databases. I’ve set this to unlimited for flexibility, but you can assign a quota to encourage upgrades. The beauty of CloudShield is that you can oversell and scale as needed.
- Monthly Bandwidth Limit: Another resource you can set to unlimited or cap to push higher-tier packages. Bandwidth caps are especially useful for business or e-commerce clients.
- Max FTP Accounts: Set this based on customer needs. There’s no real benefit in capping it, but you can if you like.
- Max Email Accounts: I suggest limiting this based on your disk quota. Remember, many customers never clean their inbox, so it can quickly eat up space.
- Max Mailing Lists: This allows customers to create mailing lists (e.g., for newsletters), though many people now use third-party email marketing services.
- Max SQL Databases: Websites often need at least one database (e.g., WordPress), so decide how many you’ll offer. Limiting the number of databases can encourage customers to upgrade.
- Max Parked Domains: If customers own multiple domains but want them all pointing to the same website, this limit will control how many can be parked.
- Max Add-on Domains: For packages like Starter, you might not allow any add-on domains, limiting customers to one website. This limit often influences upgrades.
- Max Passenger Applications: Passenger is essential for deploying web applications built with Ruby, Python, or Node.js. Set this based on whether you want to allow such applications.
Security and Email Limits:
- Max Hourly Emails by Domain: I recommend setting this low for entry-level packages to prevent abuse or spamming.
- Maximum Failed or Deferred Messages per Hour: If spamming is likely, a high percentage of outbound emails will fail. I set this at 100%, but 25% is more realistic to prevent abuse.
- Max Quota per Email Address (MB): To prevent a single email account from hogging disk space, set a limit per mailbox. Adjust based on the package tier.
Package Extensions: CloudLinux LVE Limits
The power of CloudLinux is its ability to isolate users and allocate server resources via LVE limits. This keeps a single customer from consuming too many resources or crashing the server.
For the Starter package, I recommend the following settings:
- Speed Settings: Set to 100%, which equals 1 CPU core. You can increase this for higher-tier packages.
- Memory Settings: Set to 1GB for lower packages. You can increase this based on the customer’s needs.
- Max Entry Processes: Limit concurrent connections to the website or scripts running. For Starter, I set it to 20.
- Nproc Settings: Limits the number of processes (e.g., cron jobs, SSH sessions). 100 is usually a good start.
- IO and IOPS Settings: Controls disk read and write speeds. I use high-end NVMe drives, so I set higher values like 1024KB/s for IO and 1024 IOPS.
- Inodes Limits: Each file on the server uses an inode, so this limit prevents excessive file creation. For the Starter package, I recommend 100,000 for the soft limit and 250,000 for the hard limit.
CloudLinux suggests the following defaults, which you can adjust for higher-end packages:
- Typical Hosting: Speed 100%, PMEM 512MB, IO 1024KB/s, IOPS 1024, NPROC 100, EP 20
- High-End Hosting: Speed 200%, PMEM 1GB, IO 4096KB/s, IOPS 1024, NPROC 100, EP 40
Once you’ve set your package parameters, click Add to save it. If you have other packages to configure, repeat this process for each one before moving to WHMCS.
Step 2: Set Up Packages in WHMCS
Now that the packages are ready on your VPS, it’s time to set them up in WHMCS so customers can see and purchase them from your site.
To add a package in WHMCS:
- Log in to your WHMCS Admin area.
- Navigate to System Settings > Products/Services.
Just like when adding a server in earlier tutorials, you’ll need to create a Product Group to organize your packages. These groups define how the products are displayed in your cart, so think about how you want them grouped (e.g., Web Hosting, Reseller Hosting, VPS Hosting).
Creating a Product Group
- Product Group Name: This will appear in your site navigation and product listings.
- Product Group Headline and Tagline: Use these optional fields to highlight key features.
- Order Form Template: Choose a layout that works for you. Each product group can have a unique form.
- Payment Gateways: During the initial setup, we enabled PayPal. You can add more gateways later.
- Hidden: If you don’t want these packages visible on the live site yet, check this box.
Click Save Changes.
Adding a Product
Return to the Products/Services screen and click Create a New Product.
Select Product Type (e.g., Shared Hosting for basic web hosting) and assign it to the product group you just created.
Name the product (e.g., Starter Package) and select cPanel as the module to handle provisioning.
Pricing and Module Settings
Next, configure pricing. Here’s a breakdown of the options:
- Payment Type: Choose Recurring for monthly billing, though you can add other cycles like quarterly or annual.
- Billing Cycles: Set different prices for different payment terms. For example, give a discount for yearly payments.
- Prorata Billing: Useful if you want to bill everyone on the same date (e.g., the 1st of each month).
Connecting Your cPanel Server
In the Module Settings tab:
- Module Name: Choose cPanel to automate provisioning.
- Server Group: Select the group you created in the earlier tutorial.
- WHM Package Name: Select the package you set up earlier in WHM.
You can also enable Auto-Setup so that the package is automatically provisioned once the customer’s payment is received.
Congratulations!
You’ve now successfully created and set up a web hosting package in WHMCS. It’s live and ready for customers to purchase from your website.
Stay tuned for the next tutorial, where I’ll cover how to add more payment processors to expand your checkout options.
Ryan Gray is the founder and CEO of NameHero, one of the fastest growing independent web hosts in the United States. Ryan has been working online since 1998 and has over two-decades experience in Internet Entrepreneurship.
Leave a Reply