Installing a JIRA server on a Scaleway ARM instance

Is it possible to use a JIRA server on a Scaleway C1 instance (bare metal ARM)? It is!

Introduction

Did you know that you can buy an official license for a stand-alone JIRA server for only 10$? Even better, Atlasian actually donates the money to charity. Of course, this license is limited to 10 users.

This setup is inspired from [1]. The Scaleway bare-metal 4-core ARM has the similar processing power with the Raspberry Pi 2... with better, faster Ethernet network interface and more reliable storage (over network).

Create a Scalaway instance

Configure the instance:

Start the instance:

To connect to the server:

ssh -i scaleway_key root@xxx.xxx.xxx.xxx

Install JIRA

Download Atlassian JIRA (get the tar.gz, not the binary installer which will not run on ARM), and unpack it:

wget https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-7.3.2.tar.gz
tar xf atlassian-jira-software-7.3.2.tar.gz

JIRA runs entirely on java, which needs to be installed. According to [2], JIRA needs Oracle Java. It can be installed from [3]:

apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
apt-get install oracle-java8-set-default

Check your brand new JRE:

~# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode)

See atlassian-jira-software-7.3.2-standalone/README.txt for install instructions:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
nano atlassian-jira-software-7.3.2-standalone/atlassian-jira/WEB-INF/classes/jira-application.properties
# Do not modify this file unless instructed. It is here to store the location of the JIRA home directory only and is typically written to by the installer.
jira.home = /usr/local/jira
export JIRA_HOME=/usr/local/jira

You are ready to start the server with atlassian-jira-software-7.3.2-standalone/bin/start-jira.sh.

Result:

To run JIRA in the foreground, start the server with start-jira.sh -fg
executing as current user
                .....
          .... .NMMMD.  ...
        .8MMM.  $MMN,..~MMMO.
        .?MMM.         .MMM?.

     OMMMMZ.           .,NMMMN~
     .IMMMMMM. .NMMMN. .MMMMMN,
       ,MMMMMM$..3MD..ZMMMMMM.
        =NMMMMMM,. .,MMMMMMD.
         .MMMMMMMM8MMMMMMM,
           .ONMMMMMMMMMMZ.
             ,NMMMMMMM8.
            .:,.$MMMMMMM
          .IMMMM..NMMMMMD.
         .8MMMMM:  :NMMMMN.
         .MMMMMM.   .MMMMM~.
         .MMMMMN    .MMMMM?.

      Atlassian JIRA
      Version : 7.3.2


If you encounter issues starting or stopping JIRA, please see the Troubleshooting guide at http://confluence.atlassian.com/display/JIRA/Installation+Troubleshooting+Guide

Using JIRA_HOME:       /usr/local/jira

Server startup logs are located in /root/atlassian-jira-software-7.3.2-standalone/logs/catalina.out
Using CATALINA_BASE:   /root/atlassian-jira-software-7.3.2-standalone
Using CATALINA_HOME:   /root/atlassian-jira-software-7.3.2-standalone
Using CATALINA_TMPDIR: /root/atlassian-jira-software-7.3.2-standalone/temp
Using JRE_HOME:        /usr/lib/jvm/java-8-oracle/
Using CLASSPATH:       /root/atlassian-jira-software-7.3.2-standalone/bin/bootstrap.jar:/root/atlassian-jira-software-7.3.2-standalone/bin/tomcat-juli.jar
Using CATALINA_PID:    /root/atlassian-jira-software-7.3.2-standalone/work/catalina.pid
Tomcat started.

Using JIRA

First task!

Conclusion

Using the heavily "java"-loaded JIRA on a mini ARM board cannot result in a speedy or reactive interface, but it is usable if you do not mind to wait a few seconds between each page. JIRA pages themselves are well-designed to support long latency during asynchronous updates.

This solution is perfect for managing your life with tickets. Public and private TODO-style projects can be created. The limitation of 10 users is not an actual problem if a generic account for "friends" or "family" is shared among all other users of the server. You would not like to create a dedicated user for each person you know anyway.