SonarQube auf Ubuntu 24.04 installieren
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.
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 -y
PostgreSQL für den automatischen Start aktivieren
Aktiviere den automatischen Start des PostgreSQL-Dienstes:
$ sudo systemctl enable postgresql
PostgreSQL starten
Starte den PostgreSQL-Dienst:
$ sudo systemctl start postgresql
PostgreSQL-Rolle für SonarQube erstellen
Melde dich als postgres-Benutzer in der PostgreSQL-Datenbank an:
$ sudo -u postgres psql
Erstelle 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 sonarqube
Gewähre alle Berechtigungen für das öffentliche Schema:
postgres=# GRANT ALL PRIVILEGES ON SCHEMA public TO sonaruser;
Verlasse die PostgreSQL-Konsole:
postgres=# \q
Installierung 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 update
OpenJDK 17 installieren
Installiere OpenJDK 17 mit folgendem Befehl:
$ sudo apt install openjdk-17-jdk -y
Unzip installieren
Um das SonarQube-Archiv zu extrahieren, installiere Unzip:
$ sudo apt install unzip -y
Java-Installation überprüfen
Stelle sicher, dass Java korrekt installiert wurde:
$ java -version
Die 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.zip
Extrahiere die heruntergeladenen Dateien:
$ unzip sonarqube-25.2.0.102705.zip
Verschiebe die extrahierten Dateien in ein systemweites Verzeichnis:
$ sudo mv sonarqube-25.2.0.102705 /opt/sonarqube
Dedizierten SonarQube-Benutzer erstellen
Erstelle aus Sicherheitsgründen einen dedizierten Systembenutzer ohne Anmeldeberechtigungen:
$ sudo adduser --system --no-create-home --group --disabled-login sonarqube
Gewähre dem neuen Benutzer die Eigentumsrechte am SonarQube-Verzeichnis:
$ sudo chown -R sonarqube:sonarqube /opt/sonarqube
SonarScanner 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.zip
Extrahiere das heruntergeladene Archiv:
$ unzip sonar-scanner-cli-7.0.1.4817-linux-x64.zip
Verschiebe das extrahierte Verzeichnis nach /opt/sonarscanner
:
$ sudo mv sonar-scanner-7.0.1.4817-linux-x64/ /opt/sonarscanner
SonarScanner CLI konfigurieren
Öffne die Datei sonar-scanner.properties
zur Konfiguration:
$ sudo nano /opt/sonarscanner/conf/sonar-scanner.properties
Suche 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-scanner
Erstelle einen symbolischen Link, um SonarScanner systemweit verfügbar zu machen:
$ sudo ln -s /opt/sonarscanner/bin/sonar-scanner /usr/local/bin/sonar-scanner
Installation überprüfen
Führe den folgenden Befehl aus, um die installierte SonarScanner-Version zu überprüfen:
$ sonar-scanner -v
Die 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.properties
Fü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=9000
Speichere 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.conf
Füge die folgenden Zeilen am Ende der Datei hinzu:
vm.max_map_count=524288 fs.file-max=131072
Diese 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.conf
Füge folgende Zeilen hinzu:
sonarqube - nofile 131072 sonarqube - nproc 8192
Diese 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/tcp
Falls UFW (Uncomplicated Firewall) nicht installiert ist, installiere es und erlaube SSH-Verbindungen:
$ sudo apt install ufw -y && sudo ufw allow 22/tcp
Lade die Firewall neu, um die Änderungen zu übernehmen:
$ sudo ufw reload
Firewall-Regeln überprüfen
Überprüfe den Firewall-Status, um sicherzustellen, dass die Regeln aktiv sind:
$ sudo ufw status
Die 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.service
Fü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.target
Speichere 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-reload
SonarQube für den automatischen Start aktivieren
Stelle sicher, dass SonarQube bei jedem Systemstart automatisch gestartet wird:
$ sudo systemctl enable sonarqube
SonarQube-Dienst starten
Starte SonarQube manuell, um sicherzustellen, dass es korrekt läuft:
$ sudo systemctl start sonarqube
SonarQube-Dienststatus überprüfen
Überprüfe, ob der SonarQube-Dienst erfolgreich gestartet wurde:
$ sudo systemctl status sonarqube
Die 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 now
Zugriff 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://:9000
Melde 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:
$ cd
Erstelle ein Testprojekt-Verzeichnis:
$ mkdir sonar-example-test && cd sonar-example-test
Lade ein Beispielprojekt herunter:
$ wget https://github.com/SonarSource/sonar-scanning-examples/archive/master.zip $ unzip master.zip $ cd sonar-scanning-examples-master/sonar-scanner
Führe die Analyse mit SonarScanner durch (ersetze user-sonar_token
mit deinem generierten Token):
$ sonar-scanner -D sonar.token=user-sonar_token
Die 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.properties
Fü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=src
Speichere 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.