How to setup SonarQube Server on Linux local system

What is SonarQube?

  • It is open source Static Code analysis tool which is used by developer to manage source code quality and consistency.
  • SonarQube work with 25 different languages like Java (including Android), C#, C/C++, JavaScript, TypeScript, Python, Go, Swift, COBOL, Apex, PHP, Kotlin, Ruby, Scala, HTML, CSS, ABAP, Flex, Objective-C, PL/I, PL/SQL, RPG, T-SQL, VB.NET, VB6, and XML. Some of these are only available via a commercial license.

Please find list of Static testing tool given below:

  • Finds errors earlier
  • Detect Overcomplexity in the code
  • Find Security errors
  • Enforces Best coding Practices
  • Automated and integrated in Jenkis
  • Can create Project Specific rules

Please find list of Quality checks included given below:

  • Potential Bugs
  • Code defects to design inefficiency
  • Code duplication
  • Lack of code coverage
  • Excess Complexity

Please find the List of Features of SonarQube given below:

  • Detect Bugs
  • Code Smells ( Technical Debt, Code practices )
  • Security Vulnerability
  • Activate Rules needed
  • Execution Path (Dataflow )
  • Automated Code analysis
  • Get access through webhooks and API
  • Integrate with Github
  • Analyze branches
  • Discover Memory leak
  • Good Visualizer
  • Enforces Quality Gate
  • Digs into issues
  • Plugins for the IDE

How to setup the SonarQube in a local machine?

It includes multiple steps given below:

1) Install and configure PostgreSQL

Install the PostgreSQL repository.

sudo sh -c 'echo "deb `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' 


Install the PostgreSQL database server by running:

wget -q -O - | sudo apt-key add - sudo apt-get -y install postgresql postgresql-contrib


Start PostgreSQL server and enable it to start automatically at boot time by running:

sudo systemctl start postgresql sudo systemctl enable postgresql


Change the password for the default PostgreSQL user.

sudo passwd postgres


Switch to the postgres user.

su - postgres


Create a new user by typing:

createuser sonar


Switch to the PostgreSQL shell.



Set a password for the newly created user for SonarQube database.

ALTER USER sonar WITH ENCRYPTED password 'P@ssword';


Create a new database for PostgreSQL database by running:



Exit from the psql shell:



Switch back to the sudo user by running the exit command.



2) Download and configure SonarQube

Download the SonarQube installer files archive. (version will be vary based on latest one so you can update last name based on that)



You can always look for the link to the latest version of the application on the SonarQube download page. Install unzip by running:

apt-get -y install unzip


Unzip the archive using the following command.

sudo unzip -d /opt


Rename the directory:

sudo mv /opt/sonarqube-7.3 /opt/sonarqube


Assign permissions to administrator user for directory /opt/sonarqube

sudo chown -R administrator:administrator /opt/sonarqube/


Open the SonarQube configuration file using your favorite text editor.

sudo nano /opt/sonarqube/conf/


Find the following lines.

#sonar.jdbc.username= #sonar.jdbc.password=


Uncomment and provide the PostgreSQL username and password of the database that we have created earlier. It should look like:

sonar.jdbc.username=sonar sonar.jdbc.password=P@ssword


Next, find:


Uncomment the line, save the file and exit from the editor.


Finally, tell SonarQube to run in server mode :



3) Configure Systemd service

SonarQube can be started directly using the startup script provided in the installer package. As a matter of convenience, you should setup a Systemd unit file for SonarQube.

sudo nano /etc/systemd/system/sonar.service


Please copy and paste below content in this file:

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


Start the application by running:

sudo systemctl start sonar


Enable the SonarQube service to automatically start at boot time.

sudo systemctl enable sonar


To check if the service is running, run:

sudo systemctl status sonar

4) Install and Configure NGINX

SonarQube is web based tool, so we need to setup web-server to run it. To install the web server to find the command listed below:

sudo apt-get install nginx -y


Start Nginx server:

sudo systemctl start nginx


Enable Nginx to run at the system startup

sudo systemctl enable nginx


Create configuration file in Nginx

sudo nano /etc/nginx/sites-enabled/sonarqube.conf

Paste the below detail in that file


listen 9000;

access_log /var/log/nginx/sonar.access.log;

error_log /var/log/nginx/sonar.error.log;

proxy_buffers 16 64k;

proxy_buffer_size 128k;

location / {


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;



Save this file and exit from there. Now, restart the Nginx service with below command

sudo systemctl restart nginx


Now, SonarQube is ready to access on “http://localhost:9000”. If you will get any error while accessing then refresh it after some time as SonarQube service might take time to start.



Now, you can access and perform tasks on SonarQube panel with the credentials set in the top. It is require to change password which we set default for the admin. Now, you can setup the project and scan using the Sonascanner and see reports for the code standard in the panel.


If you want to check the installation and execution of Sonar scanner then visit the “How to setup and Run SonarScanner on Linux local system” blog.

Leave a Reply

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