SonarQube ist eine Open-Source-Plattform zur kontinuierlichen Analyse und Verwaltung der Code-Qualität. Sie erkennt Fehler, Sicherheitslücken und verfolgt die Code-Qualität durch statische Analysen mit detaillierten Berichten. SonarQube unterstützt mehrere Programmiersprachen und verbessert die Qualität, Wartbarkeit und Sicherheit des Codes durch umsetzbare Erkenntnisse. Die Plattform ist in zwei Editionen erhältlich: Community und Enterprise.
Diese Anleitung zeigt, wie SonarQube auf Ubuntu 24.04 installiert wird. Sie umfasst die Installation sowie die Nutzung von SonarQube zur Analyse der Code-Qualität anhand von Beispielprojekten auf dem eigenen System.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du über Folgendes verfügst:
- Zugriff auf eine Ubuntu 24.04-Instanz als nicht-root-Sudo-Nutzer.
Passende Infrastruktur bei centron
Ubuntu-Server ohne eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Einrichten einer PostgreSQL-Datenbank für SonarQube
SonarQube benötigt eine PostgreSQL-Datenbank zur Speicherung der Daten. PostgreSQL ist in den Standardpaketquellen von Ubuntu verfügbar. Die folgenden Schritte zeigen, wie PostgreSQL installiert und eine neue Datenbank für SonarQube erstellt wird.
PostgreSQL installieren
Falls PostgreSQL noch nicht auf deinem Ubuntu 24.04 System installiert ist, installiere es mit:
$ sudo apt install -y postgresql-common postgresql -yPostgreSQL für den automatischen Start aktivieren
Aktiviere den automatischen Start des PostgreSQL-Dienstes:
$ sudo systemctl enable postgresqlPostgreSQL starten
Starte den PostgreSQL-Dienst:
$ sudo systemctl start postgresqlPostgreSQL-Rolle für SonarQube erstellen
Melde dich als postgres-Benutzer in der PostgreSQL-Datenbank an:
$ sudo -u postgres psqlErstelle eine neue PostgreSQL-Rolle für SonarQube:
postgres=# CREATE ROLE sonaruser WITH LOGIN ENCRYPTED PASSWORD 'your_password';SonarQube-Datenbank erstellen
Erstelle eine neue Datenbank für SonarQube:
postgres=# CREATE DATABASE sonarqube;Gewähre der Rolle sonaruser alle Berechtigungen für die Datenbank:
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonaruser;Wechsle zur neu erstellten Datenbank:
postgres=# \c sonarqubeGewähre alle Berechtigungen für das öffentliche Schema:
postgres=# GRANT ALL PRIVILEGES ON SCHEMA public TO sonaruser;Verlasse die PostgreSQL-Konsole:
postgres=# \qInstallierung von SonarQube
Da SonarQube nicht in den Standard-Repositories von Ubuntu 24.04 verfügbar ist, muss es manuell installiert werden. Für die korrekte Funktion wird OpenJDK 17 benötigt.
Systempakete aktualisieren
Führe den folgenden Befehl aus, um die Paketliste zu aktualisieren:
$ sudo apt updateOpenJDK 17 installieren
Installiere OpenJDK 17 mit folgendem Befehl:
$ sudo apt install openjdk-17-jdk -yUnzip installieren
Um das SonarQube-Archiv zu extrahieren, installiere Unzip:
$ sudo apt install unzip -yJava-Installation überprüfen
Stelle sicher, dass Java korrekt installiert wurde:
$ java -versionDie Ausgabe sollte ähnlich aussehen:
openjdk version "17.0.14" 2025-01-21
OpenJDK Runtime Environment (build 17.0.14+7-Ubuntu-124.04)
OpenJDK 64-Bit Server VM (build 17.0.14+7-Ubuntu-124.04, mixed mode, sharing)
SonarQube herunterladen und extrahieren
Besuche die SonarQube-Release-Seite, um die neueste Version zu finden, und lade das Archiv herunter:
$ sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.2.0.102705.zipExtrahiere die heruntergeladenen Dateien:
$ unzip sonarqube-25.2.0.102705.zipVerschiebe die extrahierten Dateien in ein systemweites Verzeichnis:
$ sudo mv sonarqube-25.2.0.102705 /opt/sonarqubeDedizierten SonarQube-Benutzer erstellen
Erstelle aus Sicherheitsgründen einen dedizierten Systembenutzer ohne Anmeldeberechtigungen:
$ sudo adduser --system --no-create-home --group --disabled-login sonarqubeGewähre dem neuen Benutzer die Eigentumsrechte am SonarQube-Verzeichnis:
$ sudo chown -R sonarqube:sonarqube /opt/sonarqubeSonarScanner CLI installieren
SonarQube verwendet spezifische Code-Scanner für verschiedene Programmiersprachen. Falls kein spezieller Scanner konfiguriert ist, wird standardmäßig der SonarScanner CLI verwendet. Befolge die folgenden Schritte zur Installation des SonarScanner CLI.
Lade die neueste Version des SonarScanner CLI herunter:
$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-7.0.1.4817-linux-x64.zipExtrahiere das heruntergeladene Archiv:
$ unzip sonar-scanner-cli-7.0.1.4817-linux-x64.zipVerschiebe das extrahierte Verzeichnis nach /opt/sonarscanner:
$ sudo mv sonar-scanner-7.0.1.4817-linux-x64/ /opt/sonarscannerSonarScanner CLI konfigurieren
Öffne die Datei sonar-scanner.properties zur Konfiguration:
$ sudo nano /opt/sonarscanner/conf/sonar-scanner.propertiesSuche die folgende Zeile und ersetze den Standardwert durch 127.0.0.1:
...
sonar.host.url=127.0.0.1
...Speichere die Änderungen und schließe die Datei.
SonarScanner-Berechtigungen setzen
Erteile die erforderlichen Ausführungsrechte für die SonarScanner-Binärdatei:
$ sudo chmod +x /opt/sonarscanner/bin/sonar-scannerErstelle einen symbolischen Link, um SonarScanner systemweit verfügbar zu machen:
$ sudo ln -s /opt/sonarscanner/bin/sonar-scanner /usr/local/bin/sonar-scannerInstallation überprüfen
Führe den folgenden Befehl aus, um die installierte SonarScanner-Version zu überprüfen:
$ sonar-scanner -vDie Ausgabe sollte ähnlich aussehen:
INFO SonarScanner CLI 7.0.1.4817
INFO Java 17.0.13 Eclipse Adoptium (64-bit)
INFO Linux 6.8.0-51-generic amd64
SonarQube Konfiguration aufsetzen
Damit SonarQube effizient arbeitet, ist eine korrekte Konfiguration erforderlich. Dazu gehören die Datenbankverbindung, Anpassungen an der Java-Laufzeitumgebung, Systemoptimierungen und Benutzerzugriffsrechte. Befolge diese Schritte, um SonarQube auf deinem Server richtig einzurichten.
SonarQube-Konfiguration anpassen
Öffne die Hauptkonfigurationsdatei von SonarQube, um die erforderlichen Einstellungen vorzunehmen:
$ sudo nano /opt/sonarqube/conf/sonar.propertiesFüge folgende Konfiguration am Ende der Datei hinzu. Ersetze sonaruser und your_password mit den tatsächlichen PostgreSQL-Zugangsdaten:
sonar.jdbc.username=sonaruser
sonar.jdbc.password=your_password
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
sonar.web.javaAdditionalOpts=-server
sonar.web.host=0.0.0.0
sonar.web.port=9000Speichere die Datei und schließe den Editor. Diese Einstellungen ermöglichen die Verbindung zur PostgreSQL-Datenbank und erlauben Verbindungen über Port 9000.
Systemspeichergrenzen anpassen
Passe die Systemressourcen an, um die Leistung von SonarQube zu optimieren. Öffne die Systemkonfigurationsdatei:
$ sudo nano /etc/sysctl.confFüge die folgenden Zeilen am Ende der Datei hinzu:
vm.max_map_count=524288
fs.file-max=131072Diese Einstellungen optimieren die Leistung von SonarQube:
- vm.max_map_count=524288: Erhöht die Speicherzuweisungen für Elasticsearch.
- fs.file-max=131072: Erhöht die maximalen offenen Dateien für eine stabilere Verarbeitung.
Benutzerressourcen-Limits setzen
Da SonarQube Elasticsearch verwendet, müssen die Ressourcenlimits erhöht werden. Erstelle eine neue Konfigurationsdatei:
$ sudo nano /etc/security/limits.d/99-sonarqube.confFüge folgende Zeilen hinzu:
sonarqube - nofile 131072
sonarqube - nproc 8192Diese Einstellungen verbessern die Stabilität von SonarQube:
- nofile=131072: Erhöht die Anzahl offener Dateien für hohe Arbeitslasten.
- nproc=8192: Erhöht die maximalen Prozesse zur Vermeidung von Engpässen.
Firewall für SonarQube konfigurieren
Erlaube eingehende Verbindungen auf Port 9000:
$ sudo ufw allow 9000/tcpFalls UFW (Uncomplicated Firewall) nicht installiert ist, installiere es und erlaube SSH-Verbindungen:
$ sudo apt install ufw -y && sudo ufw allow 22/tcpLade die Firewall neu, um die Änderungen zu übernehmen:
$ sudo ufw reloadFirewall-Regeln überprüfen
Überprüfe den Firewall-Status, um sicherzustellen, dass die Regeln aktiv sind:
$ sudo ufw statusDie Ausgabe sollte ähnlich wie folgt aussehen:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
9000/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
9000/tcp (v6) ALLOW Anywhere (v6)
SonarQube als Systemdienst einrichten
Um SonarQube effizient auf dem Server zu verwalten, sollte es als Systemdienst eingerichtet werden. Befolge die folgenden Schritte, um SonarQube als systemd-Service zu konfigurieren.
SonarQube-Service-Datei erstellen
Erstelle eine neue systemd-Dienstdatei für SonarQube:
$ sudo nano /etc/systemd/system/sonarqube.serviceFüge die folgende Konfiguration ein, um das Verhalten des Dienstes festzulegen:
[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=sonarqube
Group=sonarqube
PermissionsStartOnly=true
Restart=always
StandardOutput=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
SuccessExitStatus=143
[Install]
WantedBy=multi-user.targetSpeichere und schließe die Datei. Diese Konfiguration stellt sicher, dass SonarQube als Systemdienst verwaltet wird und automatisch gestartet wird.
Systemd neu laden, um Änderungen zu übernehmen
Führe den folgenden Befehl aus, um systemd neu zu laden und die neue Dienstdatei zu aktivieren:
$ sudo systemctl daemon-reloadSonarQube für den automatischen Start aktivieren
Stelle sicher, dass SonarQube bei jedem Systemstart automatisch gestartet wird:
$ sudo systemctl enable sonarqubeSonarQube-Dienst starten
Starte SonarQube manuell, um sicherzustellen, dass es korrekt läuft:
$ sudo systemctl start sonarqubeSonarQube-Dienststatus überprüfen
Überprüfe, ob der SonarQube-Dienst erfolgreich gestartet wurde:
$ sudo systemctl status sonarqubeDie erwartete Ausgabe sollte folgendermaßen aussehen:
● sonarqube.service - SonarQube service
Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; preset: enabled)
Active: active (running) since Thu 2024-12-26 14:12:47 WAT; 2h 54min ago
Process: 1085 ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
Main PID: 1108 (java)
Server neu starten
Um sicherzustellen, dass alle Änderungen übernommen werden und SonarQube korrekt funktioniert, starte den Server neu:
$ sudo reboot nowZugriff auf und Verwaltung von SonarQube
SonarQube bietet eine grafische Weboberfläche zur Verwaltung der Code-Qualität, Projekte, Sicherheitsprobleme und mehr. Befolge die folgenden Schritte, um SonarQube aufzurufen, das Standard-Administratorpasswort zu ändern und einen neuen Benutzer für Code-Scans zu erstellen.
SonarQube-Webinterface öffnen
Öffne deinen Browser und navigiere zur folgenden URL:
http://:9000Melde dich mit den Standard-Anmeldeinformationen an:
- Benutzername:
admin - Passwort:
admin
Administratorpasswort ändern
Nach der Anmeldung wirst du aufgefordert, das Standardpasswort zu ändern. Wähle ein sicheres neues Passwort.
Neuen Benutzer für Code-Scans erstellen
Gehe zu Administration → Security → Users und klicke auf Create User. Fülle die erforderlichen Felder aus und erstelle einen neuen Benutzer.
Erstelle einen API-Token für den neuen Benutzer, indem du in der Spalte Tokens auf das Symbol klickst. Speichere den generierten Token sicher, da dieser für Code-Scans benötigt wird.
Code-Analyse mit SonarScanner ausführen
Nachdem SonarQube eingerichtet wurde, kannst du Code-Scans mit dem SonarScanner durchführen.
Ein Beispielprojekt scannen
Wechsle mit folgendem Befehl in dein Home-Verzeichnis:
$ cdErstelle ein Testprojekt-Verzeichnis:
$ mkdir sonar-example-test && cd sonar-example-testLade ein Beispielprojekt herunter:
$ wget https://github.com/SonarSource/sonar-scanning-examples/archive/master.zip
$ unzip master.zip
$ cd sonar-scanning-examples-master/sonar-scannerFühre die Analyse mit SonarScanner durch (ersetze user-sonar_token mit deinem generierten Token):
$ sonar-scanner -D sonar.token=user-sonar_tokenDie Ausgabe sollte ähnlich wie folgt aussehen:
INFO Analysis total time: 22.116 s
INFO SonarScanner Engine completed successfully
INFO EXECUTION SUCCESS
INFO Total time: 26.095s
Eigene Projekte mit SonarQube scannen
Um eigene Projekte zu scannen, erstelle eine Konfigurationsdatei im Hauptverzeichnis deines Projekts:
$ nano sonar-project.propertiesFüge die folgende Konfiguration ein:
# Eindeutige Projektkennung
sonar.projectKey=MyProject:Key1
# Anzeige-Name in der SonarQube UI
sonar.projectName=First Project
# Versionsnummer der Analyse
sonar.projectVersion=1.0
# Kurzbeschreibung des Projekts
sonar.projectDescription=My First Project
# Zu analysierendes Code-Verzeichnis
sonar.sources=srcSpeichere die Datei und starte die Analyse mit:
$ sonar-scanner -D sonar.token=Die Analyseergebnisse kannst du im SonarQube-Dashboard abrufen.
Fazit
Du hast erfolgreich SonarQube auf einer Ubuntu 24.04-Workstation installiert und konfiguriert. Nun kannst du Code-Scans durchführen und detaillierte Berichte zur Code-Qualität erstellen.
Falls du SonarQube hinter einem Reverse Proxy betreiben möchtest, kannst du Nginx so konfigurieren, dass eingehende Verbindungen sicher auf Port 9000 weitergeleitet werden. Für weiterführende Konfigurationen siehe die SonarQube-Dokumentation.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.