![]() |
|
Cara Instalasi dan Konfigurasi SonarQube menggunakan Rocky Linux 9
SonarQube adalah Tools Static Code Analysis 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.
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
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:
sudo sestatus
2.2 Buat User Sonar
Kemudian buatlah user dengan nama sonar
dengan menjalankan perintah dibawah ini:
sudo useradd sonar
Setelah itu berikan katasandi untuk user sonar
passwd sonar
Lalu, tambahkan user sonar ke grup wheel di Rocky Linux 9
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.
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:
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
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:
java --version
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:
sudo dnf -qy module disable postgresql
Tambahkan repositori PostgreSQL 15
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Jalankan perintah berikut untuk instalasi PostgreSQL versi 15
sudo dnf install -y postgresql15-server
Kemudian, inisialiasi database dengan perintah ini.
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.
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:
sudo -u postgres psql
Buat username database sonar
, berikan katasandi untuk user sonar dan grant permission untuk user sonar.
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.
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
sudo vi /var/lib/pgsql/15/data/pg_hba.conf
Ganti metode otentifikasi menjadi md5,kemudian simpan konfigurasi.
# IPv4 local connections: host all all 127.0.0.1/32 md5
Restart database, agar konfigurasi yang sudah dilakukan sebelumnya dapat diterapkan.
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.
sudo dnf install unzip wget -y
Unduh dan extrak file Sonarqube
cd /opt wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.3.0.104237.zip /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.
sudo vi /opt/sonarqube/conf/sonar.properties
Tambahkan baris berikut dan sesuaikan dengan credentials database PostgreSQL yang sudah dibuat sebelumnya, lalu simpan konfigurasi.
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
sudo chown -R sonar:sonar /opt/sonarqube
Buat systemd "services" file dengan nama sonarqube.service
sudo vi /etc/systemd/system/sonarqube.service
Kemudian ikuti dan isi konten dibawah ini, dan simpan konfigurasi systemd sonarqube.
[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.
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.
sudo vi /etc/yum.repos.d/nginx.repo
Lalu, tambahkan repositori nginx berikut ini, dan simpan konfigurasi repositori tersebut.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Kemudin instal Nginx Web Server dengan perintah berikut.
sudo dnf install nginx -y
Start Nginx service, dan nyalakan service nginx pada saat boot.
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
sudo vi /etc/nginx/conf.d/sonarqube.conf
Setelah itu ikuti konfigurasi dibawah ini, dan simpan konfigurasi tersebut.
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
sudo nginx -t sudo nginx -s reload
6.3 Generate SSL Certificate Let's Encrypt
Instal Epel repository dengan menjalankan perintah berikut.
sudo dnf install -y \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \ https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
Selanjutnya instal certbot nginx, dengan mengikuti perintah dibawah ini.
sudo dnf install yum-utils certbot python3-certbot-nginx -y
Terakhir generate SSL certificate dengan menjalankan perintah ini, lalu ikuti petunjuk sampai selesai.
sudo certbot
7. Akses SonarQube Dashboard
Buka browser menggunakan Google Chrome atau Mozilla Firefox dan akses:
https://sonarqube.example.com
Login menggunakan default credential:
Username: admin
Password: admin
Screenshots:
![]() |
|
![]() |
|
Kesimpulan
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.