Jira is a project management and issue tracking platform built by Atlassian. It is widely used by software development teams for sprint planning, bug tracking, and agile project management. Jira supports Scrum and Kanban boards, custom workflows, and integrates with CI/CD tools, Git repositories, and collaboration platforms.
This guide walks through installing Jira Software 11.3.2 (the latest release as of this writing) on Ubuntu 24.04 LTS and Rocky Linux 10. We cover Java 21 setup, PostgreSQL database configuration, Nginx reverse proxy with SSL, firewall rules, and systemd service management.
Prerequisites
Before starting, confirm you have the following in place:
- A server running Ubuntu 24.04 LTS or Rocky Linux 10 with at least 4 GB RAM and 2 CPU cores (8 GB recommended for production)
- Root or sudo access to the server
- A domain name pointed to your server IP (for SSL setup)
- Ports 80, 443, and 8080 (TCP) open on the firewall
- Java 21 (JDK 21) – required by Jira 11.x
- PostgreSQL 15, 16, or 17 as the database backend
Step 1: Install Java 21 (OpenJDK 21)
Jira 11.3 requires Java 21. Earlier Java versions (8, 11, 17) are no longer supported. Install OpenJDK 21 from the default repositories. For a more detailed guide, see our articles on installing Java 21 on Ubuntu and Java 21 on AlmaLinux / RHEL.
On Ubuntu 24.04:
sudo apt update
sudo apt install -y openjdk-21-jdk
On Rocky Linux 10:
sudo dnf install -y java-21-openjdk java-21-openjdk-devel
Confirm Java 21 is installed and active:
java -version
The output should show OpenJDK version 21:
openjdk version "21.0.6" 2025-01-21
OpenJDK Runtime Environment (build 21.0.6+7)
OpenJDK 64-Bit Server VM (build 21.0.6+7, mixed mode, sharing)
Set the JAVA_HOME environment variable so Jira can locate the JDK:
echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64' | sudo tee /etc/profile.d/java.sh
source /etc/profile.d/java.sh
On Rocky Linux, the path is slightly different:
echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk' | sudo tee /etc/profile.d/java.sh
source /etc/profile.d/java.sh
Step 2: Install PostgreSQL
PostgreSQL is the recommended database for Jira in production. Jira 11.3 supports PostgreSQL 15, 16, and 17. We install PostgreSQL 17 here. For a dedicated PostgreSQL setup guide, check our article on installing PostgreSQL on Ubuntu.
On Ubuntu 24.04:
sudo apt install -y postgresql postgresql-contrib
On Rocky Linux 10:
sudo dnf install -y postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
Start and enable PostgreSQL so it runs on boot:
sudo systemctl enable --now postgresql
Verify the service is running:
sudo systemctl status postgresql
You should see active (running) in the output, confirming PostgreSQL started without issues.
Step 3: Create Jira Database and User
Create a dedicated PostgreSQL database and user for Jira. Switch to the postgres system user to access the PostgreSQL shell:
sudo -u postgres psql
Run the following SQL commands inside the PostgreSQL prompt to create the database and user:
CREATE USER jirauser WITH PASSWORD 'StrongPassword123';
CREATE DATABASE jiradb WITH ENCODING 'UNICODE' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0 OWNER jirauser;
GRANT ALL PRIVILEGES ON DATABASE jiradb TO jirauser;
\q
Replace StrongPassword123 with a strong, unique password. The LC_COLLATE and LC_CTYPE settings are required by Jira for proper Unicode handling.
On Rocky Linux 10, you also need to configure PostgreSQL to accept password authentication. Edit the pg_hba.conf file:
sudo vi /var/lib/pgsql/data/pg_hba.conf
Find the line with ident for local IPv4 connections and change it to md5:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Restart PostgreSQL for the change to take effect:
sudo systemctl restart postgresql
Step 4: Download and Install Jira Software
Download the Jira Software 11.3.2 Linux installer from Atlassian’s servers. This is a binary installer that handles the installation process.
cd /tmp
wget https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-11.3.2-x64.bin
Make the installer executable and run it:
chmod +x atlassian-jira-software-11.3.2-x64.bin
sudo ./atlassian-jira-software-11.3.2-x64.bin
The installer will prompt you with several options. Here are the recommended choices:
- Installation type – Choose
2(Custom install) to control paths - Installation directory – Accept the default
/opt/atlassian/jiraor set your preferred path - Data directory – Accept the default
/var/atlassian/application-data/jira - HTTP port – Accept the default
8080 - RMI port – Accept the default
8005 - Install as service – Choose
yto install as a systemd service
The installer creates a dedicated jira system user and sets up the directory structure. Once complete, it asks whether to start Jira now – choose y.
Step 5: Start Jira Software
If Jira did not start during installation, start it manually:
sudo /opt/atlassian/jira/bin/start-jira.sh
Jira takes 2-3 minutes on first boot while it initializes the application. Check the startup log to monitor progress:
tail -f /var/atlassian/application-data/jira/log/atlassian-jira.log
Wait until you see a message containing Jira is ready or You can now access Jira. Verify the service is listening on port 8080:
ss -tlnp | grep 8080
You should see Jira’s Java process bound to port 8080:
LISTEN 0 100 *:8080 *:* users:(("java",pid=12345,fd=245))
Step 6: Run the Jira Setup Wizard
Open your browser and navigate to http://your-server-ip:8080. The Jira setup wizard appears with two options – choose “I’ll set it up myself” to manually configure the database connection.
On the database configuration screen, select:
- Database Type – PostgreSQL
- Hostname –
localhost - Port –
5432 - Database –
jiradb - Username –
jirauser - Password – the password you set in Step 3
Click Test Connection to verify the database credentials work, then proceed. The wizard will create the Jira schema in your PostgreSQL database – this takes a few minutes depending on server resources.
The remaining wizard steps ask for your application title, base URL, license key (get a trial from Atlassian), and admin account details. Complete these to finish the initial setup.
Step 7: Configure Nginx Reverse Proxy for Jira
Running Jira behind Nginx allows you to serve the application on standard HTTP/HTTPS ports and handle SSL termination. For more on Nginx setup, see our guide on installing and configuring Nginx on Ubuntu / Debian.
On Ubuntu 24.04:
sudo apt install -y nginx
On Rocky Linux 10:
sudo dnf install -y nginx
Create the Nginx virtual host configuration for Jira:
sudo vi /etc/nginx/conf.d/jira.conf
Add the following configuration, replacing jira.example.com with your actual domain:
server {
listen 80;
server_name jira.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Jira needs larger buffers for some responses
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
client_max_body_size 100m;
}
}
Test the Nginx configuration and reload:
sudo nginx -t && sudo systemctl reload nginx
You also need to tell Jira it is running behind a reverse proxy. Edit the Jira server configuration:
sudo vi /opt/atlassian/jira/conf/server.xml
Find the Connector element for port 8080 and add the proxy attributes:
<Connector port="8080"
relaxedPathChars="[]|"
relaxedQueryChars="[]|{}^\`"<>"
maxThreads="150"
minSpareThreads="25"
connectionTimeout="20000"
enableLookups="false"
maxHttpHeaderSize="8192"
protocol="HTTP/1.1"
useBodyEncodingForURI="true"
redirectPort="8443"
acceptCount="100"
disableUploadTimeout="true"
bindOnInit="false"
scheme="https"
proxyName="jira.example.com"
proxyPort="443" />
Replace jira.example.com with your domain. Restart Jira after making this change:
sudo /opt/atlassian/jira/bin/stop-jira.sh
sudo /opt/atlassian/jira/bin/start-jira.sh
Step 8: Configure SSL with Let’s Encrypt
Secure Jira with a free SSL certificate from Let’s Encrypt using Certbot. For a full SSL guide, see our article on generating Let’s Encrypt SSL certificates on Linux.
On Ubuntu 24.04:
sudo apt install -y certbot python3-certbot-nginx
On Rocky Linux 10:
sudo dnf install -y certbot python3-certbot-nginx
Request the SSL certificate. Certbot automatically modifies the Nginx configuration to enable HTTPS and redirect HTTP traffic:
sudo certbot --nginx -d jira.example.com
Follow the prompts – enter your email address and agree to the terms of service. Certbot handles the rest, including setting up automatic certificate renewal.
Verify the automatic renewal timer is active:
sudo systemctl status certbot.timer
You should see the timer loaded and active, which means certificates will renew automatically before expiry.
Step 9: Configure Firewall
Open the required ports in the firewall. Jira runs on port 8080 by default, and Nginx needs ports 80 and 443 for HTTP/HTTPS traffic.
On Ubuntu 24.04 (UFW):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
sudo ufw reload
On Rocky Linux 10 (firewalld):
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
Verify the firewall rules are applied:
sudo firewall-cmd --list-all
On Ubuntu, check with:
sudo ufw status
You should see ports 80, 443, and 8080 listed as allowed in the output.
Step 10: Configure Jira as a Systemd Service
The Jira installer normally creates a systemd service automatically. If your installation did not set this up, or if you need to create the unit file manually, here is the process.
Create the systemd service file:
sudo vi /etc/systemd/system/jira.service
Add the following content:
[Unit]
Description=Atlassian Jira Software
After=network.target postgresql.service
[Service]
Type=forking
User=jira
Group=jira
ExecStart=/opt/atlassian/jira/bin/start-jira.sh
ExecStop=/opt/atlassian/jira/bin/stop-jira.sh
TimeoutStartSec=300
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
Reload systemd, enable the service, and start Jira:
sudo systemctl daemon-reload
sudo systemctl enable jira
sudo systemctl start jira
Confirm the service is running:
sudo systemctl status jira
The output should show active (running). Jira now starts automatically on server boot and can be managed with standard systemctl commands.
Conclusion
Jira Software 11.3.2 is now running on your server with PostgreSQL as the database backend, Nginx as a reverse proxy, and SSL encryption through Let’s Encrypt. Access your Jira instance at https://jira.example.com and complete the setup wizard to configure your first project.
For production environments, set up regular PostgreSQL database backups, configure Jira’s built-in email notifications, and monitor JVM heap usage through the Jira admin panel. Review the Jira supported platforms documentation to stay current on supported Java and database versions when upgrading.
What to do about the following error:?
Error connecting to database
The server time zone value ‘EDT’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.