- OS: Ubuntu 22.04 LTS
- User: Non-root user with sudo privileges
- Docker installed and running
- Minimum 4GB RAM (8GB recommended)
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk -y
java -versionsudo apt install postgresql postgresql-contrib -y
sudo -i -u postgres
createuser sonar
psql
ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';
CREATE DATABASE sonarqube OWNER sonar;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;
\q
exitEdit /etc/sysctl.conf:
vm.max_map_count=262144
fs.file-max=65536
Apply:
sudo sysctl -pEdit /etc/security/limits.conf:
sonar - nofile 65536
sonar - nproc 4096
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.4.0.87286.zip
sudo apt install unzip -y
sudo unzip sonarqube-*.zip -d /opt
sudo mv /opt/sonarqube-* /opt/sonarqube
sudo adduser --system --no-create-home --group --disabled-login sonar
sudo chown -R sonar:sonar /opt/sonarqubeEdit /opt/sonarqube/conf/sonar.properties:
sonar.jdbc.username=sonar
sonar.jdbc.password=StrongPassword
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
Create /etc/systemd/system/sonarqube.service:
[Unit]
Description=SonarQube service
After=network.target
[Service]
Type=forking
User=sonar
Group=sonar
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
Enable service:
sudo systemctl daemon-reload
sudo systemctl enable sonarqube
sudo systemctl start sonarqube
sudo systemctl status sonarqubeAccess via browser:
http://SERVER_IP:9000
Default login: - Username: admin - Password: admin
Change password immediately.
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-5.0.1.3006-linux.zip
sudo unzip sonar-scanner-*.zip -d /opt
sudo mv /opt/sonar-scanner-* /opt/sonar-scannerAdd to PATH in /etc/profile:
export PATH=$PATH:/opt/sonar-scanner/bin
Reload:
source /etc/profile
sonar-scanner -vsudo apt install wget apt-transport-https gnupg lsb-release -y
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt update
sudo apt install trivy -yVerify:
trivy -vtrivy image nginx:latestdocker build -t myapp:1.0 .
trivy image myapp:1.0trivy image -f json -o result.json myapp:1.0trivy image --severity CRITICAL --exit-code 1 myapp:1.0- Code Push
- SonarQube Scan
- Docker Build
- Trivy Scan
- Push Image
- Deploy to Kubernetes
Check SonarQube logs:
sudo journalctl -u sonarqube
cat /opt/sonarqube/logs/sonar.logCheck system limits:
sysctl vm.max_map_countMust be >= 262144