SonarQube

Links

Installation

Es wird eine bestehende Installation von PostgreSQL vorausgesetzt.

sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192

dnf install java-17-openjdk freetype fontconfig dejavu-sans-font unzip

useradd --home-dir /opt/sonarqube --shell /sbin/nologin  sonarqube

VER=26.1.0.118079
wget "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${VER}.zip" --output-document=/tmp/sonarqube.zip
unzip -d /tmp /tmp/sonarqube.zip
cp --archive "/tmp/sonarqube-${VER}/." /opt/sonarqube/
chown -R sonarqube:sonarqube /opt/sonarqube

mkdir --parents /var/log/sonarqube /var/sonarqube/data /var/sonarqube/temp
chmod 700 /var/log/sonarqube /var/sonarqube/data /var/sonarqube/temp
chown -R sonarqube:sonarqube /var/log/sonarqube /var/sonarqube/data /var/sonarqube/temp

Anschliessend die Konfiguration anpassen:

/opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonarqube
sonar.jdbc.password=linuxfabrik
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

sonar.web.javaAdditionalOpts=-server


sonar.web.host=192.0.2.10 # oder 127.0.0.1
sonar.web.port=9000

sonar.path.data=/var/sonarqube/data
sonar.path.logs=/var/log/sonarqube
sonar.path.temp=/var/sonarqube/temp

sonar.telemetry.enable=false

Systemd-Service erstellen. Den Dateinamen von sonar-application-*.jar muss an die jeweilige Version anpassen.

/etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-26.1.0.118079.jar
StandardOutput=journal
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

Die Web-Plugins (${sonar.path.data}/)

systemctl daemon-reload
systemctl start sonarqube.service

Troubleshooting

SonarQube-Start bricht ab

Folgende Meldungen im Log?

INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube-9.9/temp
INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:41582]
INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[ELASTICSEARCH] from [/opt/sonarqube-9.9/elasticsearch]: /opt/sonarqube-9.9/elasticsearch/bin/elasticsearch
INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 1
INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube-9.9/temp
INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:42890]
INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[ELASTICSEARCH] from [/opt/sonarqube-9.9/elasticsearch]: /opt/sonarqube-9.9/elasticsearch/bin/elasticsearch
INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]: 1
INFO  app[][o.s.a.SchedulerImpl] Process[ElasticSearch] is stopped
INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

Lösung: SonarQube darf nicht mit „root“ gestartet werden - dadurch ändern sich die Verzeichnisberechtigungen. Um SonarQube wieder zum laufen zu bringen, folgendes ausführen:

chown -R sonarqube:sonarqube /opt/sonarqube
systemctl restart sonarqube.service

Migration

Auf dem bestehenden System:

systemctl stop sonarqube.service

DBNAME=sonarqube
sudo --user=postgres --chdir=/ pg_dump --no-owner $DBNAME > /tmp/$DBNAME.sql

Auf dem neuen System:

psql --username=sonarqube --dbname=sonarqube
\i /tmp/sonar.sql
systemctl start sonarqube.service

Built on 2026-03-09