cPanel migration
Pull existing accounts (users, domains, MySQL, mailboxes, DNS, files) from a WHM/cPanel server into Vloud — one account at a time or in bulk.
If you’re moving customers off cPanel onto Vloud, the engine ships a migration orchestrator that pulls accounts over SSH + WHM API. The migration is lossless for the data Vloud knows how to map: Linux user, public_html files, MySQL databases, mailboxes with password hashes preserved, DNS zones.
Two modes
| Mode | Use when |
|---|---|
| Coexist | Vloud is installed on the same server as cPanel. The bootstrap auto-detected it and set VLOUD_COEXIST=1. Migrate one account at a time as customers cut over. |
| Cross-server | Vloud is on a separate host. SSH into the cPanel box to pull accounts. The cPanel box stays untouched until you finish + verify. |
Pre-requisites
- cPanel API access — either WHM root token or a reseller account’s API token with sufficient privilege.
- SSH access to the cPanel box — for file copy + reading shadow hashes from
/home/<user>/etc/<domain>/shadow. - Disk space on the Vloud host — at minimum the total size of the accounts you’re importing.
- DNS plan — you’ll cut DNS over to point at the Vloud host after the migration verifies. Plan your TTL drops.
The 7-step orchestrator
Dashboard → cPanel Migration → New migration. Pick the source host + auth method. Each step shows live progress; failures pause the orchestrator so you can fix and resume.
- Discover — list accounts on the cPanel box, sizes, domain counts. Pick which to import.
- User + filesystem — create the Linux user on Vloud, rsync
public_html/over SSH. - MySQL — dump each database via
mysqldumpover SSH, re-create + restore on Vloud’s MySQL. - Mail — read shadow password hashes (
$6$/$5$/$2y$→{SHA512-CRYPT}/{SHA256-CRYPT}/{BLF-CRYPT}), recreate Dovecot mailboxes with the same passwords (no reset needed). Falls back to reset-token + CSV when the hash uses an unsupported scheme ($1$/ yescrypt) or SSH access is denied. - DNS — pull each zone, rewrite to Vloud’s BIND format, queue for activation post-cutover.
- SSL — re-issue Let’s Encrypt for each domain (or import existing certs if you prefer).
- Verify — Vloud self-curls each migrated domain and confirms the content matches the source. Mismatches surface with a diff.
Cutting over DNS
After step 7 succeeds, drop your TTLs at the registrar (do this before the migration if you can — gives propagation a head start), then flip the A records to the Vloud host. Watch for stragglers in nginx access logs for 24h.
What doesn’t migrate automatically
- Custom Apache
.htaccessrules that rely on Apache modules nginx doesn’t have (mod_rewritemostly works; mod_security rules need translating). - cPanel-specific cron entries — Vloud reads them but you’ll need to confirm the paths still make sense.
- WHM reseller branding — re-set on Vloud’s white-label surface.
- Bandwidth quota history — Vloud starts each account at zero usage.
Rollback
If something goes wrong post-cutover (DNS still pointing at Vloud but customer reports a problem), flip DNS back to the cPanel host — it’s untouched, so the original accounts still serve. Then debug on the Vloud side without time pressure.
Quotas + capacity
Each imported account counts against max_linux_users in your license. Each running app counts against max_instances. Migrate within your tier’s capacity, or upgrade first — Dashboard → Settings → License.
Bulk migration via CLI
For very large estates, the dashboard’s per-account flow is slow. The orchestrator’s API surface accepts bulk lists; contact us for the migration-batch CLI.