Move a cPanel site to BrewInTH with one full-backup file

Moving a PHP site off cPanel? Hand its full backup (.tar.gz) to BrewInTH, which picks out the site and database. Plus how to test and a moving-day order.
Your shop's or company's website has lived on a cPanel host for years. The files sit in public_html, the database in phpMyAdmin, the mail on the same account. When it is time to leave, the job looks endless: download folder after folder, export the database, then edit config files by hand.
On BrewInTH you can start from one file: the cPanel full backup (.tar.gz). Hand the whole file to the Upload & go live page and the platform picks out the site and its database by itself. This guide walks through it step by step: what comes along, what you set up again, how to check everything before you touch the domain, and what to do on moving day.
In short
📦 Download a full backup from cPanel and hand the whole file to Upload & go live (up to 1 GB)
🧙public_htmlbecomes the site, the files in themysqlfolder go into a database, and the database settings in your PHP files are adjusted
✉️ Mail, DNS and cPanel cron jobs do not come along; you set them up again on BrewInTH
🧪 Test on the BrewInTH link first; your domain keeps pointing at the old site until you change it
🔁 On moving day, send the newest backup to the same project and bring the new data in
What a cPanel full backup is
cPanel can pack a whole account into a single .tar.gz file. Inside is everything in the account's home folder, including public_html (the website itself), the MySQL databases, the mail and the account's settings.
Since mid-October 2026, BrewInTH's Upload & go live page takes this file as it is. You don't unpack it or pick folders: the platform knows the layout of a cPanel backup and takes out the parts that make the site. The page is still in BETA, so if you get stuck, press Talk to the team.
What the platform takes, and what stays behind

Goes online
public_htmlbecomes the site's files.- The
.sqlfiles in themysqlfolder are imported into a MySQL database the platform creates. They all go into the project's one database, in the order the summary lists. .htaccess: simple RewriteRule lines become routes of the site. Sending every address toindex.phpand forcing https or www are things the platform does anyway.
Adjusted for you
- Database settings written into PHP files, such as
define('DB_HOST', 'localhost')or$dbname = 'shop_db', now read BrewInTH's values first and keep the old value as a fallback. Your own copy of the files is not changed. - Old Thai text: a
.sqlfile in TIS-620 is converted to utf8mb4 before import. - The host's junk, such as
error_log, thecgi-binfolder and.logfiles, is left out.
Not carried over
- Mail and mailboxes. The mail folders are skipped, not stored, and not counted against the size limit. The summary says how many messages were skipped.
- The domain's DNS and cPanel's own settings, cron jobs included.
- Sites outside
public_html, such as an addon domain with a folder of its own next topublic_html.
The backup file itself is not kept on BrewInTH: the platform reads it, keeps the site and the database it took out, and deletes the rest.
Before you start: three checks
- Size. The
.tar.gzmay be up to 1 GB. Once unpacked, the site's files and database files together may be up to 512 MB and 50,000 files; the mail and logs that are skipped don't count. cPanel's Disk Usage page gives you a rough idea. If a lot of mail pushes the backup over 1 GB, use route B below. - Package. Package storage counts uploaded files, files on persistent storage and the data in your databases, across all projects. The Free package has 20 MB and cannot use your own domain, so most real sites moving from cPanel start on Starter (฿99/month, 200 MB) or Maker (฿1,499/year, 1 GB), at the prices on the plans page at the time of writing. All packages are compared in Which BrewInTH plan should you choose?
- Kind of site. This route fits PHP sites with MySQL in
public_htmlbest. For WordPress, follow the WordPress-specific steps in Move a WordPress site to BrewInTH.
Moving a cPanel site, step by step

1. Make a full backup in cPanel
Log in to your old host's cPanel. Under Files, open Backup and press Download a Full Account Backup. On the Generate a Full Backup page, set Backup Destination to Home Directory, enter an email address to be told when it's done, and press Generate Backup.
It takes from a few minutes to an hour or so, depending on the account's size. Menu names can differ slightly between hosts and languages. If the button isn't there, your host has switched it off: ask their support for the file, or use route B.
2. Download the file
Back on the same page, the finished file appears under Backups Available for Download. Its name starts with backup- and ends with .tar.gz. Download it and keep it: it is a copy of your whole old account, worth keeping even after the move.
3. Create a project on Upload & go live
In the BrewInTH console, open Upload & go live. Under 1. Choose the project, press Create a new project (name and address) and give it a name and a web address. You don't pick a technology or a database; the platform reads them from the files.
4. Hand over the .tar.gz
Under 2. Hand over the site's files, stay on the ZIP file tab (it takes ZIP and .tar.gz files alike), drop the file in and press Release into followed by your project's name. A big file takes as long as your connection needs, so keep the page open meanwhile.
5. Read "What the platform did"
Once the file is in, the page shows the progress and a section called What the platform did, which lists everything the platform handled. Look for these lines:
- This is a cPanel account backup, saying the site comes from
homedir/public_htmland naming the database files - Project found in folder public_html/, meaning the platform found your home page where it should be
- A mysql database is created and Import … the whole file, once the database is ready
- The name of your PHP config file, followed by database settings now read from the platform environment
If Project found in folder public_html/ is missing, or the status says it failed, hand the files over again to the same project using route B. When the status turns Live, the page also offers Open the Domains tab; you'll need it later, not yet.
Test on the BrewInTH link before touching the domain
Your new site now lives at its BrewInTH address while your real domain still points at the old host, so customers keep using the old site as usual. Use this time to check everything:
- Open every important page and check that pictures and Thai text show correctly.
- Log in to the site's admin area with your existing account and check the data is all there.
- Send a form and try uploading a picture through the site.
- Links written with the old domain's full address still lead to the old site while you test. That's expected and goes away once the domain moves.
Problems older PHP sites often run into:
- A blank page or error 500. Open the project's Logs tab to read PHP's error message. BrewInTH runs PHP 8.4 at the time of writing, so code that still calls
mysql_connect(), which PHP 7 and later no longer have, must move tomysqlior PDO. - The site cannot reach its database, and there is no "database settings now read from the platform environment" line. Your config file is written in a way the platform doesn't recognise. The values to use are in the project's App settings tab; have an AI make the change with the prompt below.
- The contact form sends no mail. PHP's
mail()on BrewInTH sends through the project's mailbox, so connect your domain, create a mailbox such asnoreply@, and press Use in the app on the Email tab first. - Uploading a picture through the site fails. If the summary has no "The app keeps data in files" line, the platform didn't see the folder your site writes into. See persistent storage (/bw-data) for the fix.
Unpack the backup on your computer (the site is in homedir/public_html), give the files in that folder to your chat AI or open it in your coding agent, and ask:
This PHP site moved from a cPanel host to BrewInTH (PHP 8.4 and MySQL).
1. Find the file that sets up the database connection and make it read the values from the environment with getenv():
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD
2. Find code using mysql_* functions or other functions PHP 8 no longer has, and move it to mysqli or PDO.
3. Do not change the structure of any database table.
4. Tell me file by file what you changed, and send back each changed file in full.
Once the files in the folder are fixed, hand the new set to the same project using route B.
Route B: a ZIP of public_html with the .sql inside
Use this route when the backup is over 1 GB, your host has no full-backup button, the account holds several sites and databases, the line Project found in folder public_html/ doesn't show, or your old host uses another control panel such as DirectAdmin or Plesk (only cPanel backups are picked apart).
- Open phpMyAdmin on the old host, choose this site's database and press Export to get a
.sqlfile. If you get a.sql.gz, unpack it to.sqlfirst: only files ending in.sqlare imported. - Compress
public_htmlwith the Compress button in File Manager and download it, or fetch the folder over FTP. - On your own computer, put the
.sqlfile inside thepublic_htmlfolder, then zip the whole folder (up to 256 MB). Don't put the.sqlintopublic_htmlon the old host: anyone could download it from the site. - Hand the ZIP over on Upload & go live in that site's project. For several sites, repeat this one site at a time, one project per site.
Moving day

While you were testing, the old site may have taken new orders, members or posts. Before you switch the domain, bring the latest data across in this order:
- Pause new data on the old site for a while, if your site takes data all the time.
- Make a fresh full backup and hand it over on Upload & go live, choosing the same project under step 1. The button now says Update with the project's name; the address and the database stay.
- Bring the new data in. The platform never overwrites a database that holds data by itself. Instead, a SQL statements not run yet card appears on the result page and on the Databases tab: press Import this file in place of the database (backup first), then Confirm. The current database is always backed up first. If the card has no such button, talk to the team before pressing anything else.
- Connect your domain on the Domains tab. The order of DNS changes that keeps the site up is in Move your website from another host to BrewInTH, step by step. Using your own domain needs a paid package.
- Set up mail and schedules. Create mailboxes on the Email tab once the domain is connected (email on your own domain), and recreate your old cron jobs on the Schedules tab (scheduled jobs). Commands that name the old host's paths, such as
/home/youraccount/public_html/, need changing. - Keep the old host for a while, until the new site has settled. If your domain's nameservers point at the old host, all its DNS lives there: move the DNS to your domain registrar or to Cloudflare before cancelling the host, or both the site and the mail on that domain will stop working.
FAQ
Will a 900 MB backup take 900 MB of my package?
No. The platform reads the file and deletes it, keeping only the site and the database it took out. The mail and logs inside are not stored. What counts is the site's files, files on persistent storage and the data in the database.
Does my old cPanel mail come along?
Not by itself. After connecting the domain, create mailboxes with the same names on the Email tab, then open the old and new mailboxes side by side in a mail program that uses IMAP, such as Thunderbird or Outlook, and drag the messages across. Each package limits the number and size of mailboxes (Starter: 3 mailboxes of 100 MB each), so if the old mail runs to several GB, move only what you need.
My cPanel account holds several sites. What now?
A full backup brings up one site, the one in public_html, and the .sql files in the mysql folder all go into that project's one database. If the account holds several sites with their own databases, use route B one site at a time. How many projects you can have depends on your package.
If I send a newer backup again, is the data on my site overwritten?
Not by itself. Once the site is live, sending files again updates the site's files; in the database, only tables that don't exist yet are created and existing data is left alone. To have the file's data replace what's there, you press Import this file in place of the database (backup first) yourself.
How do I edit the site after the move?
Hand a new ZIP to the same project, or use SFTP with FileZilla much as you did on cPanel (how to use SFTP).
Summary
Moving a site from cPanel to BrewInTH can start from one full-backup file. The platform takes out public_html and the database, adjusts the database settings in your PHP files, and lists everything it did under What the platform did. Your part is to test on the BrewInTH link, bring the latest data across on moving day, set up mail and schedules again, and only then switch the domain, keeping the old host until everything has settled.
