Sunday, February 22nd 2026How to Migrate Your Joomla Site to a New Host (Without Breaking Anything)

How to Migrate Your Joomla Site to a New Host (Without Breaking Anything)

Migrating a Joomla site feels risky. You have a working website, and the idea of moving it to a different server—with the possibility of something breaking—is uncomfortable. But with the right process, Joomla migrations are routine and can be done with zero downtime for your visitors.

This guide walks through two methods: using Akeeba Backup (the recommended approach for most users) and manual migration (for developers who prefer full control). Both end with the same post-migration verification checklist.

If you'd rather not do this yourself, most managed Joomla hosts (including MaiaHost) offer free migration as part of signup.

Before you start: pre-migration checklist

Don't touch anything on the new server until you've completed these steps on your existing site.

1. Document your current environment

Log into Joomla admin → System → System Information and note:

  • Joomla version (e.g., 5.2.1)
  • PHP version (e.g., 8.2.15)
  • Database type and version (e.g., MariaDB 10.6.12)
  • PHP memory_limit, max_execution_time, upload_max_filesize

You'll need these to make sure your new host matches or exceeds your current configuration. See our Joomla hosting requirements guide for recommended values.

2. Make a full backup

Back up everything:

  • All files (Joomla core, extensions, templates, media, .htaccess, configuration.php)
  • The complete database

If you use Akeeba Backup, create a full site backup (JPA or ZIP format). If doing manual backup, export the database via phpMyAdmin and download all files via FTP/SFTP or File Manager.

Store the backup somewhere safe—your local computer, not just on the server you're leaving.

3. Check your new host's compatibility

Before migrating, confirm your new host provides the server requirements your Joomla version needs:

  • PHP 8.1+ (8.2 or 8.3 recommended for Joomla 5.x)
  • MySQL 8.0+ or MariaDB 10.4+
  • Adequate memory_limit (256 MB minimum)
  • OPcache enabled
  • mod_rewrite (Apache) or proper rewrite rules (Nginx)
  • SSL/TLS support

4. Note custom configurations

Check for anything non-standard that needs to be recreated on the new host:

  • Custom .htaccess rules (redirects, security rules, caching headers)
  • Cron jobs (Joomla scheduled tasks, extension-specific cron)
  • Email configuration (SMTP settings, SPF/DKIM/DMARC records)
  • Subdomain or addon domain configurations
  • Custom PHP settings in .user.ini or php.ini overrides

5. Lower your DNS TTL (optional but recommended)

If you manage your own DNS, lower the TTL (Time to Live) on your A record to 300 seconds (5 minutes) a day or two before migration. This means when you switch DNS to point to the new server, the change propagates faster. If you skip this, your old TTL value (often 3600 seconds or higher) determines how long some visitors still reach the old server.

Method 1: Using Akeeba Backup + Kickstart (recommended)

Akeeba Backup is the standard tool for Joomla migrations. It creates a single archive file containing your entire site (files + database) and a restoration script that rebuilds everything on the new server.

Step 1: Install Akeeba Backup (if not already installed)

Install Akeeba Backup from Joomla's extension directory or from Akeeba's website. The free version (Akeeba Backup Core) is sufficient for basic migrations.

Step 2: Create a full backup

Go to Components → Akeeba Backup → Backup Now. Use the "Default Backup Profile" unless you have a custom one configured. Let it complete—don't navigate away.

Download the backup file (.jpa or .zip) to your local computer.

Step 3: Download Akeeba Kickstart

Download Kickstart Core from Akeeba's website. This is a standalone PHP script that extracts your backup and runs the restoration wizard.

Step 4: Upload to the new server

Connect to your new hosting account via FTP/SFTP or cPanel File Manager. Upload two files to the document root (usually public_html):

  • Your backup archive file (.jpa or .zip)
  • kickstart.php

Step 5: Run Kickstart

Open your browser and navigate to http://your-new-server-ip/kickstart.php (or use a temporary URL if your host provides one). Kickstart will:

  1. Extract the backup archive
  2. Launch the Akeeba Backup Restoration Wizard

Step 6: Complete the restoration wizard

The wizard will ask for:

  • Database connection details for the new server (hostname, database name, username, password). Create these in cPanel → MySQL Databases beforehand.
  • Site URL — enter your domain name (even if DNS hasn't switched yet)

The wizard restores your database, updates configuration.php with the new paths and database credentials, and finishes with a cleanup step.

Step 7: Clean up

Delete kickstart.php and the backup archive from the new server. The restoration wizard should offer to do this automatically. Verify they're gone—leaving kickstart.php accessible is a security risk.

Method 2: Manual migration

If you prefer doing things by hand, or if Akeeba isn't an option (very large sites, custom deployment pipelines), here's the manual process.

Step 1: Export the database

On the old server, open phpMyAdmin (via cPanel) and export your Joomla database:

  • Select your Joomla database
  • Click Export
  • Choose Custom export method
  • Format: SQL
  • Check "Add DROP TABLE" (helps with clean imports)
  • Click Go and download the .sql file

Step 2: Download all files

Connect to the old server via FTP/SFTP (or use File Manager) and download everything in your Joomla directory—all files and folders, including hidden files like .htaccess.

For large sites, you can create a compressed archive on the server first:

cd /home/username/public_html
tar -czf /home/username/joomla-backup.tar.gz .

Then download the single archive file, which is faster than transferring thousands of individual files over FTP.

Step 3: Create the database on the new server

In your new host's cPanel:

  1. Go to MySQL Databases
  2. Create a new database
  3. Create a new database user with a strong password
  4. Add the user to the database with ALL PRIVILEGES

Step 4: Import the database

Open phpMyAdmin on the new server, select your new database, and import the .sql file you exported. For large databases (over 50 MB), phpMyAdmin's upload limit may be too low. In that case:

  • Ask your host to increase the import limit
  • Use the command line: mysql -u username -p database_name < backup.sql
  • Use Adminer or a similar lightweight database tool

Step 5: Upload files to the new server

Upload all Joomla files to the document root on the new server. If you created a .tar.gz archive, upload it and extract on the server:

cd /home/username/public_html
tar -xzf joomla-backup.tar.gz

Step 6: Update configuration.php

Edit configuration.php in the Joomla root directory on the new server. Update these values:

public $host = 'localhost';           // Usually 'localhost' on shared hosting
public $db = 'new_database_name';     // The database you created
public $user = 'new_database_user';   // The user you created
public $password = 'new_db_password'; // The password you set
public $tmp_path = '/home/newuser/public_html/tmp';
public $log_path = '/home/newuser/public_html/administrator/logs';

Make sure tmp_path and log_path reflect the actual filesystem paths on the new server.

Step 7: Set file permissions

Verify that file permissions are correct:

  • Directories: 755
  • Files: 644
  • configuration.php: 444 (read-only after setup)

If permissions are wrong, Joomla may show blank pages or permission errors.

Switching DNS (the actual cutover)

Once your Joomla site is fully restored and tested on the new server, it's time to point your domain to the new host.

Option A: Update nameservers

If your new host manages DNS, update your domain's nameservers at your registrar to point to the new host's nameservers. This is the simplest approach but gives the new host full DNS control.

Option B: Update the A record

If you manage DNS separately (e.g., through Cloudflare or your registrar's DNS panel), update the A record to point to the new server's IP address. This gives you more control and is the approach we recommend.

Propagation time

DNS changes propagate globally within minutes to 48 hours, depending on TTL values and ISP caching. During propagation, some visitors reach the old server and some reach the new one. This is why:

  • Keep the old server running until propagation completes (at least 48 hours)
  • Don't make content changes during this window (they'd only appear on one server)
  • If you lowered TTL beforehand, propagation is usually complete within an hour

Post-migration checklist

Don't declare victory until you've verified everything.

Functionality checks

  • Homepage loads — check visually and view page source for correct paths
  • Admin panel accessible — log into /administrator and verify it works
  • Navigation works — click through your main menu, check internal links
  • Forms submit — test contact forms, login forms, search
  • Media displays — images, PDFs, videos should all load from the new server
  • Extensions function — test your key extensions (eCommerce cart, community features, search, etc.)
  • SEF URLs work — navigate to a few pages using their clean URLs, not index.php?option=...
  • Search works — Joomla's Smart Search index may need rebuilding after migration

Technical checks

  • SSL certificate active — your site should load via HTTPS with a valid certificate. If using Cloudflare, verify the origin certificate is installed on the new server.
  • PHP version correct — check System → System Information to confirm the PHP version matches what you expect
  • No mixed content warnings — browser console shouldn't show HTTP resources loaded on HTTPS pages
  • Error log clean — check Joomla's error log and the server error log for new issues
  • Cron jobs recreated — if you had scheduled tasks on the old server, set them up on the new one
  • Email works — send a test email from Joomla (or a contact form) and confirm delivery. Check SPF/DKIM/DMARC DNS records if email deliverability was good before.

SEO checks

  • Canonical URLs correct — verify your site's canonical domain (www vs non-www, HTTP vs HTTPS) matches your preferred version
  • Robots.txt accessible — navigate to yourdomain.com/robots.txt
  • Sitemap accessible — check your XML sitemap URL and ensure it returns current data
  • Google Search Console — if your server IP changed, Google may temporarily show crawl errors. This is normal and resolves within a few days. If you changed your domain's DNS provider, re-verify site ownership.
  • 301 redirects intact — if you had custom redirects in .htaccess or Joomla's Redirect component, verify they still work

Performance check

After migration, run a quick speed test from a tool like PageSpeed Insights or GTmetrix. Compare TTFB (Time to First Byte) against your old host. If TTFB is significantly worse, something in the server configuration needs attention—likely caching, OPcache, or database settings.

Common migration problems (and fixes)

White screen after migration

Cause: Usually a path mismatch in configuration.php or incorrect file permissions. Fix: Check tmp_path and log_path in configuration.php. Verify they point to actual directories on the new server with write permissions. Check error_reporting in configuration.php—temporarily set it to maximum to see the actual error.

Database connection error

Cause: Wrong database credentials in configuration.php, or the database user doesn't have permissions on the database. Fix: Double-check $host, $db, $user, and $password in configuration.php. On shared hosting, database usernames are usually prefixed with your cPanel username (e.g., cpaneluser_dbuser).

Broken images and links

Cause: Hardcoded absolute paths in content that reference the old server's directory structure. Fix: Run a search-and-replace on the database (using a tool like Akeeba's built-in feature or a SQL query) to update old paths to new ones. Be careful with serialized data—use a tool that handles serialized string replacement.

Extensions not working

Cause: Missing PHP extensions on the new server, or PHP version incompatibility. Fix: Compare the PHP extensions list (System → System Information → PHP Information) between old and new servers. Install any missing extensions or ask your host to enable them.

Email not sending

Cause: PHP mail() function blocked on the new server, or SPF/DKIM records still point to the old server's IP. Fix: Configure Joomla to use SMTP instead of PHP mail (Global Configuration → Server → Mail Settings). Update DNS records (SPF, DKIM) to include the new server's IP or mail service.

Slow performance after migration

Cause: OPcache not enabled, caching not configured, or lower-spec server. Fix: Verify OPcache is enabled (check your server's PHP configuration). Enable Joomla's built-in page and cache from Global Configuration → System. If available, enable Redis or Memcached as the cache handler.

Let someone else handle it

If this guide looks like more work than you want to take on, that's entirely reasonable. Migration is a one-time task, but getting it wrong can mean downtime and stress.

MaiaHost offers free site migrations with every hosting plan. We handle the complete process—backup, transfer, database import, configuration, DNS guidance, SSL setup, and testing—typically within 24 hours. You don't need to install anything or touch a command line.

Learn more about our managed Joomla hosting or contact us to start a migration.

FAQs

How long does a Joomla migration take?

A typical Joomla migration takes 1–4 hours of active work, depending on site size and complexity. DNS propagation adds up to 48 hours, but your site remains accessible throughout—visitors just gradually shift from the old server to the new one.

Will my site go down during migration?

No, if done correctly. You set up the new server while the old one is still running. DNS is switched only after the new server is fully tested. During DNS propagation, visitors reach either server—both serve the same content.

Can I migrate from Joomla 3 to Joomla 5 and switch hosts at the same time?

You can, but we recommend separating the two steps. Migrate first (same Joomla version, new host), verify everything works, then upgrade Joomla versions. Doing both at once makes troubleshooting much harder if something goes wrong.

Do I need to re-install extensions after migration?

No. A proper migration (via Akeeba Backup or manual file + database transfer) brings all extensions with it. They don't need to be reinstalled—just verified to work on the new server.

What if my old host won't give me access to my files?

If you can still log into Joomla admin, install Akeeba Backup and create a backup from within Joomla—no server-level access needed. If you've been completely locked out by your old host, contact them and request a final backup. Most hosts are legally required to provide access to your data.

Sources

  • Akeeba Backup — Documentation: https://www.akeeba.com/documentation/akeeba-backup.html
  • Akeeba Kickstart — Documentation: https://www.akeeba.com/documentation/akeeba-kickstart.html
  • Joomla — Technical Requirements: https://manual.joomla.org/docs/get-started/technical-requirements/
  • Joomla — Migrating from Joomla 3.x to 4.x: https://docs.joomla.org/Joomla_3.x_to_4.x_Step_by_Step_Migration
Share

Talk to an expert and we’ll tell you the best setup for your project.

Explore plans or talk to us—no sales scripts, just practical advice from real engineers.

View Plans Contact Us