A Small-Business Guide to Moving Confluence and Jira from Cloud to Server on AWS Ubuntu

Geoff Daly September 16, 2020

Introduction

We wanted to have the flexibility and superior add-ins available for Confluence Server rather than our existing Confluence Cloud site.  We also don't always appreciate the continual UX 'improvements' in Cloud as much as Atlassian might like us to.

This doc describes the process I used to move from Confluence Cloud (https://mycompany.jira.com/wiki) to Confluence Server on a dedicated Amazon Web Services (AWS) virtual machine (https://confluence.mycompany.com). 

The process includes installing a reverse proxy and SSL so that traffic is encrypted, and users get the https: browser padlock when they access the site from wherever they are.

I started with the general guide from Atlassian: https://support.atlassian.com/confluence-cloud/docs/migrate-from-confluence-cloud-to-server/ but there was an awful lot that went wrong along the way, or didn’t quite fit the guide.

I decided along the way to also move our Jira Cloud to Jira Server on a separate AWS instance. These steps mainly follow the confluence process with some slight variations.

There was a lot of two steps forward, one step back and these are the final set of instructions.  Initially I installed the postgresql databases on the same AWS ‘machines’ as the confluence and jira servers, but I then went to using an AWS RDS database.

The trickiest task in this process was to fix old, hard-coded links in the databases, which pointed to my company’s previous confluence and jira systems over the last 15 years.

Using this Process as a Backup Validation Template

Even if you don’t want to move from Cloud, much of the process here could be used to validate a cloud backup strategy.  If your company risk analysis has the item "What if Atlassian Cloud is compromised?" the mitigation could be: "Restore the latest backups to an on-prem or AWS server". 

You don't want to be testing whether your backup process works after something has gone wrong.  Having been through this, you will likely be disappointed.

Disclaimer

This was originally just some notes written to myself.  I am not a professional IT guy.  I’m not going to accept any responsibility for any losses/issues/problems you have.  I'm sure this doesn't always follow best practices and I'm sure there are more elegant and efficient methods of doing things.  But I made them work for me.  Use at your own risk.

I will use “mycompany” in code and URLs throughout this document, so do a search and replace for your own company name.

Of course, if you see any glaring security holes, I'd appreciate a contact asap so that I can adjust my system and this guide.

Software Versions

This guide was written during June-Sept 2020.  Using different versions of software and operating systems may of course cause things to break for you.   e.g. Files might be kept in different places by different versions.  I am using:

  • The desktop OS I’m working from: Windows 10 Pro
  • AWS instance OS: Ubuntu 20.04 LTS
  • Confluence Server 7.4.4 (LTS Release)
  • Jira Software Server 8.5.8 (LTS Release)
  • Apache/2.4.41 (Ubuntu)
  • PostgreSQL 10.13-R1
  • certbot 0.40.0-1

Make sure you check with Atlassian docs – search “Supported Platforms” for each – especially the databases.

Overview

The process is this:

Preparation:

  1. Create AWS instances to run jira and confluence servers
  2. Create postgresql RDS
  3. Install Confluence and Jira Server software
  4. Secure access using DNS, Apache reverse proxy, and SSL
  5. Take backups of the existing Cloud systems (users can continue using these systems)
  6. Restore backups onto the AWS server Test Sites
  7. Take Test Site Server backups / SQL database dumps
  8. Develop a script to fix broken hard-coded links
  9. Validate the script and database modifications on the test servers

Move Day:

  1. Revoke user access to the Cloud systems
  2. Take backup of Cloud systems
  3. Restore backups to clean Server systems
  4. Take another backup of the newly restored server systems
  5. Execute scripts to fix broken hard-coded links
  6. Restore fixed databases to Server systems
  7. Validate systems are operational
  8. Install add-ins, apps, mail servers, backup scripts
  9. Grant users access to Server systems.

The rest...

This discussion forum has a limit of 20,000 characters and I couldn't be bothered splitting my how-to up into smaller chunks.  The full document is here: 

https://www.analyticamedical.com/other/20200917-MoveFromCloudToServer.pdf

I hope you find it useful.  Cheers

1 comment

Deleted user September 29, 2020

Hi @Geoff Daly I would be interested in publishing your guide in Italian for the Italian community of Atlassian users on Linkedin, obviously quoting you as the author.

Like Geoff Daly (Admin) likes this
Geoff Daly (Admin) September 29, 2020

Mate, go for it.  It's there to help people.  

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events