
Most resellers get their WHM account packages wrong on day one. They copy a default template, set generous disk quotas, and forget one thing: ten "unlimited" accounts on a single VPS will eventually collide during a traffic spike. Getting package limits right up front saves you from angry tickets and midnight resource fires later.
This tutorial covers WHM account package setup the way it should work in 2026. That means disk quotas, bandwidth caps, CPU and entry process limits via CloudLinux LVE, email limits, and tier structures that make money instead of quietly eating your server's resources. If you're running reseller hosting on a VPS, this is the config work that separates profitable resellers from ones who churn through support tickets.
Why Default WHM Packages Cause Problems
WHM ships with a handful of stock packages — default, gold, silver — that were never built with your hardware in mind. They often set disk quotas at 1GB or bandwidth at "unlimited" with no thought to how many accounts you plan to stack on one node.
The real issue isn't disk space. It's CPU and I/O contention. A single WordPress site running a poorly cached plugin can peg a CPU core and slow down every other account sharing that server. Without CloudLinux LVE limits attached to your packages, one bad neighbor account degrades everyone else's hosting.
If you're planning package limits, pair this work with proper VPS performance tuning for WordPress workloads. Your baseline server config needs to actually support the account density you're selling.
Planning Your Package Tiers Before Touching WHM
Before opening WHM, sketch out three to five tiers on paper. A typical reseller structure on a mid-size VPS (4 vCPU, 8GB RAM) looks like this:
- Starter: 5GB disk, 50GB bandwidth, 1 database, 2 email accounts, 1 addon domain
- Business: 15GB disk, 150GB bandwidth, 10 databases, 25 email accounts, 5 addon domains
- Pro: 40GB disk, 400GB bandwidth, unlimited databases, 100 email accounts, unlimited addon domains
- Agency: 80GB disk, 1TB bandwidth, unlimited databases/email, dedicated IP option
Run the math on total oversubscription. If your VPS has 200GB of usable disk and you sell 40 Business packages at 15GB each, you're committing 600GB against 200GB available. Real usage rarely hits the cap. Still, aim for a 3:1 to 5:1 oversubscription ratio at most — not 30:1.
Creating a Package in WHM Step by Step
Log into WHM and navigate to Packages > Add a Package. Fill in the fields as follows:
- Package Name: Use something descriptive like
reseller_business_2026— avoid spaces, WHM will reject them. - Disk Space Quota: Enter in MB. For 15GB, type
15360. - Monthly Bandwidth: Enter in MB. 150GB becomes
153600, or select unlimited if your business model supports it. - Max FTP Accounts, Email Accounts, Databases, Subdomains, Parked/Addon Domains: Set explicit numbers. Never leave these on unlimited for entry-tier packages.
- Shell Access: Leave disabled unless you're selling developer-tier hosting.
- CGI Access: Usually enabled by default; disable if you don't support legacy CGI scripts.
- Dedicated IP: Only enable for top-tier packages where SSL or specific compliance needs require it.
Click Add and the package becomes available immediately when creating new cPanel accounts.
Attaching CloudLinux LVE Limits (The Part Most Resellers Skip)
If your VPS runs CloudLinux, go to WHM > CloudLinux LVE Manager > Package Limits. This is where you actually stop one account from starving the rest of the server.
Set these per package tier:
- CPU limit: Starter gets 25% of one core, Business gets 50%, Pro gets 100%, Agency gets 200% (two cores).
- Physical Memory (LVE_MEM): 512MB for Starter, 1GB for Business, 2GB for Pro, 4GB for Agency.
- Entry Processes (EP): Cap at 10 for Starter, 20 for Business. This limits concurrent PHP processes per account and stops runaway scripts from consuming all PHP-FPM workers.
- I/O limit: 5MB/s for Starter tiers prevents backup scripts or large uploads from saturating disk I/O for everyone else.
Without these limits, a single account running a poorly optimized WooCommerce store can consume the same resources as ten well-behaved WordPress blogs combined. LVE is what actually enforces the boundaries your pricing tiers promise.
Handling Email and Database Limits Correctly
Email is where resellers get burned most often. An account with unlimited email accounts and no sending limits becomes a spam relay risk the moment a client's WordPress site gets compromised.
Go to WHM > Tweak Settings > Mail and set a global Max hourly email limit per domain — something like 200 for Starter-tier domains. This caps outbound mail even if the package itself doesn't specify a limit, protecting your server's IP reputation across all reseller accounts.
For deeper mail server hardening tied to reputation, review our Postfix SMTP setup tutorial and the companion guide on configuring SPF, DKIM, and DMARC. Both directly affect whether your reseller clients' emails land in inboxes or spam folders.
Database limits matter too. Unlimited MySQL databases per Starter account invites clients to spin up dozens of test databases they forget about, each one eating disk and adding backup overhead. Cap Starter and Business tiers explicitly; save unlimited for your top package only.
Assigning Packages When Creating Accounts
When you create a new cPanel account under WHM > Create a New Account, select your custom package from the dropdown instead of leaving it on default. Migrating existing accounts to new packages? Use WHM > Modify an Account, select the new package from the list, and click Save.
Quick verification command to check what package an account is assigned, run via SSH:
whmapi1 accountsummary user=exampleuser | grep -A2 plan
This confirms the package name attached to that cPanel user. It's useful when auditing dozens of accounts after a bulk package migration.
Common Pitfalls When Setting Up Packages
- Setting disk quotas that don't match backup retention. If you keep 3 daily backups per account, a 15GB quota account can generate 45GB+ of backup data. Budget backup storage separately — see our cPanel backup verification tutorial for restore testing workflows.
- Forgetting to test package changes on existing accounts. Changing a package definition doesn't automatically enforce new limits on accounts already using it. You need to re-save them individually or run a bulk update script.
- Ignoring inode limits. WordPress sites with heavy caching plugins can generate hundreds of thousands of small files. Set inode limits in Tweak Settings alongside disk quotas — typically 250,000 inodes for Starter tiers.
- No cron job limits per package. A client with unrestricted cron access can schedule resource-heavy scripts every minute. Review our cPanel cron job setup guide for safe scheduling patterns you can recommend to clients.
Quick Diagnostic: Is Your Server Oversubscribed?
Run this before adding more accounts to a package:
# Check current disk usage vs total committed quotas
df -h /home
repquota -a
# Check LVE usage in real time
lveps
repquota -a shows actual disk consumption per user against their quota, so you can spot accounts near their limit before they file a ticket. lveps shows live CPU and memory usage per LVE. It quickly reveals which account is currently the noisy neighbor.
Running reseller packages on underpowered hardware defeats the purpose of setting careful limits. HostMyCode reseller hosting gives you WHM access on NVMe-backed infrastructure built for exactly this kind of multi-tenant package structure. If you outgrow shared reseller resources, our managed VPS hosting scales you into dedicated CPU and RAM without a full migration.
FAQ
How many cPanel accounts can I run per package tier on one VPS?
It depends on your RAM and CPU allocation more than disk. A 4 vCPU / 8GB VPS typically handles 15-25 Business-tier accounts comfortably with LVE limits enforced, assuming average WordPress traffic per site.
Can I change a package's limits after accounts are already using it?
Yes. Edit the package under WHM > Edit a Package, then either wait for the next quota sync or manually re-save each account under Modify an Account to force immediate enforcement.
Should I set unlimited bandwidth on any package?
Generally avoid it below your top tier. Unlimited bandwidth combined with a compromised WordPress site can generate outbound traffic spikes that trigger abuse complaints from your upstream provider.
Does CloudLinux LVE work without a dedicated server?
CloudLinux requires a VPS or dedicated server with root access and a compatible license. It isn't available on shared plans you don't control. Most reseller-focused VPS plans include CloudLinux as an add-on.
What happens when a client hits their disk quota?
cPanel blocks new file writes, email delivery for that account, and sometimes database writes once the quota is exceeded. That's why proactive alerts via WHM > Notifications at 80% usage save you from surprise downtime tickets.