Hosting JIRA on an Amazon EC2 instance is quite easy and can save you a lot of money. Compare $10 per month to a one-time payment of $10 for the self hosted solution. The setup per se is quite easy but by default JIRA doesn’t allow you to use port 80 as it’s default access port. In this tutorial we are going to look into how to still achieve this using iptables on a Linux system.
I recommend using Amazon RDS as the database for JIRA, to increase redundancy and data safety in general.
The first step is to set up an Amazon RDS database, afterwards you can go ahead fire up an EC2 instance and install JIRA. I used the recommended Amazon Linux Image for my installation.
After the machine is up and running you simply get the latest JIRA binary and execute it.
Get the download link of the latest version here: https://www.atlassian.com/software/jira/download
Afterwards use wget to download the file onto your EC2 instance:
wget https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.1.7-jira-7.1.7-x64.bin
Now all you have to do is make the file executable and then run it and follow the steps in the guided installation:
sudo chmod a+x atlassian-jira-software-7.1.7-jira-7.1.7-x64.bin
sudo ./atlassian-jira-software-7.1.7-jira-7.1.7-x64.bin
After you have finished the installation guide, you need to change the port mapping using iptables.
Set the iptables configuration using the following commands:
sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Afterwards the iptables configuration needs to be stored to a local file, which late on is going to be used to load the configuration at boot of the host system.
Store the configuration under /etc/iptables.rules
sudo bash -c "iptables-save > /etc/iptables.rules"
In order to load this file after the system has been booted, edit /etc/rc.local and append the following command at the very end of it:
iptables-restore < /etc/iptables.rules
Save the file and reboot your system. Double check if everything is working properly, use sudo iptables -L to see if the custom rules have been loaded during the boot. The output should look similar to this:
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:webcache Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Afterwards you can continue to use your JIRA by accessing the web interface through port 80.
Hi Kevin,
Thank you for this nice article.
Which type of hosting are you using for the JIRA server?
How much does it cost per year?
Thank you
Hi man, sorry for the late reply. You can start with a t2.micro instance to begin with. You’re looking at roughly $115 per year with the current AWS pricing. Hope it helps.
Hello Kevin;
Nice to meet you. I have read your document about how to set up JIRA on AWS EC2. https://kevingoedecke.com/2016/06/03/setup-jira-on-aws-ec2-using-port-80/
Here I have meet some question:
1. how to access the JIRA system by different people, hosted on AWS?
2. can I use my own domain to access the JIRA system?