{"id":17386,"date":"2026-02-20T17:29:54","date_gmt":"2026-02-20T11:59:54","guid":{"rendered":"https:\/\/www.skynats.com\/blog\/?p=17386"},"modified":"2026-02-20T17:29:58","modified_gmt":"2026-02-20T11:59:58","slug":"how-to-install-sonarqube-on-ubuntu-24","status":"publish","type":"post","link":"https:\/\/www.skynats.com\/blog\/how-to-install-sonarqube-on-ubuntu-24\/","title":{"rendered":"How to Install SonarQube on Ubuntu 24"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>SonarQube is a leading code quality and security analysis platform for multiple programming languages.<br><\/li>\n\n\n\n<li>Version 25.12 is the latest Community Build, offering updated rules and features.<br><\/li>\n\n\n\n<li>Supports static code analysis, bug detection, and vulnerability scanning in CI\/CD pipelines.<\/li>\n\n\n\n<li>This guide will help you understand the process of Installing SonarQube on <a href=\"https:\/\/ubuntu.com\/blog\/tag\/ubuntu-24-04-lts\" type=\"link\" id=\"https:\/\/ubuntu.com\/blog\/tag\/ubuntu-24-04-lts\" target=\"_blank\" rel=\"noopener\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-secondary-color\">Ubuntu 24<\/mark><\/a> for a secure and efficient setup.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\" id=\"h-install-java-java-21\"><strong>Install Java (Java\u202f21)<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SonarQube 25.12 requires <strong>Java\u202f21<\/strong> as the preferred JDK for the server.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-install-java-21\"><strong>Install Java\u202f21<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install openjdk\u201121\u2011jdk \u2011y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java \u2011version<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\"><strong>Install PostgreSQL<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">sudo apt install postgresql postgresql\u2011contrib \u2011y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create database and user for Sonar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -i -u postgres\npsql<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Inside psql:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE DATABASE sonarqube;\nCREATE USER sonar WITH ENCRYPTED PASSWORD 'YourStrongPass!';\nGRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;\n\\q\nexit<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\"><strong>Create SonarQube User<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">sudo useradd -m -d \/opt\/sonarqube -s \/bin\/bash sonar<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-nbsp-download-and-extract-sonarqube-25-12\"><strong>&nbsp;Download and Extract SonarQube 25.12<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Download the specific version:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\nsudo wget https:\/\/dl.sonarsource.com\/communitybuilds\/sonarqube\/25.12.0.117093\/sonarqube\u201125.12.0.117093.zip\nsudo unzip sonarqube\u201125.12.0.117093.zip\nsudo mv sonarqube\u201125.12.0.117093 sonarqube\nsudo chown -R sonar:sonar sonarqube<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\"><strong>&nbsp;Configure SonarQube<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open the main config:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/opt\/sonarqube\/conf\/sonar.properties<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Update database settings:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sonar.jdbc.username=sonar\nsonar.jdbc.password=YourStrongPass!\nsonar.jdbc.url=jdbc:postgresql:\/\/localhost\/sonarqube<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Specify web host &amp; port:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sonar.web.host=0.0.0.0\nsonar.web.port=9000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save and exit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\"><strong>Set Up systemd Service<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create unit file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/sonarqube.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=SonarQube 25.12 service\nAfter=network.target postgresql.service\n\n&#91;Service]\nType=forking\nExecStart=\/opt\/sonarqube\/bin\/linux\u2011x86\u201164\/sonar.sh start\nExecStop=\/opt\/sonarqube\/bin\/linux\u2011x86\u201164\/sonar.sh stop\nUser=sonar\nGroup=sonar\nRestart=always\nLimitNOFILE=65536\nLimitNPROC=4096\n\n&#91;Install]\nWantedBy=multi\u2011user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reload and enable:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon\u2011reload\nsudo systemctl enable sonarqube\nsudo systemctl start sonarqube<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check status:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status sonarqube<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\"><strong>&nbsp;Access SonarQube<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open browser:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:\/\/&lt;YOUR_SERVER_IP>:9000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Installing SonarQube 25.12 involves Java 21, PostgreSQL, and a dedicated system user for security.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Running SonarQube as a systemd service ensures automatic startup and management.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Using a reverse proxy (Nginx) and optional HTTPS improves accessibility and security.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SonarQube enables continuous code quality monitoring, helping teams detect bugs and vulnerabilities early.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-conclusion\"><strong>Conclusion<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Successfully Installing SonarQube on Ubuntu 24<strong> <\/strong>requires the right server configuration, Java dependencies, database tuning, firewall setup, and performance optimization to ensure smooth code analysis and long-term stability. Even small misconfigurations can impact performance, security, or CI\/CD integration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019re unsure about any step or prefer expert assistance, our certified engineers are here to help. With years of experience in <a href=\"https:\/\/www.skynats.com\/devops-support\/\" type=\"link\" id=\"https:\/\/www.skynats.com\/devops-support\/\">DevOps Support Services<\/a> and enterprise-grade<strong><a href=\"https:\/\/www.skynats.com\/server-management\/\" type=\"link\" id=\"https:\/\/www.skynats.com\/server-management\/\"> <\/a><\/strong><a href=\"https:\/\/www.skynats.com\/server-management\/\" type=\"link\" id=\"https:\/\/www.skynats.com\/server-management\/\">Server Management Services<\/a>, we ensure secure deployment, seamless CI\/CD integration, ongoing monitoring, and performance optimization tailored to your infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whether you need help with initial installation, production hardening, scaling SonarQube for large development teams, or integrating it into your DevOps pipeline, our team provides reliable 24\/7 support to keep your environment stable and efficient.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Get in touch today and let our experts handle your SonarQube deployment with precision and confidence.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Install Java (Java\u202f21) SonarQube 25.12 requires Java\u202f21 as the preferred JDK for the server. Install Java\u202f21 Verify: java \u2011version Install PostgreSQL sudo apt install postgresql postgresql\u2011contrib \u2011y Create database and user for Sonar: Inside psql: Create SonarQube User sudo useradd -m -d \/opt\/sonarqube -s \/bin\/bash sonar &nbsp;Download and Extract SonarQube 25.12 Download the specific version: [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[1244,1064,1242,1241,302,1243],"class_list":["post-17386","post","type-post","status-publish","format-standard","hentry","category-blog","tag-ci-cd-pipelines","tag-devops-support-services","tag-install-java-21","tag-install-postgresql","tag-server-management-services","tag-sonarqube"],"_links":{"self":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts\/17386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/comments?post=17386"}],"version-history":[{"count":2,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts\/17386\/revisions"}],"predecessor-version":[{"id":17389,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts\/17386\/revisions\/17389"}],"wp:attachment":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/media?parent=17386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/categories?post=17386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/tags?post=17386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}