On this page
Seamless Migration Blueprint: Moving From cPanel to DirectAdmin, CyberPanel, CloudPanel, or aaPanel Without Downtime
If you’re running a hosting business or managing a VPS with cPanel, you’ve likely felt the pinch of rising license costs. Switching to a free or low‑cost control panel such as DirectAdmin, CyberPanel, CloudPanel, or aaPanel can save money while still offering a robust feature set. The biggest fear, however, is downtime during the move. This guide walks you through a proven, step‑by‑step process that keeps your sites live while you migrate data, reconfigure services, and verify everything works—all without taking your customers offline.
Why Consider Leaving cPanel?
cPanel remains popular, but its per‑account licensing model can become expensive at scale. Alternatives provide:
- Lower or zero licensing fees – DirectAdmin has a low monthly cost; CyberPanel, CloudPanel, and aaPanel are free/open‑source.
- Modern technology stacks – Many alternatives ship with LiteSpeed, OpenLiteSpeed, or Nginx by default, offering better performance out of the box.
- Simpler resource footprint – Lighter on RAM/CPU, leaving more headroom for your applications.
- API‑first design – Easier automation for provisioning and billing systems.
Before you start, make sure the target panel supports the features you need (e.g., SSL automation, DNS clustering, reseller accounts). The comparison table below highlights key points.
Comparison: cPanel vs. DirectAdmin vs. CyberPanel vs. CloudPanel vs. aaPanel
| Feature / Panel | cPanel | DirectAdmin | CyberPanel | CloudPanel | aaPanel |
|---|---|---|---|---|---|
| License Cost (per server) | $20+/mo | $2‑$5/mo | Free (OpenLiteSpeed) / $10/mo (Enterprise) | Free | Free |
| Web Server Options | Apache (optional Nginx) | Apache/Nginx | OpenLiteSpeed (LS cache) | Nginx | Nginx/Apache |
| DNS Management | Built‑in | Built‑in | Built‑in (PowerDNS optional) | Built‑in | Built‑in |
| Email (IMAP/POP3/SMTP) | Dovecot/Exim | Dovecot/Exim | Dovecot/Postfix | Dovecot/Postfix | Dovecot/Postfix |
| File Manager | Yes | Yes | Yes | Yes | Yes |
| SSL Automation (Let’s Encrypt) | Via AutoSSL | Via plugin | Built‑in | Built‑in | Built‑in |
| Multi‑PHP Support | Yes | Yes | Yes | Yes | Yes |
| Reseller / White‑label | Yes | Yes (limited) | Yes (via CyberPanel Cloud) | Yes | Yes |
| Resource Usage (idle) | ~500 MB RAM | ~200 MB RAM | ~150 MB RAM | ~180 MB RAM | ~170 MB RAM |
| Learning Curve | Moderate | Low‑moderate | Low (if using LiteSpeed) | Low | Low |
Numbers are approximate and vary with installed plugins.
Pre‑Migration Checklist
A smooth migration starts long before you touch the first file. Follow this checklist to avoid surprises.
-
Inventory All Accounts
Export a list of cPanel users, domains, subdomains, addon domains, parked domains, and email accounts. You can use the WHM API:Bash # List all accounts whmapi1 listaccts | grep userSave the output to a CSV for reference.
-
Document Custom Configurations
Note any custom Apache includes, PHP version overrides, custom cron jobs, or custom firewall rules (CSF/iptables). These will need to be recreated on the target panel. -
Check Disk Space
Ensure the target server has at least 1.5× the current used space to accommodate temporary archives during transfer. -
Backup Current State
Take a full snapshot or VPS snapshot before you begin. If something goes wrong, you can roll back instantly. -
Plan a Maintenance Window (Optional)
While the goal is zero downtime, a brief DNS TTL reduction (to 300 seconds) helps propagate changes quickly. Reduce TTL at least 24 h before migration. -
Verify Target Panel Compatibility
Confirm that the target panel supports the PHP versions, MySQL/MariaDB versions, and any required extensions (e.g., IonCube, Imagick) used by your sites.
Exporting Data from cPanel
You’ll need to extract three major data types: website files, databases, and email accounts. The process below uses command‑line tools available on any cPanel server.
1. Website Files (public_html)
For each account, create a compressed tarball of the home directory:
# Replace USERNAME with the actual cPanel username
cd /home
tar -czvf /mnt/backup/USERNAME_home.tar.gz USERNAME
Store the tarballs on a separate backup mount or remote storage (e.g., NFS, S3) to free up local space.
2. Databases
cPanel stores MySQL/MariaDB data under /var/lib/mysql. Use mysqldump per database:
# Get list of databases for a user
mysql -u root -p -e "SHOW DATABASES LIKE 'USERNAME_%';" | tail -n +2 > /mnt/backup/USERNAME_dbs.txt
# Dump each database
while read db; do
mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" "$db" > /mnt/backup/"$db".sql
done < /mnt/backup/USERNAME_dbs.txt
Compress the SQL files:
gzip /mnt/backup/*.sql
3. Email Accounts
Email is stored in /home/USERNAME/mail. Archive each mail directory:
tar -czvf /mnt/backup/USERNAME_mail.tar.gz -C /home/USERNAME mail
If you use dovecot with maildir format, this preserves folder structure and flags.
4. DNS Zone Files
Export DNS zones via WHM API:
whmapi1 dumpzone zone=example.com > /mnt/backup/example.com.zone
Do this for every domain you host.
Preparing the Target Panel
Choose one of the alternatives and perform a fresh installation on a new VPS or dedicated server. The steps differ slightly per panel; below are the essential commands for each.
DirectAdmin Installation (CentOS 7/8, AlmaLinux)
wget -O directadmin.sh https://www.directadmin.com/setup.sh
chmod +x directadmin.sh
./directadmin.sh
Follow the on‑screen prompts (client ID, license ID, hostname, etc.). After installation, log in to http://your_ip:2222 and complete the admin setup.
CyberPanel Installation (Ubuntu 20.04/22.04, CentOS 7)
sh <(curl https://install.cyberpanel.net || wget -O - https://install.cyberpanel.net)
Select option 1 (Install CyberPanel) and optionally enable the LiteSpeed Enterprise trial if desired.
CloudPanel Installation (Ubuntu 20.04/22.04, Debian 11)
curl -sS https://installer.cloudpanel.io/ce/v1/install.sh | sudo bash
Follow the prompts; the installer configures Nginx, PHP-FPM, and MariaDB.
aaPanel Installation (CentOS 7, Ubuntu 20.04)
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh
Or on Ubuntu/Debian:
wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh
After installation, secure the panel (change default port, enable SSL, create admin user).
Migrating Websites
Now that the target panel is ready, import the data you exported.
1. Restore Website Files
For each account, create a corresponding user in the target panel (most panels provide a CLI or API to create users). Example for DirectAdmin:
echo "username:password:email:domain.com:0:0" | /usr/local/directadmin/scripts/create_user.sh
Then extract the tarball into the new user’s home directory:
tar -xzvf /mnt/backup/USERNAME_home.tar.gz -C /home/NEWUSER
Adjust ownership:
chown -R NEWUSER:NEWUSER /home/NEWUSER
2. Import Databases
Create the database and user in the target panel (most panels have a “Create Database” wizard). Then import:
mysql -u NEWDBUSER -pNEWDBPASS NEWDBNAME < /mnt/backup/USERNAME_dbname.sql
If you gzipped the dump:
gunzip < /mnt/backup/USERNAME_dbname.sql.gz | mysql -u NEWDBUSER -pNEWDBPASS NEWDBNAME
3. Restore Email
Recreate email accounts via the panel’s UI or API, then copy the maildir:
tar -xzvf /mnt/backup/USERNAME_mail.tar.gz -C /home/NEWUSER
chown -R NEWUSER:NEWUSER /home/NEWUSER/mail
Ensure dovecot/permissions are correct; most panels fix this automatically on account creation.
4. Import DNS Zones
Create the domain in the target panel’s DNS manager, then replace the generated zone file with your exported zone:
cp /mnt/backup/example.com.zone /etc/named/zones/example.com.zone # path varies per panel
rndc reload # or systemctl restart named
If the panel uses PowerDNS or internal DNS, use its import feature (often via API or UI).
Panel Configuration & Tweaks
After data is in place, you need to align services with the new panel’s expectations.
PHP Version Management
- DirectAdmin: Uses PHP Selector (CloudLinux) or manual PHP-FPM pools. Set the desired version per domain via the UI.
- CyberPanel: Defaults to LiteSpeed PHP; change via Websites → Manage → PHP.
- CloudPanel: PHP-FPM pools are managed per site; switch version in the dashboard‑wise; select version per site.
- aaPanel: PHP Manager lets you install multiple versions and assign per site.
SSL Certificates
Most panels offer automatic Let’s Encrypt renewal. Trigger a manual issuance to confirm:
# DirectAdmin
/usr/local/directadmin/scripts/letsencrypt.sh request single example.com
# CyberPanel
cyberpanel issueSSL --domain example.com
# CloudPanel
cloudpanel ssl issue --domain example.com
# aaPanel
/opt/aapanel/script/ssl.sh -d example.com
Verify that HTTPS loads without warnings.
Mail Settings
Ensure outbound SMTP relay is configured (if you use an external relay). Update SPF/DKIM records in DNS accordingly. Test sending/receiving with a mail client.
Cron Jobs
cPanel stores user crontabs in /var/spool/cron/USERNAME. Copy them:
cp /var/spool/cron/USERNAME /var/spool/cron/NEWUSER
chown NEWUSER:NEWUSER /var/spool/cron/NEWUSER
Then reload cron:
systemctl restart crond # or crond.service depending on distro
Firewall & Security
If you used CSF or similar, reinstall it on the new server and import your allow/deny lists. Most panels have built‑in security tools (e.g., CyberPanel’s ModSecurity, CloudPanel’s fail2ban integration).
Post‑Migration Verification
Before pointing DNS to the new server, run a thorough verification suite.
1. File Integrity
Compare file counts and sizes:
# Source
find /home/USERNAME -type f | wc -l
# Destination
find /home/NEWUSER -type f | wc -l
Spot‑check a few random files with diff or md5sum.
2. Database Consistency
Run a simple row count on a few tables:
mysql -u NEWDBUSER -pNEWDBPASS -e "SELECT COUNT(*) FROM NEWDBNAME.wp_posts;"
Compare with the original count.
3. Email Functionality
Send a test message via webmail (Roundcube, Horde, or the panel’s built‑in client) and verify receipt. Also test SMTP authentication with swaks or telnet.
4. Website Loading
Temporarily modify your local /etc/hosts file to point the domain to the new server’s IP, then browse the site. Check:
- Page loads without errors.
- PHP info shows correct version.
- Admin panels (wp-admin, etc.) load and allow login.
- Image uploads, form submissions, and any cron‑driven features work.
5. DNS Propagation (Optional)
Lower TTL to 300 s, then change the domain’s A record to the new server’s IP. Monitor with dig +short example.com from multiple locations. Once propagated, monitor logs for any 5xx errors.
6. Resource Usage
Check CPU, RAM, and disk I/O under normal load. Ensure the new panel isn’t hitting limits unexpectedly.
If any issue appears, revert DNS to the old server, fix the problem, and repeat verification. Because you kept the original server running, you have a safety net.
Troubleshooting Common Issues
| Symptom | Likely Cause | Fix |
|---|---|---|
| 500 Internal Server Error after migration | PHP version mismatch or missing extensions | Adjust PHP selector; install missing extensions (e.g., php-imap, php-zip). |
| Email not delivering | Outbound port 25 blocked or incorrect SMTP auth | Verify firewall rules; update SMTP credentials in mail client. |
| Subdomains not resolving | DNS zone missing or incorrect NS records | Ensure zone file includes all subdomains; reload DNS service. |
| File permissions errors (403) | Wrong ownership on extracted files | Run chown -R user:user /home/user and find /home/user -type d -exec chmod 755 {} \; and -type f -exec chmod 644 {} \;. |
| Database connection fails | Wrong DB user/password or host | Update wp-config.php or equivalent with new credentials; ensure DB user has correct host (localhost vs 127.0.0.1). |
| SSL certificate mismatch | Domain not pointing to new server during issuance | Point domain temporarily, re‑issue SSL, then revert DNS after verification. |
Conclusion
Migrating from cPanel to a more cost‑effective control panel doesn’t have to mean downtime or lost data. By following the steps outlined—thorough pre‑migration checks, systematic export/import, careful panel configuration, and diligent verification—you can move your customers to DirectAdmin, CyberPanel, CloudPanel, or aaPanel with confidence. The process may seem involved at first, but once you’ve run it a few times, it becomes a repeatable, low‑risk operation that saves money and can even improve performance.
If you found this guide helpful, explore more hosting and sysadmin tutorials on mahbuburriad.com. Happy migrating!