SonarQube is an open-source code quality checking platform developed by SonarSource. It detects bugs and vulnerabilities in your code automatically and provides reports for the code quality of your project. It can analyze code in 27 different programming languages including C, C++, Java, Javascript, PHP, Go, Python, and many more. SonarQube helps developers to reduce the code size, complexity, and maintenance time and make it easier to read and understand.

In this post, we will show you how to install SonarQube on Rocky Linux 8

Step 1 – Getting Started

First, you will need to tweak the kernel settings per SonarQube requirements. You can do it editing /etc/sysctl.conf file.

nano /etc/sysctl.conf

Add the following lines:


Save and close the file, then run the following command to apply the changes:

sysctl -f

Next, install Java JDK using the following command:

dnf install java-11-openjdk-devel unzip -y

After the installation, verify the Java version using the command given below:

java --version

You should see the following output:

openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

Step 2 – Install and Configure PostgreSQL

SonarQube uses PostgreSQL as a database backend, so you will need to install a PostgreSQL database on your server.

First, install the PostgreSQL repo using the following command:

dnf -y install

Next, disable the default PostgreSQL module and install the latest version of PostgreSQL with the following command:

dnf -qy module disable postgresql
dnf install postgresql13 postgresql13-server

Once the installation is completed, initialize the PostgreSQL database using the following command:

/usr/pgsql-13/bin/postgresql-13-setup initdb

Next, start and enable the PostgreSQL service with the following command:

systemctl enable --now postgresql-13

Next, log in to PostgreSQL with the following command:

su - postgres

Next, create a database and user for SonarQube using the following command:

create user sonar;
create database sonardb owner sonar;

Next, grant all the privileges to the SonarQube database and set the user password:

grant all privileges on database sonardb to sonar;
ALTER USER sonar WITH ENCRYPTED password 'securepassword';

Next, exit from PostgreSQL using the following command:


Step 3 – Install and Configure SonarQube

First, create a dedicated user for SonarQube using the following command:

useradd sonar

Next, download the latest version of SonarQube with the following command:


After the successful download, unzip the downloaded file using the following command:


Next, move the extracted directory to /opt with the following command:

mv sonarqube- /opt/sonarqube

Next, edit the SonarQube configuration file:

nano /opt/sonarqube/conf/

Define your SonarQube database, web host, JVM option, and data directory:


sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Save and close the file, then change the ownership of the /opt/sonarqube:

chown -R sonar:sonar /opt/sonarqube

Next, edit the wrapper.conf file and define your Java path:

nano /opt/sonarqube/conf/wrapper.conf

Change the following line:

Save and close the file.

Step 4 – Create a Systemd Service File for SonarQube

Next, you will need to create a systemd service to manage the SonarQube service. You can create it using the following command:

nano /etc/systemd/system/sonarqube.service

Add the following lines:

Description=SonarQube service

ExecStart=/opt/sonarqube/bin/linux-x86-64/ start
ExecStop=/opt/sonarqube/bin/linux-x86-64/ stop


Save and close the file, then reload the systemd daemon to apply the changes:

systemctl daemon-reload

Next, start and enable the SonarQube service:

systemctl start sonarqube
systemctl enable sonarqube

Next, verify the SonarQube service status using the command given below:

systemctl status sonarqube

You should see the following output:

● sonarqube.service - SonarQube service
   Loaded: loaded (/etc/systemd/system/sonarqube.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-12-16 15:25:55 UTC; 5s ago
  Process: 6372 ExecStart=/opt/sonarqube/bin/linux-x86-64/ start (code=exited, status=0/SUCCESS)
 Main PID: 6421 (wrapper)
    Tasks: 52 (limit: 23695)
   Memory: 680.4M
   CGroup: /system.slice/sonarqube.service
           ├─6421 /opt/sonarqube/bin/linux-x86-64/./wrapper /opt/sonarqube/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=Sona>
           ├─6423 java -Dsonar.wrapped=true -Djava.awt.headless=true --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED>
           └─6451 /usr/lib/jvm/java-11-openjdk- -XX:+UseG1GC -XX:Erro>

Dec 16 15:25:54 rockylinux systemd[1]: Starting SonarQube service...
Dec 16 15:25:54 rockylinux[6372]: Starting SonarQube...
Dec 16 15:25:55 rockylinux[6372]: Started SonarQube.
Dec 16 15:25:55 rockylinux systemd[1]: Started SonarQube service.

At this point, SonarQube is started and listens on port 9000. You can check it using the following command:

ss -antpl | grep 9000

You should see the following output:

LISTEN 0      25                      *:9000             *:*    users:(("java",pid=6541,fd=13))     

Step 5 – Access SonarQube Web Interface

Now, open your web browser and access the SonarQube web interface using the URL http://your-server-ip:9000. You should see the SonarQube login page:
SonarQube login page
Provide default admin username and password as admin/admin and click on the Log in button. Once you are logged in, you should see the password update page:

SonarQube update password page
Change the default admin password and click on the Update button. You should see the SonarQube dashboard on the following page:
SonarQube dashboard


Congratulations! You have successfully installed SonarQube on Rocky Linux 8. You can now create your project manually or import from GitHub, GitLab, or Azure and start analyzing your code from the web browser. Try it on dedicated hosting from Atlantic.Net!