# How to Install SonarQube on Arch Linux

> URL: https://www.atlantic.net/dedicated-server-hosting/how-to-install-sonarqube-on-arch-linux/ | Published: 2023-04-19 | Updated: 2023-11-15 | Author: Hitesh Jethva

SonarQube is an open-source and self-hosted code quality analysis tool used to check code in several programming languages via plugins. It allows development teams to find bugs and code duplication in a software application. It helps developers to decrease application size, code complexity, time, and cost of maintenance and makes code easier to read and understand. It is written in Java and supports several databases including Postgres, MySQL, Oracle, and SQL Server.

In this post, we will show you how to install SonarQube on Arch Linux.

## Step 1 – Configure Repository

By default, the default repository is outdated in Arch Linux, so you will need to modify the default mirror list. You can do it by editing the mirror list configuration file:

```
nano  /etc/pacman.d/mirrorlist
```

Remove all lines and add the following lines:

```
## Score: 0.7, United States
Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch
## Score: 0.8, United States
Server = http://lug.mtu.edu/archlinux/$repo/os/$arch
Server = http://mirror.nl.leaseweb.net/archlinux/$repo/os/$arch
## Score: 0.9, United Kingdom
Server = http://mirror.bytemark.co.uk/archlinux/$repo/os/$arch
## Score: 1.5, United Kingdom
Server = http://mirrors.manchester.m247.com/arch-linux/$repo/os/$arch
Server = http://archlinux.dcc.fc.up.pt/$repo/os/$arch
## Score: 6.6, United States
Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch
## Score: 6.7, United States
Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch
## Score: 6.8, United States
Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch
## Score: 7.1, India
Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch
## Score: 10.1, United States
Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch
```

Save and close the file, then update all the package indexes with the following command:

```
pacman -Syu
```

## Step 2 – Install Java JDK

SonarQube is based on Java, so you will need to install Java on your server. You can install it with the following command.

```
pacman -S jdk17-openjdk unzip
```

Once Java is installed, you can verify it using the following command.

```
java --version
```

You will get the Java version information in the following output.

```
openjdk 17.0.6 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10)
OpenJDK 64-Bit Server VM (build 17.0.6+10, mixed mode)
```

## Step 3 – Install and Configure PostgreSQL

First, install the PostgreSQL server with the following command.

```
pacman -S postgresql
```

Next, initialize the PostgreSQL database with the following command.

```
sudo -u postgres initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
```

Next, start and enable the PostgreSQL service using the following command.

```
systemctl start postgresql
systemctl enable postgresql
```

Next, connect to the PostgreSQL shell.

```
sudo -u postgres psql
```

Next, create a database and user for SonarQube:

```
CREATE USER sonarqube WITH PASSWORD 'password';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
```

Next, exit from the PostgreSQL shell with the following command.

```
\q
```

## Step 4 – Download SonarQube

First, create a dedicated user to run SonarQube.

```
useradd -b /opt/sonarqube -s /bin/bash sonarqube
```

Next, download the latest version of SonarQube using the following command.

```
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
```

Once the download is completed, unzip the downloaded file with the following command.

```
unzip sonarqube-9.9.0.65466.zip
```

Next, move the extracted directory to /opt using the following command.

```
mv sonarqube-9.9.0.65466 /opt/sonarqube
```

Next, change the ownership of the SonarQube directory.

```
chown -R sonarqube:sonarqube /opt/sonarqube
```

Next, edit the SonarQube configuration file.

```
nano /opt/sonarqube/conf/sonar.properties
```

Change the following lines as per your settings.

```
sonar.jdbc.username=sonarqube
sonar.jdbc.password=password
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.javaAdditionalOpts=-server
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.log.level=INFO
sonar.path.logs=logs
```

Save and close the file when you are done.

## Step 5 – Create a Systemd Service File for SonarQube

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

```
nano /etc/systemd/system/sonarqube.service
```

Add the following configurations.

```
[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target
```

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
```

You can check the status of SonarQube using the following command.

```
systemctl status sonarqube
```

Output.

```
● sonarqube.service - SonarQube service
     Loaded: loaded (/etc/systemd/system/sonarqube.service; disabled; preset: disabled)
     Active: active (running) since Sun 2023-03-26 04:42:04 UTC; 17s ago
    Process: 1008 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
   Main PID: 1033 (java)
      Tasks: 119 (limit: 4685)
     Memory: 1.1G
        CPU: 33.270s
     CGroup: /system.slice/sonarqube.service
             ├─1033 java -Xms8m -Xmx32m --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio>
             ├─1058 /usr/lib/jvm/java-17-openjdk/bin/java -XX:+UseG1GC -Djava.io.tmpdir=/opt/sonarqube/temp -XX:ErrorFile=/opt/sonarqube/logs/es_hs_err_pid%p.log -Des.>
             └─1168 /usr/lib/jvm/java-17-openjdk/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp -XX:-OmitStackTraceInFast>

Mar 26 04:42:04 archlinux systemd[1]: Starting SonarQube service...
Mar 26 04:42:04 archlinux sonar.sh[1008]: /usr/bin/java
Mar 26 04:42:04 archlinux systemd[1]: Started SonarQube service.
Mar 26 04:42:04 archlinux sonar.sh[1008]: Starting SonarQube...
Mar 26 04:42:04 archlinux sonar.sh[1008]: Started SonarQube.
```

## Step 6 – Access SonarQube Web UI

At this point, SonarQube is installed and running. 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:

![](https://www.atlantic.net/wp-content/uploads/2023/04/p1-6.png)

Provide the default admin username and password as **admin/admin** then click on the **Login** button. You should see the password change screen.

![](https://www.atlantic.net/wp-content/uploads/2023/04/p2-7.png)

Change your default password, then click on the **Update**button. You should see the SonarQube dashboard on the following screen.**![](https://www.atlantic.net/wp-content/uploads/2023/04/p3-4.png)**

## Conclusion

In this post, we explained how to install SonarQube on Arch Linux. You can now create your first project manually or import it from the other DevOps platform. You can now try to deploy SonarQube on [dedicated server hosting](https://www.atlantic.net/dedicated-server-hosting/) from Atlantic.Net!
