It took a little work, but I’m now migrated from Joomla to WordPress. Here’s how I migrated:

Used Akeeba Backup to get a full backup of my Joomla site and download it locally.

Created a local linux virtual machine and installed Joomla, then restored the Akeeba backup.

Created another local linux virtual machine and installed Joomla.

Using the FG Joomla to WordPress tool, I migrated the site.

After migrating, I was able to do cleanup and customize the new site.

Created a backup of the new WordPress site using UpdraftPlus, then uploaded to my GCP instance.

Created a new Docker WordPress container and configured Nginx for the new container to support testing.

Restored the WordPress backup to the new container and did final testing and cleanup of the site. One important step was fixing URL references in the database. I connected to MariaDB and used these queries:

To go live with the new site, it was just a matter of changing the back-ed port forwarding in Nginx. Both the live and testing sites are forwarding to the same back-end container so all works as it should.

Then a final clean-up Nginx port forwarding and the database using the above SQL queries so that I can keep the testing site separate.

With all of the issues around web security, there’s a pretty easy solution using EFF’s certbot and LetsEncrypt.org. I use an Nginx proxy in front of everything, so all of the encryption terminates there. So using certbot with webroot was pretty easy and then it was just a matter of adjusting the Nginx config.

In each site that I migrated to SSL, here’s an example of what the final config looks like. This works for both Joomla! and WordPress sites behind Nginx. Nginx listens on http/80 and redirects to https/443.

– Single Linux server running in Google Compute US-East.
– The Google Compute instance started as an “n1-standard-1”. I’ve added additional memory but have stuck with a single CPU.
– The only things installed in addition to the base OS are Git and Docker
– Dockerfiles and scripts to manage all of the containers are stored in a private git repo
– Backups consist of a snapshot in GCP and tarballs of data copied to Google Drive or downloaded locally.

This setup works pretty well and makes the whole thing pretty portable. I had originally built all of this is US-Central but later decided to move it to US-East. It was a pretty simple task of creating a new instance, installing git and docker, pulling the docker repo, copying the data into place, then creating the containers.