Skip to content

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

ModeUse when
CoexistVloud 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-serverVloud 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 MigrationNew migration. Pick the source host + auth method. Each step shows live progress; failures pause the orchestrator so you can fix and resume.

  1. Discover — list accounts on the cPanel box, sizes, domain counts. Pick which to import.
  2. User + filesystem — create the Linux user on Vloud, rsync public_html/ over SSH.
  3. MySQL — dump each database via mysqldump over SSH, re-create + restore on Vloud’s MySQL.
  4. 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.
  5. DNS — pull each zone, rewrite to Vloud’s BIND format, queue for activation post-cutover.
  6. SSL — re-issue Let’s Encrypt for each domain (or import existing certs if you prefer).
  7. 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 .htaccess rules that rely on Apache modules nginx doesn’t have (mod_rewrite mostly 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.