cPanel — Hosting Management Complete Guide
In this tutorial, you'll learn about cpanel. We cover key concepts, practical examples, and best practices.
cPanel is a Linux hosting control panel for managing websites, email, DNS, databases, SSL, and backups through a graphical dashboard without command-line skills.
In this tutorial, you will learn how to navigate the cPanel dashboard, create and manage email accounts, configure DNS zones, install SSL certificates via AutoSSL, administer MySQL databases through phpMyAdmin, set up backups, and harden your hosting environment. DodaTech uses cPanel to manage Doda Browser download mirrors and Durga Antivirus Pro distribution servers.
What You'll Learn
By the end of this guide, you will confidently manage a cPanel hosting account: create email accounts, point domains with DNS zones, install free SSL certificates, administer MySQL databases, schedule backups, and apply security best practices.
Why cPanel Matters
cPanel powers over 30% of the world's shared hosting environments. Its intuitive interface reduces server management time by 80% compared to raw Bash command-line administration. For developers deploying client sites or managing multiple domains, cPanel is the industry standard.
cPanel Learning Path
flowchart LR
A[Dashboard & Navigation] --> B[Email Management]
B --> C[DNS & Domains]
C --> D[SSL Certificates]
D --> E[Database Administration]
E --> F[Backups & Security]
F --> G{You Are Here}
style G fill:#f90,color:#fff
Dashboard Overview
When you first log into cPanel, you see a grid of icons organized into sections. The layout follows a logical grouping:
| Section | Key Tools | Purpose |
|---|---|---|
| Files | File Manager, Backups, Disk Usage | Manage site files and restore points |
| Databases | phpMyAdmin, MySQL Databases | Create and manage database users |
| Domains | Zone Editor, Redirects | Point domains and manage DNS |
| Email Accounts, Forwarders, Filters | Create mailboxes and routing rules | |
| Security | SSL/TLS, IP Blocker, Hotlink Protection | Encrypt traffic and block threats |
| Software | Select PHP Version, Installatron | Choose runtime and install apps |
Navigating the Interface
The search bar at the top is the fastest way to find any tool. Type "SSL" and cPanel filters down to SSL-related options. Bookmark frequently used tools for faster access.
Email Management
cPanel makes creating professional email addresses straightforward.
Create an Email Account
# These are cPanel GUI steps, but you can also use the API:
# Create email account via cPanel API (UAPI)
curl -s -X GET \
"https://yourdomain.com:2083/execute/Email/add_pop?email=contact&password=SecurePass123!&domain=yourdomain.com"a=500" \
-u "username:APITOKEN"
The interface requires three inputs:
- Username — the part before
@(e.g.,contact) - Password — strong password (12+ chars with mixed case, numbers, symbols)
- Storage quota — set a limit per mailbox (typically 500 MB to 2 GB)
Expected output
{
"status": 1,
"messages": ["Added contact"@yourdomain".com with quota 500 MB"]
}
This API-based approach is also how Docker-based hosting dashboards automate account provisioning at scale.
Configure Email Forwarders
A forwarder copies incoming mail to another address without storing it locally:
# Create forwarder via UAPI
curl -s -X GET \
"https://yourdomain.com:2083/execute/Email/add_forwarder?domain=yourdomain.com&email=support&fwdopt=fwd&fwdemail=support@gmail.com" \
-u "username:APITOKEN"
Expected output
{
"status": 1,
"messages": ["Forwarder added: support"@yourdomain".com -> support"@gmail".com"]
}
DNS Zone Editor
The Zone Editor lets you manage DNS records for your domains. This controls where traffic goes when someone types your domain.
Common DNS Record Types
| Type | Purpose | Example |
|---|---|---|
| A | Points domain to an IPv4 address | @ → 192.0.2.10 |
| AAAA | Points domain to an IPv6 address | @ → 2001:db8::1 |
| CNAME | Aliases one domain to another | www → yourdomain.com |
| MX | Mail server routing | @ → mail.yourdomain.com (priority 10) |
| TXT | Verification and SPF records | @ → "v=spf1 include:spf.yourdomain.com ~all" |
Add an A Record via API
curl -s -X GET \
"https://yourdomain.com:2083/execute/DNS/add_zone_record?domain=yourdomain.com&type=A&name=blog&address=203.0.113.25&ttl=14400" \
-u "username:APITOKEN"
Expected behavior
Before: blog.yourdomain.com → NXDOMAIN (not found)
After: blog.yourdomain.com → 203.0.113.25 (A record, TTL 4 hours)
Propagation time: 5 minutes to 24 hours depending on TTL
SSL Certificates
cPanel includes AutoSSL, which automatically installs free SSL certificates from Let's Encrypt or cPanel's in-house certificate authority.
Enable AutoSSL
# Check AutoSSL status via WHM API
curl -s -X GET \
"https://yourhostname:2087/json-api/list_autossl_accounts?api.version=1" \
-u "root:ROOTAPITOKEN"
AutoSSL works silently in the background. It:
- Verifies domain ownership via HTTP challenge
- Issues a 90-day certificate
- Installs it for the domain
- Auto-renews at 30 days before expiry
Manual SSL Installation
For non-AutoSSL certificates (paid EV certificates or wildcard certs):
# Install SSL via UAPI
curl -s -X GET \
"https://yourdomain.com:2083/execute/SSL/install_ssl?domain=yourdomain.com&cert=-----BEGIN%20CERTIFICATE-----%0A...&key=-----BEGIN%20PRIVATE%20KEY-----%0A..." \
-u "username:APITOKEN"
Expected output
curl -I https://yourdomain.com
# HTTP/2 200
# strict-transport-security: max-age=31536000
SSL certificates are critical for security — the same principle applies to CDN-terminated TLS and AWS Load Balancer SSL offloading.
Database Administration
Create a MySQL Database and User
# Create database
curl -s -X GET \
"https://yourdomain.com:2083/execute/Mysql/create_database?name=yourdomain_blog" \
-u "username:APITOKEN"
# Create user with password
curl -s -X GET \
"https://yourdomain.com:2083/execute/Mysql/create_user?name=yourdomain_bloguser&password=Str0ngDBPass!" \
-u "username:APITOKEN"
# Assign user to database with all privileges
curl -s -X GET \
"https://yourdomain.com:2083/execute/Mysql/set_privileges_on_database?user=yourdomain_bloguser&database=yourdomain_blog&privileges=ALL%20PRIVILEGES" \
-u "username:APITOKEN"
phpMyAdmin Quick Tasks
Through the phpMyAdmin interface, common operations include:
- Export — download a
.sqldump of your database for migration or backup - Import — restore a
.sqlfile into an existing database - Run SQL — execute custom queries like
SELECT * FROM users WHERE email LIKE '%@example.com' - Repair — fix corrupted tables with
REPAIR TABLE wp_posts;
Expected output
-- After successful table repair
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdomain.wp_posts | repair | status | OK |
+------------------+--------+----------+----------+
Backups
cPanel provides multiple backup mechanisms:
| Backup Type | Location | Frequency | Retention |
|---|---|---|---|
| Full cPanel Backup | Home directory | Manual | Until deleted |
| Partial Backups | Download to PC | Manual | N/A |
| Remote Backups | FTP/S3 destination | Automated | Configurable |
Configure Remote Backup
# Set up a remote backup destination via UAPI
curl -s -X GET \
"https://yourdomain.com:2083/execute/Backup/add_ftp_destination?host=s3.amazonaws.com&port=21&user=backupuser&pass=BackupPass123&remote_dir=/cpanel-backups/" \
-u "username:APITOKEN"
Expected behavior
Daily backup runs at 02:00 server time
Compressed archive: backup-yourdomain-2026-06-20.tar.gz
Size: ~250 MB (compressed from 1.2 GB)
Uploaded via FTP to backup destination
Email notification sent to admin@yourdomain.com
Common Errors
1. "Your session has expired" When Logging In
cPanel sessions timeout after a configured period. Clear your browser cache and cookies, then re-login. For persistent issues, check the session.max_lifetime setting in WHM.
2. Email Sending Fails / Emails Go to Spam
Your domain lacks SPF, DKIM, or DMARC records. In cPanel's Zone Editor, ensure the following TXT records exist:
v=spf1 include:yourdomain.com ~all
v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb...
_dmarc TXT "v=DMARC1; p=none; rua=mailto:admin@yourdomain.com"
3. "Disk Quota Exceeded" Warning
Your account has used all allocated disk space. Check Disk Usage in cPanel to find large files. Common culprits: old backups in the backups/ directory, error logs, email attachments, and cached WordPress plugins.
4. Database Connection Errors in WordPress
The wp-config.php file has wrong database credentials. Verify DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST match what cPanel shows in MySQL Databases. The host is usually localhost.
5. AutoSSL Fails to Validate
AutoSSL could not prove domain ownership. Ensure the domain's A record points to your server's IP address and that no firewall blocks port 80 for the ACME challenge. Check /etc/letsencrypt/ logs in WHM.
6. File Manager Shows "500 Internal Server Error"
A corrupted .htaccess file in the public_html directory causes this. Use FTP to rename .htaccess to .htaccess.bak, then access File Manager again. Regenerate the file from your application.
7. "Resource Limit Is Reached" (503 Error)
Your account exceeded CPU or memory limits — common on shared hosting during traffic spikes. Optimize database queries, enable caching (CDN), and consider upgrading to a VPS plan.
Practice Questions
1. What is the difference between AutoSSL and a manually installed SSL certificate?
AutoSSL is free, automated, and renews automatically but only provides domain validation (DV) certificates. Manual installation supports organization validation (OV) and extended validation (EV) certificates but requires renewal every 1-2 years.
2. How do you create an email forwarder in cPanel?
Go to Email → Forwarders → Add Forwarder. Enter the email address to forward and the destination address. All incoming mail is redirected without being stored on the server.
3. What is the purpose of an SPF record in DNS?
An SPF (Sender Policy Framework) TXT record lists which servers are authorized to send email for your domain. It prevents spammers from forging your domain in the "From" field.
4. How do you restore a single file from a full cPanel backup?
A full cPanel backup is a .tar.gz archive. Download it via Backups → Download a Full cPanel Backup. Extract it locally with tar -xzf backup.tar.gz, find the file under homedir/public_html/, then upload it via File Manager.
5. Challenge: Migrate a WordPress site to a new cPanel account
Use the following process: (a) Export the MySQL database via phpMyAdmin as a .sql file. (b) Download the entire public_html/ via File Manager as a zip. (c) Upload the zip to the new server and extract it. (d) Create a new MySQL database and user in the new cPanel. (e) Import the .sql file into the new database. (f) Update wp-config.php with new database credentials. (g) Update the site URL in the wp_options table via phpMyAdmin.
Mini Project: Full cPanel Account Setup
Configure a complete cPanel hosting environment for a business website:
- Log into cPanel and browse the main sections to understand your layout
- Create three email accounts:
info@,sales@, andsupport@with 500 MB quotas each - Add a new domain (addon domain) through Domains → Create a New Domain
- Set up an A record pointing a subdomain
blog.yourdomain.comto your server IP - Enable AutoSSL and verify the certificate is active
- Create a MySQL database named
yourdomain_cmswith a dedicated user - Import a sample database schema via phpMyAdmin
- Configure daily remote backups to an FTP destination
- Set up email forwarders:
support@→ your personal email
Test each component:
# Verify DNS resolution
dig blog.yourdomain.com +short
# Expected: your server IP
# Verify SSL
curl -I https://yourdomain.com | grep -i strict-transport-security
# Expected: strict-transport-security: max-age=31536000
# Test email delivery
echo "Test email from cPanel" | mail -s "cPanel Test" info@yourdomain.com
# Check info@yourdomain.com inbox in webmail
This setup is similar to how DodaTech manages Doda Browser support mailboxes and Durga Antivirus Pro update distribution servers.
FAQ
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro