WordPress Hosting - Digital Ocean + Server Pilot to Contabo + RunCloud migration

About 10 years ago I set up a Digital Ocean droplet managed by Server Pilot for various WordPress websites of friends, cousins, brothers, my wife, an uncle, an ex work colleague of my brother, an ex work colleague of mine and my wife's godmother.

It was a pretty painless and cheap way to run 20 or so WordPress and flat HTML sites with little intervention required from me. Unfortunately, the Digial Ocean droplet was running Ubuntu 14.04 and Server Pilot changed their pricing plans so I needed to move on.

I thought about off loading the WordPress websites to a hosted service but the cost of one hosted WordPress site is about the same as a new VM + the Runcloud Basic plan.

  1. Get a new VM somewhere - I got the XS VPS from Contabo (that doesn't appear to exist anymore)
  2. Sign up for a 7 day trial of RunCloud.io
  3. Point RunCloud at your new Server. I manually ran the runcloud agent installation on my Contabo VM.

There are a lot of hosting proivders and many services like RunCloud out there. I ended up with Contabo because they had an offer of a machine with 2 vCPUs, 4 GB RAM, a 100 GB SSD disk for EUR 2.99 a month. And I trialled RunCloud and it seemed really easy, did everything I needed it to do and fingers crossed it patches the server whenever necessary and I can just let the machine run for another 6 or 8 years without worrying too much about it.

For each WordPress site:

  1. Create an empty Web Application for it in RunCloud - use the same URL as the current (source) site
  2. Install the Migrate Guru plugin on the source site
  3. Ensure you're running the same version of WordPress on the source and destination sites
  4. And Migrate
    1. Migrate Guru asks for an email address (you get 5 migrations a month per email address)
    2. You'll get redirected to blogvault.net and I chose "Other" on this screen as my host wasn't listed
    3. Then select "manually" enter details
    4. Destination Site URL – the same URL you used in # 1
    5. SFTP
    6. The IP address of your new server (you can leave port blank )
    7. FTP username and password – use runcloud and the password given to you when the runcloud agent completed
    8. Directory Path – this is displayed in the Web Application Summary of the destination site in RunCloud

Migrate Guru will run for a while. It worked very well for me - one WordPress site I migrated is a network/multsite and has nearly 20 GB of content and database of almost a GB. It migrated quite happily.

To check it's worked you could use SkipDns or add a hosts entry for the URL on the new IP address.

If you're happy point your A record at the new server.

Then don't forget to get RunCloud to generate SSL certs for the site. Unless you have the domain pointing at the RunCloud Web Application SSL certs can't be generated. Make sure the certifcates are working correctly and then go for "HSTS & Server Side Redirection".

It's probably a good idea to set up backups.

And if you have 'www' pointed at the Web Application make sure to set your preferred domain to either www or non-www so you don't get penalised for duplicate content. Although I'm not sure if that's still a thing?

RunCloud

Having said all of that I've just discovered a much better run down of migrating a WordPress site to RunCloud here - with lots of helpful screenshots etc.

And lastly, in order to save myself time updating plugins individually on a dozen sites I use ManageWP. Install their plugin on all your WordPress sites and the ManageWP free plan lets you update plugins, themes and WordPress from one Dashboard. I have a reminder once a quarter to login to ManageWP, check I have good backups and update everything. Although perhaps I need to think about auto updates now that that seems to be a thing...

And really lastly, I also downloaded the source WordPress content files and ran mysqldump on all the databases just in case something got lost during the migration. Get the username, password and database name from your wp-config.php file.

1mysqldump -u <user name> -p <database name> > <backup file name>.sql

(You'll get prompted for a password)