Deploy SonarQube on Alibaba Cloud: Cara Instalasi dan Konfigurasi SonarQube menggunakan Rocky Linux 9

Deploy SonarQube on Alibaba Cloud: Cara Instalasi dan Konfigurasi SonarQube menggunakan Rocky Linux 9

Tools Static Code Analysis Open Source yang membantu meningkatkan kualitas kode dengan mendeteksi bug, kerentanan keamanan, dan juga maintenance kode. Dalam artikel ini, saya akan membahas cara menginstal dan mengonfigurasi SonarQube di Alibaba Cloud menggunakan ECS dan PostgreSQL.

Contents

Mengapa Menggunakan SonarQube?

SonarQube menjadi Tools pendukung yang sangat penting dalam siklus pengembangan perangkat lunak karena beberapa alasan:

  • Deteksi Bug Dini: Menganalisis kode untuk menemukan bug dan masalah keamanan sebelum masuk ke environment Production.
  • Peningkatan Kualitas Kode: Menyediakan laporan detail mengenai Duplicate Code, Complexity Code, dan Standards compliance.
  • Integrasi CI/CD: Bisa dikonfigurasi dengan CI/CD pipeline.
  • Dukungan Multi-Bahasa: SonarQube mendukung berbagai bahasa pemrograman seperti Java, Python, JavaScript, dan lainnya.

Persyaratan Sebelum Instalasi

  • Akun Alibaba Cloud yang aktif
  • Instance ECS dengan Sistem Operasi Rocky Linux 9
  • Akses root atau pengguna dengan hak akses sudo
  • PostgreSQL sebagai database untuk SonarQube

1. Menyiapkan Instance ECS di Alibaba Cloud

Masuk ke Alibaba Cloud dan buat instance ECS dengan spesifikasi berikut:

  • OS: Rocky Linux 9
  • CPU: Minimal 2 vCPU
  • RAM: 4GB atau lebih
  • Storage: 20GB atau lebih

2. Pengaturan Konfigurasi Rocky Linux 9

Sebelum instalasi Sonarqube di Rocky Linux 9, anda perlu melakukan konfigurasi seperti, menonaktifkan selinux, membuat user sonar, dan juga menaikan virtual memory java, agar Sonarqube dapat berjalan dengan normal.

2.1 Nonaktifkan Selinux

Jalankan perintah berikut untuk mengubah konfigurasi Selinux di Rocky Linux 9.

Bash

sudo vi /etc/selinux/config

Ubah parameter SELINUX=enforcing menjadi SELINUX=disabled, lalu simpan dan restart server, agar konfigurasi yang sudah dilakukan dapat diterapkan.

Output Result:

Verifikasi Selinux sudah dinonaktifkan dengan cara menjalankan perintah berikut:

2.2 Buat User Sonar

Kemudian buatlah user dengan nama sonar dengan menjalankan perintah dibawah ini:

Bash

sudo useradd sonar

Setelah itu berikan katasandi untuk user sonar

Lalu, tambahkan user sonar ke grup wheel di Rocky Linux 9

Bash

sudo usermod -aG wheel sonar

2.3 Tingkatkan Virtual Java Memory

Meningkatkan java virtual memory ini penting untuk memastikan bahwa sonarqube dapat berjalan dengan lancar tanpa masalah terkait memory mapping atau file descriptor.

Edit file /etc/sysctl.conf menggunakana text editor nano/vim.

Bash

sudo vi /etc/sysctl.conf

Tambahkan baris berikut, lalu simpan konfigurasi sysctl.conf.

vm.max_map_count = 262144
fs.file-max = 65536

Terapkan konfigurasi sysctl dengan menjalankan perintah berikut:

Bash

sudo sysctl --system

3. Instalasi Java 17

Sonarqube server membutuhkan Java versi 17 agar dapat berjalan dengan normal, untuk itu anda perlu melakukan instalasi java 17 di Rocky Linux 9.

Bash

sudo dnf install java-17-openjdk java-17-openjdk-devel -y

Jika sudah selesai instalasi java, lalu verifikasi java 17 telah terinstal dengan cara menjalankan perintah berikut:

Output Result:

4. Instalasi Database PostgreSQL 15

Selanjutnya instalasi dan konfigurasi Database PostgreSQL 15.

Nonaktifkan module bawaan postgresql di rocky linux dengan menjalankan perintah ini:

Bash

sudo dnf -qy module disable postgresql

Tambahkan repositori PostgreSQL 15.

Bash

sudo dnf install -y 

Jalankan perintah berikut untuk instalasi PostgreSQL versi 15

Bash

sudo dnf install -y postgresql15-server

Kemudian, inisialiasi database dengan perintah ini.

Bash

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

Aktifkan service postgresql database pada saat boot dan jalankan service postgresql, serta periksa service postgresql berjalan dengan normal.

Bash

sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
sudo systemctl status postgresql-15

4.1 Konfigurasi Database PostgreSQL

Selanjutnya adalah konfigurasi lanjutan postgresql database seperti: membuat user database, katasandi database dan juga mengganti timezone ke Asia/Jakarta.

Masuk ke console postgresql dengan cara berikut:

Bash

sudo -u postgres psql

Buat username database sonar, berikan katasandi untuk user sonar dan grant permission untuk user sonar.

Bash

CREATE USER sonar WITH ENCRYPTED PASSWORD 'MyP4ssw0rd';
CREATE DATABASE sonarqube OWNER sonar;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;
\q

Ganti timezone yang awal nya UTC menjadi timezone Jakarta.

Bash

sudo sed -i "s/^timezone = .*/timezone = 'Asia\/Jakarta'/" /var/lib/pgsql/15/data/postgresql.conf

Terakhir ganti metode otentifikasi scram-sha-256 menjadi md5 pada file pg_hba.conf

Bash

sudo vi /var/lib/pgsql/15/data/pg_hba.conf

Ganti metode otentifikasi menjadi md5,kemudian simpan konfigurasi.

Bash

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

Restart database, agar konfigurasi yang sudah dilakukan sebelumnya dapat diterapkan.

Bash

sudo systemctl restart postgresql-15

5. Instalasi SonarQube

Instal tools pendukung yaitu: wget untuk mengunduh file sonarqube dan juga unzip mengekstrak file sonarqube yang sudah di unduh.

Bash

sudo dnf install unzip wget -y

Unduh dan extrak file Sonarqube

Bash

cd /opt
wget  /opt/
unzip sonarqube-25.3.0.104237.zip
mv sonarqube-25.3.0.104237.zip sonarqube

5.1 Konfigurasi SonarQube

Selanjutnya adalah konfigurasi credentials sonarqube dengan mengedit file sonar.properties dan isi Username Database, Kata sandi Database dan URL Database.

Bash

sudo vi /opt/sonarqube/conf/sonar.properties

Tambahkan baris berikut dan sesuaikan dengan credentials database PostgreSQL yang sudah dibuat sebelumnya, lalu simpan konfigurasi.

Bash

sonar.jdbc.username=sonar
sonar.jdbc.password=MyP4ssw0rd
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

Ganti hak akses folder beserta file SonarQube secara rekursif kepada user sonar

Bash

sudo chown -R sonar:sonar /opt/sonarqube

Buat systemd “services” file dengan nama sonarqube.service

Bash

sudo vi /etc/systemd/system/sonarqube.service

Kemudian ikuti dan isi konten dibawah ini, dan simpan konfigurasi systemd sonarqube.

Bash

[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
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

Start service sonarqube dan Aktifkan service pada saat boot server.

Bash

sudo systemctl daemon-reload
sudo systemctl enable sonarqube.service
sudo systemctl start sonarqube.service
sudo systemctl status sonarqube.service

6. Setup dan konfigurasi Domain dan SSL SonarQube

Langkah berikut ini adalah setup dan konfigurasi Domain serta SSL menggunakan Lets’Encrypt pada SonarQube.

6.1 Instalasi Nginx Web Server

Buat file dengan nama nginx.repo di folder yum repositori.

Bash

sudo vi /etc/yum.repos.d/nginx.repo

Lalu, tambahkan repositori nginx berikut ini, dan simpan konfigurasi repositori tersebut.

Bash

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=
module_hotfixes=true

Kemudin instal Nginx Web Server dengan perintah berikut.

Bash

sudo dnf install nginx -y

Start Nginx service, dan nyalakan service nginx pada saat boot.

Bash

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

6.2 Konfigurasi Nginx Server Blocks Domain

Buat file dengan nama sonarqube.conf

Bash

sudo vi /etc/nginx/conf.d/sonarqube.conf

Setelah itu ikuti konfigurasi dibawah ini, dan simpan konfigurasi tersebut.

Bash

server {
    # Change this to your dns domain
    server_name sonarqube.example.dev;
    listen      80;
    listen      [::]:80;
    client_max_body_size   50M;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;

    # security headers
    add_header X-XSS-Protection          "1; mode=block" always;
    add_header X-Content-Type-Options    "nosniff" always;
    add_header Referrer-Policy           "strict-origin-when-cross-origin" always;
    add_header Content-Security-Policy   "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    #log
    access_log  /var/log/nginx/sonarqube.access.log combined buffer=512k flush=1m;
    error_log   /var/log/nginx/sonarqube.error.log warn;

    # gzip compression
    gzip            on;
    gzip_vary       on;
    gzip_proxied    any;
    gzip_comp_level 6;
    gzip_types      text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

    #proxy sonarqube
    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;
    }
}

Validasi konfigurasi server blocks dan reload nginx

Bash

sudo nginx -t
sudo nginx -s reload

6.3 Generate SSL Certificate Let’s Encrypt

Instal Epel repository dengan menjalankan perintah berikut.

Bash

sudo dnf install -y  \
 \

Selanjutnya instal certbot nginx, dengan mengikuti perintah dibawah ini.

Bash

sudo dnf install yum-utils certbot python3-certbot-nginx -y

Terakhir generate SSL certificate dengan menjalankan perintah ini, lalu ikuti petunjuk sampai selesai.

7. Akses SonarQube Dashboard

Buka browser menggunakan Google Chrome atau Mozilla Firefox dan akses:
contoh:

Login menggunakan default credential:

Username: admin
Password: admin

Screenshots:

Referensi:
Dengan mengikuti langkah-langkah di atas, Anda telah berhasil menginstal dan mengonfigurasi SonarQube di Alibaba Cloud menggunakan ECS dan PostgreSQL. SonarQube sebagai Tools pendukung untuk Developer dalam mendeteksi bug, meningkatkan kualitas kode, Standarisasi Kode dan juga dapat di integrasikan dengan CI/CD Pipeline.

Referensi:

PakarPBN

A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.

In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.

The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.

Jasa Backlink

Download Anime Batch

Comments

No comments yet. Why don’t you start the discussion?

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *