SonarQube auf Rocky Linux 9 installieren
SonarQube ist ein selbstgehostetes, quelloffenes Tool zur statischen Codeanalyse, das dabei hilft, Programmfehler, Sicherheitslücken und Code-Smells in Anwendungen zu erkennen. Es unterstützt zahlreiche Programmiersprachen und führt automatisierte Codeüberprüfungen durch, um hohe Qualitätsstandards im Entwicklungsprozess zu gewährleisten. Da SonarQube auf Java basiert, kann es auf verschiedenen Betriebssystemen sowie in Containern wie Docker oder Kubernetes betrieben werden.
Diese Anleitung zeigt Schritt für Schritt, wie du SonarQube auf Rocky Linux 9 installierst und konfigurierst. Du lernst, alle benötigten Abhängigkeiten zu installieren und SonarQube für die Codeanalyse in deinen Projekten einzurichten.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass die folgenden Anforderungen erfüllt sind:
- Ein Rocky Linux 9 System mit mindestens 4 GB RAM.
- Ein Domain-A-Record, der auf die IP-Adresse deines Servers zeigt, z. B.
sonarqube.example.com.
OpenJDK 17 installieren
SonarQube benötigt sowohl die Java Runtime Environment (JRE) als auch das Java Development Kit (JDK). Die aktuelle LTA-Version (Long-Term Active) von SonarQube für 2025 erfordert Java 17 oder 21. Führe die folgenden Schritte aus, um OpenJDK 17 auf Rocky Linux 9 zu installieren.
Schritt 1: Paketindex aktualisieren
$ sudo dnf update -y
Schritt 2: OpenJDK 17 installieren
$ sudo dnf install java-17-openjdk java-17-openjdk-devel -y
Schritt 3: Java-Version prüfen
$ java -version
Erwartete Ausgabe:
openjdk version "17.0.14" 2025-01-21 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.14.0.7-1) (build 17.0.14+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.14.0.7-1) (build 17.0.14+7-LTS, mixed mode, sharing)
Falls eine niedrigere Java-Version installiert ist, kannst du mit folgendem Befehl auf die richtige Version wechseln:
$ sudo alternatives --config java
Einen dedizierten SonarQube-Benutzer anlegen
SonarQube verwendet Elasticsearch für Indexierung und Suche. Dafür wird ein nicht-root Benutzer benötigt. Erstelle den Benutzer wie folgt:
$ sudo useradd --system sonarqube
Damit wird der Systembenutzer sonarqube erstellt, unter dem die Anwendung sicher ausgeführt wird.
PostgreSQL-Datenbank für SonarQube erstellen
SonarQube unterstützt verschiedene Datenbanksysteme – empfohlen wird PostgreSQL, da es Stabilität und erweiterte SQL-Funktionen bietet. So installierst du PostgreSQL und richtest eine Datenbank für SonarQube ein:
Schritt 1: PostgreSQL-Pakete installieren
$ sudo dnf install postgresql-server postgresql-contrib -y
Schritt 2: PostgreSQL initialisieren
$ sudo postgresql-setup --initdb
Schritt 3: PostgreSQL aktivieren und starten
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
Schritt 4: Benutzer und Datenbank konfigurieren
Melde dich an der PostgreSQL-Konsole an und erstelle die Datenbankkonfiguration für SonarQube:
$ sudo -i -u postgres psql
Führe dann diese Befehle in PostgreSQL aus:
postgres=# \password postgres
postgres=# CREATE DATABASE sonardb;
postgres=# CREATE USER sonaruser WITH ENCRYPTED PASSWORD '';
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonardb TO sonaruser;
postgres=# \q
Schritt 5: Authentifizierungsmethode in PostgreSQL anpassen
Öffne die Datei pg_hba.conf, um Passwortauthentifizierung zu aktivieren:
$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Ändere die Einträge wie folgt:
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Speichere die Änderungen und starte PostgreSQL neu:
$ sudo systemctl restart postgresql
SonarQube installieren
Da SonarQube nicht im Standard-DNF-Repository enthalten ist, kannst du es manuell herunterladen und installieren. Folge diesen Schritten:
Schritt 1: Unzip installieren
$ sudo dnf install unzip -y
Schritt 2: Verzeichnis für SonarQube erstellen
$ sudo mkdir -p /opt/sonarqube
Schritt 3: SonarQube herunterladen und entpacken
$ cd /tmp
$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.1.0.102122.zip
$ unzip sonarqube-25.1.0.102122.zip
$ sudo mv sonarqube-25.1.0.102122/* /opt/sonarqube
SonarScanner CLI installieren
Der SonarScanner CLI wird benötigt, um Code-Analysen durchzuführen und Ergebnisse an den SonarQube-Server zu senden. Installiere ihn mit folgenden Schritten:
Schritt 1: Verzeichnis für SonarScanner erstellen
$ sudo mkdir -p /opt/sonarscanner
Schritt 2: SonarScanner herunterladen und entpacken
$ cd /tmp
$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-7.0.2.4839-linux-x64.zip
$ unzip sonar-scanner-cli-7.0.2.4839-linux-x64.zip
$ sudo mv sonar-scanner-7.0.2.4839-linux-x64/* /opt/sonarscanner
Schritt 3: SonarScanner konfigurieren
Öffne die Konfigurationsdatei und trage die Host-URL ein:
$ sudo nano /opt/sonarscanner/conf/sonar-scanner.properties
Füge folgende Zeile hinzu:
sonar.host.url=http://127.0.0.1
Schritt 4: SonarScanner ausführbar machen
$ sudo chmod +x /opt/sonarscanner/bin/sonar-scanner
$ sudo ln -s /opt/sonarscanner/bin/sonar-scanner /usr/local/bin/sonar-scanner
Schritt 5: Installation prüfen
$ sonar-scanner -v
Erwartete Ausgabe:
INFO SonarScanner CLI 7.0.2.4839
INFO Java 17.0.13 Eclipse Adoptium (64-bit)
INFO Linux 5.14.0-503.29.1.el9_5.x86_64 amd64
SonarQube konfigurieren
Führe die folgenden Schritte aus, um SonarQube korrekt auf deinem Rocky Linux 9 Server einzurichten.
Schritt 1: Konfigurationsdatei anpassen
Öffne die Datei /opt/sonarqube/conf/sonar.properties, um die Einstellungen zu ändern:
$ sudo nano /opt/sonarqube/conf/sonar.properties
Füge am Ende der Datei folgende Parameter hinzu (ersetze sonaruser, sonardb und <YOUR_PASSWORD> durch deine PostgreSQL-Daten):
sonar.jdbc.username=sonaruser
sonar.jdbc.password=<YOUR_PASSWORD>
sonar.jdbc.url=jdbc:postgresql://localhost/sonardb
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.javaOpts=-Xmx512m -Xms256m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx1g -Xms1g -XX:MaxDirectMemorySize=512m -XX:+HeapDumpOnOutOfMemoryError
sonar.path.data=data
sonar.path.temp=temp
Diese Parameter legen die PostgreSQL-Verbindung, die Standardadresse (0.0.0.0), Java-Optionen und Speicherpfade fest.
Schritt 2: Verzeichnisrechte anpassen
Übertrage die Besitzrechte des SonarQube-Verzeichnisses an den Benutzer sonarqube:
$ sudo chown --recursive sonarqube:sonarqube /opt/sonarqube
Anschließend setze die Zugriffsrechte auf 775, um dem Eigentümer vollen Zugriff zu geben:
$ sudo chmod --recursive 775 /opt/sonarqube
Schritt 3: Kernel-Speicherparameter anpassen
SonarQube benötigt bestimmte Systemparameter für eine stabile Performance. Öffne dazu die Datei /etc/sysctl.conf:
$ sudo nano /etc/sysctl.conf
Füge folgende Werte hinzu:
vm.max_map_count=524288
fs.file-max=131072
Speichere die Änderungen und lade die Kernelkonfiguration neu:
$ sudo sysctl -p
Einen SonarQube-Systemdienst erstellen
SonarQube enthält ein Startskript (sonar.sh), das sich über systemd verwalten lässt, um den automatischen Start zu ermöglichen. Folge diesen Schritten, um einen SonarQube-Dienst zu erstellen und zu aktivieren.
Schritt 1: SELinux-Kontext anpassen
Passe den SELinux-Kontext des SonarQube-Skripts an, damit es korrekt ausgeführt werden kann.
$ sudo chcon -t bin_t /opt/sonarqube/bin/linux-x86-64/sonar.sh
$ sudo restorecon -Rv /opt/sonarqube
Schritt 2: Dienstdatei für SonarQube erstellen
Erstelle unter /etc/systemd/system/ eine neue Datei sonarqube.service, um SonarQube als Hintergrunddienst zu verwalten.
$ sudo nano /etc/systemd/system/sonarqube.service
Füge folgenden Inhalt hinzu:
[Unit]
Description=SonarQube Service
After=syslog.target network.target
[Service]
Type=forking
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
Restart=always
RestartSec=10
LimitNOFILE=131072
LimitNPROC=8192
SuccessExitStatus=143
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
Diese Konfiguration sorgt dafür, dass SonarQube unter dem Benutzer sonarqube automatisch gestartet und gestoppt werden kann.
Schritt 3: Dienst aktivieren und starten
Lade die Systemd-Dienste neu, aktiviere SonarQube beim Systemstart und starte den Dienst.
$ sudo systemctl daemon-reload
$ sudo systemctl enable sonarqube
$ sudo systemctl start sonarqube
Überprüfe anschließend, ob der Dienst korrekt läuft:
$ sudo systemctl status sonarqube
Beispielausgabe:
● sonarqube.service - SonarQube Service
Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled)
Active: active (running) since Thu 2025-04-03 17:46:16 UTC; 12s ago
Main PID: 80453 (java)
Tasks: 120 (limit: 48879)
Memory: 1.8G
CPU: 37.191s
Apache als Reverse Proxy für SonarQube konfigurieren
Die Weboberfläche von SonarQube läuft standardmäßig auf Port 9000. Mit Apache kannst du einen Reverse Proxy einrichten, um Anfragen über die Standardports HTTP oder HTTPS sicher weiterzuleiten.
Schritt 1: Apache installieren und aktivieren
$ sudo dnf install httpd -y
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
Schritt 2: Benötigte Apache-Module aktivieren
Überprüfe, ob die Proxy-Module aktiv sind.
$ sudo httpd -M | grep proxy
Sollten Module fehlen, öffne die Apache-Konfigurationsdatei und aktiviere sie:
$ sudo nano /etc/httpd/conf/httpd.conf
Entkommentiere oder füge folgende Zeilen hinzu:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
Schritt 3: Virtuellen Host für SonarQube erstellen
Lege unter /etc/httpd/conf.d/ eine neue Apache-Konfigurationsdatei sonarqube.conf an:
$ sudo nano /etc/httpd/conf.d/sonarqube.conf
Füge den folgenden Inhalt hinzu und ersetze sonarqube.example.com durch deine Domain:
<VirtualHost *:80>
ServerName sonarqube.example.com
ServerAdmin admin@sonarqube.example.com
ProxyPreserveHost On
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/
TransferLog /var/log/httpd/access.log
ErrorLog /var/log/httpd/error.log
</VirtualHost>
Schritt 4: Apache testen und neu starten
Überprüfe die Konfiguration auf Syntaxfehler, starte den Dienst neu und erlaube Netzwerkzugriffe über die Firewall.
$ sudo apachectl configtest
$ sudo systemctl restart httpd
$ sudo setsebool -P httpd_can_network_connect 1
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
SonarQube mit vertrauenswürdigen SSL-Zertifikaten absichern
Standardmäßig leitet Apache HTTP-Anfragen an SonarQube auf Port 9000 weiter. Da HTTP jedoch unverschlüsselt ist, solltest du HTTPS aktivieren, um eine sichere, verschlüsselte Verbindung zwischen Client und Server herzustellen. Im Folgenden wird beschrieben, wie du mit Let’s Encrypt ein gültiges SSL-Zertifikat einrichtest.
Schritt 1: Certbot für Apache installieren
Installiere den Let’s Encrypt-Client Certbot für Apache, um automatisch SSL-Zertifikate zu generieren und zu verwalten.
$ sudo dnf install certbot python3-certbot-apache -y
Schritt 2: SSL-Zertifikate generieren
Erstelle mit Certbot ein neues SSL-Zertifikat für deine SonarQube-Domain. Ersetze dabei sonarqube.example.com und admin@sonarqube.example.com durch deine eigene Domain und E-Mail-Adresse.
$ sudo certbot --apache -d sonarqube.example.com -m admin@sonarqube.example.com --agree-tos
Schritt 3: HTTPS in der Firewall aktivieren
Erlaube HTTPS-Verbindungen durch die Firewall und lade die Konfiguration neu.
$ sudo firewall-cmd --add-service=https --permanent
$ sudo firewall-cmd --reload
SELinux für SonarQube konfigurieren
SELinux ist auf Rocky Linux 9 standardmäßig aktiviert und kann verhindern, dass Apache auf Dateien im SonarQube-Verzeichnis zugreift. Mit den folgenden Schritten konfigurierst du SELinux korrekt.
Schritt 1: SELinux-Status prüfen
Überprüfe, ob SELinux aktiv ist und im Modus „enforcing“ läuft.
$ sestatus
Erwartete Ausgabe:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Schritt 2: Verzeichnis-Kontext überprüfen
Überprüfe, ob das SELinux-Kontextlabel für das Verzeichnis /opt/sonarqube korrekt gesetzt ist, damit der Zugriff erlaubt ist.
$ ls -lZ /opt/sonarqube
Erwartete Ausgabe:
drwxrwxr-x. 6 sonarqube sonarqube unconfined_u:object_r:bin_t:s0 4096 Jan 7 10:30 bin
drwxrwxr-x. 2 sonarqube sonarqube unconfined_u:object_r:usr_t:s0 4096 Jan 7 10:30 conf
drwxrwxr-x. 4 sonarqube sonarqube unconfined_u:object_r:usr_t:s0 4096 Apr 22 18:18 data
Schritt 3: Netzwerkzugriff für Apache prüfen
Stelle sicher, dass der SELinux-Boolean httpd_can_network_connect aktiviert ist, damit Apache Netzwerkverbindungen weiterleiten darf.
$ getsebool httpd_can_network_connect
Erwartete Ausgabe:
httpd_can_network_connect --> on
Schritt 4: Dienste neu starten
Starte Apache und SonarQube neu, um alle Änderungen zu übernehmen.
$ sudo systemctl restart httpd
$ sudo systemctl restart sonarqube
Auf SonarQube zugreifen
Nachdem die Einrichtung abgeschlossen ist, kannst du auf die Weboberfläche von SonarQube zugreifen, indem du deine Domain im Browser öffnest.
Beispiel-URL:
Melde dich mit den Standardzugangsdaten an:
- Benutzername:
admin - Passwort:
admin
Ändere das Standardpasswort nach dem ersten Login. Gehe anschließend zu Administration → Security → Users, um einen neuen Benutzer zu erstellen.
Erzeuge ein neues Zugriffstoken, lege eine Ablaufzeit fest und kopiere es, um es später bei der Codeanalyse zu verwenden.
Beispielprojekte mit SonarQube scannen
Mit den folgenden Schritten kannst du die Installation testen, indem du Beispielprojekte aus dem offiziellen SonarQube-Repository analysierst.
Schritt 1: Projektverzeichnis erstellen
$ cd
$ mkdir projects
$ cd projects
Schritt 2: SonarQube-Beispielrepository klonen
$ git clone https://github.com/SonarSource/sonar-scanning-examples
$ cd sonar-scanning-examples/sonar-scanner
Schritt 3: Codeanalyse ausführen
Führe den Scan mit SonarScanner aus. Ersetze <YOUR_SONAR_TOKEN> durch dein zuvor generiertes Zugriffstoken.
$ sonar-scanner -D sonar.token=<YOUR_SONAR_TOKEN>
Erwartete erfolgreiche Ausgabe:
INFO Scanner configuration file: /opt/sonarscanner/conf/sonar-scanner.properties
INFO Project root configuration file: /home/linuxuser/sonar-scanning-examples/sonar-scanner/sonar-project.properties
INFO SonarScanner CLI 7.0.2.4839
INFO Analysis total time: 38.112 s
INFO SonarScanner Engine completed successfully
INFO EXECUTION SUCCESS
Schritt 4: Analyseergebnisse prüfen
Rufe die folgende Seite auf, um die ausgewerteten Projektdaten einzusehen:
https://sonarqube.example.com/projects
Öffne das Projekt Example of SonarScanner Usage, um Metriken wie Codequalität, Sicherheit, Wartbarkeit, Testabdeckung und Redundanzen zu prüfen.
Fazit
Du hast SonarQube erfolgreich auf Rocky Linux 9 installiert, konfiguriert und abgesichert. Nun kannst du deine Projekte mit dem SonarScanner analysieren und die Ergebnisse im SonarQube-Dashboard auswerten. Weitere Informationen und erweiterte Konfigurationsbeispiele findest du in der offiziellen SonarQube-Dokumentation.


