Your client just told you that their cPanel host is raising prices next month, and the website must be live on TrueCore by the end of the week. They can't afford a long outage because orders are coming in every minute. The challenge is simple: pull a full backup from cPanel, get it onto TrueCore, and point the domain over with almost no downtime.
Below is the process we use for every migration. It follows the same straightforward philosophy described in our post about why we built our own control panel, and it mirrors the WordPress migration guide that showed how easy a zero-downtime move can be.
Before You Begin
Gather these items first:
- cPanel username, password, and SSH or SFTP access.
- TrueCore account credentials (you'll need SSH access to the node that matches your plan:
ember.truecorehosting.comfor Ember, Blaze, Inferno;). - Access to the domain registrar so you can change nameservers or edit A records.
- A local copy of the domain's current TTL (the default from the registrar is usually 3600 seconds; we'll lower it to 300 seconds before the final switch).
- Rough estimate of site size: number of files, total upload size, and database size. This will drive the time estimate.
Give yourself 30 minutes for a small site on the Flameling plan, up to two hours for a large media-rich site on Inferno. TrueCore's backup interval (daily for Flameling, 30-minute for Inferno) does not affect the migration itself, but it shows the level of data protection you'll get after the move.
Step 1: Export Files and Databases from cPanel
1.1. Download the Website Files
Log in to cPanel and open File Manager. Select the public_html directory, click Compress, choose ZIP, and start the archive. When it finishes, download the ZIP file via the browser or via SFTP:
sftp user@oldhost.com
cd public_html
get -r . /local/path/public_html.zip
If the site uses a custom document root, adjust the path accordingly.
1.2. Export the Database
cPanel's phpMyAdmin is the simplest way. Open the database, click Export, choose the Quick method, and download the .sql file. For larger databases you can also use the command line:
mysqldump -u dbuser -p dbname > /local/path/dbname.sql
1.3. Record Email Accounts
Make a quick list of any email addresses you need to recreate on TrueCore. Purelymail, our mail backend, will accept new mailboxes via the panel; there is no automatic import.
Step 2: Prepare Your TrueCore Account
2.1. Choose the Right Plan
| Plan | Sites | Storage | DB | Backup interval | |-----------|-------|---------|---------|-----------------| | Flameling | 1 | 4 GB | SQLite | Daily (24 h) | | Ember | 3 | 40 GB | PostgreSQL 16 | 12-hourly | | Blaze | 10 | 60 GB | PostgreSQL 16 | 6-hourly | | Inferno | 20 | 200 GB | PostgreSQL 16 | 30-min |
If the site uses MySQL or MariaDB, you'll need to move to PostgreSQL 16. TrueCore provides a one-click Adminer installer for database work, and the site db create command can set up a fresh instance.
2.2. Create the Site in the Panel
Log into the TrueCore customer portal, click Add Site, and enter the domain name. The panel will:
- Reserve a pod-nginx process for the domain.
- Generate an empty web root at
~/sites/yourdomain.com. - Create a PostgreSQL database (for Ember and above) and show the connection string.
The site appears in the Status tab within a minute.
2.3. Install the Required Application
If you are moving a WordPress site, use the WordPress one-click installer. It pulls the latest WordPress, adds the SQLite integration plugin, and configures wp-config.php. For other PHP applications, simply upload the files and create an .htaccess equivalent in nginx (the panel offers a Custom Nginx field for simple rewrites).
Step 3: Transfer Files and Database
3.1. Upload the Website Archive
From your workstation, push the ZIP file to the TrueCore node:
scp /local/path/public_html.zip user@ember.truecorehosting.com:~/sites/yourdomain.com/
When the upload finishes, SSH into the node and unpack:
ssh user@ember.truecorehosting.com
cd ~/sites/yourdomain.com
unzip public_html.zip
rm public_html.zip
The files now sit in the correct location. Permissions are automatically set by the flame-bubble isolation layer.
3.2. Import the Database
For MySQL → PostgreSQL conversion, use Adminer in the panel:
- Open the Adminer link for your site.
- Choose PostgreSQL as the target.
- Click Import and select the
.sqlfile you exported.
Adminer will translate most statements automatically. Small sites typically finish in under five minutes. Large sites may need a manual tweak of indexes; the panel's Logs tab will show any errors.
If you prefer the command line, create a new PostgreSQL database and pipe the dump through pgloader:
pgloader mysql://dbuser:dbpass@oldhost.com/dbname postgresql://user:pass@localhost/newdb
pgloader is pre-installed on all TrueCore nodes.
3.3. Add Email Accounts
In the Email tab, click Add Mailbox, enter the address and password, and repeat for each account you listed. Purelymail handles SPF and DKIM automatically once the DNS records are in place.
Step 4: Test the Site Before DNS Switch
Edit your local hosts file to point the domain at the TrueCore node's IP. The node IP for the ember fleet is currently 159.195.31.27; you can confirm it in the Status tab.
159.195.31.27 yourdomain.com
Visit the site in a private browser window. Check:
- Page load and asset paths.
- Database-driven features (forms, shopping cart, admin panels).
- Email sending (use a test form).
If something looks wrong, you still have the old cPanel site live as a safety net.
Step 5: Reduce TTL and Switch Nameservers
5.1. Lower the TTL
Log into your current DNS provider and set the TTL for all records to 300 seconds (5 minutes). This step must happen at least two hours before the final cutover so that cached records expire quickly.
5.2. Change Nameservers
In the registrar dashboard, replace the existing nameservers with TrueCore's authoritative set:
ember.truecorehosting.comlitespeed.truecorehosting.comspark.truecorehosting.com
Propagation usually settles within 1-2 hours thanks to the low TTL, but give it up to 4 hours before declaring the move complete.
Step 6: Verify SSL and Clean Up
TrueCore's flame-dnsd daemon sees the new DNS immediately. As soon as the domain resolves to our servers, an automatic SSL request is sent to Let's Encrypt. Within a few minutes the lock icon appears in the Status tab.
After confirming the site works over HTTPS:
- Delete the old cPanel account to stop further charges.
- Remove any temporary
hostsentry you added. - If you used a fallback plan (Flameling) and need more storage, consider upgrading to Ember or Blaze; the upgrade process is a single click in the panel.
What We Do For You
TrueCore's support team will:
- Walk you through each step via email or ticket.
- Verify the database conversion if you choose PostgreSQL.
- Set up the low-TTL DNS change and monitor the propagation.
- Ensure the SSL certificate is active and renews automatically.
- Provide a post-migration checklist so you never miss a setting.
We keep the process transparent and honest. If a step takes longer than expected—say the database conversion on Inferno exceeds the two-hour window—we'll let you know immediately and suggest a safe fallback.
By following these steps you can move off a legacy cPanel host with under ten minutes of real downtime, regardless of the plan size. The same disciplined approach that led us to replace cPanel with our own lightweight panel now helps you keep your site live and your customers happy.