SonarQube merupakan tools untuk menganalisis kualitas dari code. Sonarqube dapat menganalisa 27 bahasa pemrograman seperti Java, C, PHP, Go dan lain sebagainya. Karena bisa langsung di integrasikan dengan git (github, gitlab) maka sangat memudahkan penggunaannya di CI/CD. Disini kita akan menginstall SonarQube 8.3 lebih tepatnya Version 8.3.1 (build 34397) di Debian 10. Ikuti langkah demi langkah berikut ini

Update System

sudo apt-get update
sudo apt-get -y upgrade

Install tools yang dibutuhkan

sudo apt-get install wget unzip curl gnupg2 ca-certificates lsb-release -y

Install Java

apt install openjdk-11-jre -y

Install PostgreSQL

Tambahkan repository PostgreSQL

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

install PostgreSQL

sudo apt-get -y install postgresql postgresql-contrib

Aktifkan waktu boot dan jalankan postgresql

sudo systemctl enable postgresql
sudo systemctl start postgresql

Ganti default password user postgres

sudo passwd postgres

Buat user dan database untuk SonarQube

su - postgres

buat user

create user sonar

untuk membuat password untuk user sonar tersebut, jalankan postgres shell (psql)

psql

jalankan

ALTER USER sonar WITH ENCRYPTED password '9WW3vWrwnCnX3mMf3VVL';

ganti 9WW3vWrwnCnX3mMf3VVL dengan password anda.

buat database sonar dengan pemilik user sonar.

CREATE DATABASE sonar OWNER sonar;

keluar dari psql dengan mengeksekusi quit. Kembali ke user anda sebelumnya, bukan user postgres dengan mengeksekusi exit.

Download SonarQube

Download file sonarcube dari website official SonarQube

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

Ekstrak file sonarqube yang baru di download ke /opt

sudo unzip sonarqube-8.3.1.34397.zip -d /opt/

rename folder sonarqube-xxxx menjadi /opt/sonarqube

mv /opt/sonarqube-8.3.1.34397/ /opt/sonarqube

Sesuaikan credential PostgreSQL di konfigurasi SonarQube, buka /opt/sonarqube-8.3.1.34397/conf/sonar.properties
ubah

#sonar.jdbc.username=
#sonar.jdbc.password=
#sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema

sesuaikan dengan credential yang dibuat diatas

sonar.jdbc.username=sonar
sonar.jdbc.password=9WW3vWrwnCnX3mMf3VVL
sonar.jdbc.url=jdbc:postgresql://localhost/sonar

Buat user SonarQube

Kita akan membuat user baru untuk menjalankan sonarqube, kalo dijalankan sebagai root nanti Elasticsearch akan komplain dengan error can not run elasticsearch as root.
Buat group baru

sudo groupadd sonar

Buat user sonar

sudo useradd -d /opt/sonarqube/ -g sonar sonar

Jalankan sonarqube

sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh start
# untuk mendebug jalankan
sudo -u sonar /opt/sonarqube/bin/linux-x86-64/sonar.sh console

Membuat Service Systemd

Buat file baru di /etc/systemd/system/sonar.service yang berisi

[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=sonar
Group=sonar
Restart=always
 
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

Reload systemd manager

systemctl daemon-reload

Aktifkan daemon SonarQube waktu booting

systemctl enable sonar

Jalankan service SonarQube

systemctl enable sonar

Nginx Reverse Proxy

Untuk mengakses SonarQube kita akan menggunakan nginx sebagai reverse proxy, dengan menggunakan reverse proxy ini kita bisa mengakses SonarQube dari SSL.
Tambahkan repository Nginx

wget -qO - http://nginx.org/keys/nginx_signing.key | apt-key add -
echo "deb http://nginx.org/packages/debian/ $(lsb_release -sc) nginx" >> /etc/apt/sources.list

Update repository

apt update

Install nginx

apt-get install nginx -y

Edit konfigurasi default nginx

server {
    listen       80;
    server_name  sonarqube.jaranguda.com;
 
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;
 
    location / {
        proxy_pass  http://127.0.0.1:9000;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
 
        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 http;
    }
}

restart nginx

systemctl restart nginx

Sekarang buka SonarQube di http://ip-server atau http://nama-domain
tampilan awal sonarqube 8
Default login :
user : admin
password : admin
segera ganti password tersebut setelah anda login pertamakali di http://ip-server/account/security/
sonarqube change default password

Log SonarQube

Log SonarQube baik SonarQube sendiri ataupun ElasticSearch berada di /opt/sonarqube/logs/

Leave a comment

Your email address will not be published. Required fields are marked *