Fork me on GitHub

Herr Knedel/Uncool with Atlassian: how to deal with Atlassian policy

Created Wed, 14 Apr 2021 00:00:00 +0000 Modified Mon, 28 Mar 2022 18:09:28 +0000 Difficulty level: It may take a little longer

348 Words

Atlassian has stopped selling the small server licenses and I have been thinking for a long time how to deal with this. Since I still want to use my installation for a long time, I implemented the following measures:

Measure 1: I use Docker exclusively

I run all Atlassian tools as Docker containers. Even older, native installations can be converted to a Docker installation via database dumps. These can then be conveniently run on an intel Nuc or a Synology disk station in the Homelab.

version: '2'
services:
  jira:
    image: atlassian/jira-software
    container_name: jira_application
    depends_on:
      - db
    restart: always
    environment:
      TZ: 'Europe/Berlin'
    ports:
      - 8080:8080
    volumes:
      - ./jira-data:/var/atlassian/application-data/jira
    networks:
      - jira-network
      
  db:
    restart: always
    image: postgres:latest
    container_name: jira_db
    volumes:
      - ./postgresql:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=jira
      - POSTGRES_PASSWORD=jirapass
      - POSTGRES_DB=jira
    networks:
      - jira-network

networks:
  jira-network:


version: '2'
services:
  confluence:
    container_name: confluence_server
    image: atlassian/confluence-server:latest
    restart: always
    environment:
      TZ: "Europe/Berlin"
    volumes:
      - ./confluence:/var/atlassian/application-data/confluence/
    ports:
      - 8080:8080
    networks:
      - confluence-network
    depends_on:
      - db

  db:
    image: postgres:latest
    container_name: confluence_postgres
    restart: always
    volumes:
      - /postgresql:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=confluencedb
      - POSTGRES_PASSWORD=confluence-password
      - POSTGRES_DB=confluenceUser
    networks:
      - confluence-network

networks:
  confluence-network:

version: '2'

services:
  bamboo:
    container_name: bamboo_server
    image: atlassian/bamboo-server
    restart: always
    environment:
      TZ: "Europe/Berlin"
    volumes:
      - ./bamboo-data:/var/atlassian/application-data/bamboo
    ports:
      - 8080:8080
    networks:
      - bamboo-network
    depends_on:
      - db

  db:
    image: postgres:latest
    container_name: bamboo-postgres
    restart: always
    volumes:
      - ./postgresql:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=bamboo
      - POSTGRES_PASSWORD=bamboo
      - POSTGRES_DB=bamboo
    networks:
      - bamboo-network

networks:
  bamboo-network:


Measure 2: Backups of the databases and images

Of course, daily remote database backups play a big role in my disaster recovery strategy. But I also backed up the installation images. A Docker image can be archived with the following command:

x
+
Terminal

$ docker save -o bamboo-7.2.3-image.tar atlassian/bamboo-server

The archive can be loaded into the Docker registry as follows.
x
+
Terminal

$ ocker load -i bamboo-7.2.3-image.tar

I also saved the postgres images.

Action 3: Create USB installation stick

I have backed up my docs, all installation archives, postgres data directories and configurations to a USB stick. As I said, the DB backup is actually the most important thing because the activated license is also in the database.