In this guide we'll move an existing Discourse instance on Linode to a new Discourse instance on Digital Ocean, but of course these steps will work on any other cloud providers that support Docker.
If you are using the same domain name and moving servers, you should set the TTL (time to live) on your DNS entry to a very low value in advance of the change. If you are using different domain names, this won't matter.
Log In and Update
Only admins can perform backups, so sign in as an account with admin access on your existing Discourse instance on Linode.
Ideally, both the new and old Discourses SHOULD BE ON THE EXACT SAME VERSION to ensure proper backup/export. So the first thing we'll do is update our existing Discourse instance on Linode to the absolute latest version.
What you definitely want to avoid is restoring a newer backup on an older version. That won't work.
/admin/upgrade to upgrade both instances. After successfully upgrading, you should see You're up to date!
Create and Download Your Backup
/admin/backups and click Backup button.
You will be prompted for confirmation, press Yes. You will see the log of backup processing. Once processing is finished, switch back to Backups tab.
Now you will see the newly created backup file. Click Download button and save the file, we will need it later for restoration on the new server.
Before you switch over to the new server, review your
app.yml for any optional settings such as CDN, installed plugins, and HTTPS support between the two Discourse instances (if any of that is configured). It is OK to configure this later after the migration as well.
Log In and Restore Backup
Sign up and login on your new Discourse instance at Digital Ocean.
Under site settings search for
/admin/backups and click Upload button, select the backup file you downloaded previously from your existing Discourse instance (file name ends with
Once the file gets uploaded it will be listed as shown below, click Restore button:
Press Yes when prompted for confirmation. You will see restore process log, it may take some time but it's automagically importing all your existing Discourse instance (Linode server) data.
Once the Restore process finishes, you will be logged out.
Log In and You're Done
If you are logging in to a backup that was taken with HTTPS, the site setting "force https" will be enabled. You either need to turn that off via the Rails console, or ensure that your restore is also properly running under HTTPS.
Once the restore process finishes, all the data from your previous Discourse instance on Linode server will be imported in your new Discourse instance on Digital Ocean, sign in with your Admin account and you are good to go!
Don't forget to enable any optional configuration settings that require editing the
app.yml and rebuilding, such as CDN, plugins, and HTTPS support.