SonarQube
Prerequisites
# Install Java 17 (required)
sudo apt update
sudo apt install openjdk-17-jre openjdk-17-jdk -y
# Verify installation
java -versionInstallation on Linux
Ubuntu/Debian
# Install PostgreSQL (recommended for production)
sudo apt install postgresql postgresql-contrib -y
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Create SonarQube database
sudo -u postgres createdb sonarqube
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'new_password';"
# Download SonarQube
cd /tmp
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.2.1.78527.zip
unzip sonarqube-10.2.1.78527.zip
# Move to /opt
sudo mv sonarqube-10.2.1.78527 /opt/sonarqube
sudo chown -R sonarqube:sonarqube /opt/sonarqubeCreate SonarQube User
# Create system user
sudo useradd -m -d /var/sonarqube -s /bin/false sonarqube
# Create directories
sudo mkdir -p /var/sonarqube/data
sudo mkdir -p /var/sonarqube/temp
sudo chown -R sonarqube:sonarqube /var/sonarqubeConfiguration
Edit SonarQube Properties
# Edit configuration
sudo nano /opt/sonarqube/conf/sonar.properties
# Add/modify these settings
sonar.jdbc.username=postgres
sonar.jdbc.password=your_password
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
sonar.javaHome=/usr/lib/jvm/java-17-openjdk-amd64
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp
# Bind to all interfaces
sonar.web.host=0.0.0.0
sonar.web.port=9000Running SonarQube
Manual Start/Stop
# Start SonarQube
sudo /opt/sonarqube/bin/linux-x86-64/sonar.sh start
# Stop SonarQube
sudo /opt/sonarqube/bin/linux-x86-64/sonar.sh stop
# Check status
sudo /opt/sonarqube/bin/linux-x86-64/sonar.sh status
# View logs
sudo tail -f /opt/sonarqube/logs/sonar.logUsing Systemd Service
# Create systemd service file
sudo nano /etc/systemd/system/sonarqube.service
# Add content
[Unit]
Description=SonarQube
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
ExecReload=/opt/sonarqube/bin/linux-x86-64/sonar.sh restart
User=sonarqube
Group=sonarqube
Restart=always
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable sonarqube
sudo systemctl start sonarqube
sudo systemctl status sonarqubeNginx Reverse Proxy
# Create Nginx configuration
sudo nano /etc/nginx/conf.d/sonarqube.conf
# Add configuration
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:9000;
proxy_read_timeout 90s;
}
client_max_body_size 256M;
}
# Test and restart Nginx
sudo nginx -t
sudo systemctl restart nginxFirewall Configuration
# UFW (Ubuntu)
sudo ufw allow 9000
sudo ufw allow 80
sudo ufw allow 443
# Firewalld (CentOS)
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reloadWeb Interface Access
# Access SonarQube
http://your_domain_or_ip
# Default credentials
username: admin
password: admin
# Change password on first login (recommended)Docker Installation
# Pull image
docker pull sonarqube:latest
# Run container
docker run -d \
--name sonarqube \
-p 9000:9000 \
-e SONAR_JDBC_URL=jdbc:postgresql://postgres:5432/sonarqube \
-e SONAR_JDBC_USERNAME=sonarqube \
-e SONAR_JDBC_PASSWORD=password \
-v sonarqube_data:/opt/sonarqube/data \
sonarqube:latestUser & Token Management
# Access admin panel
1. Navigate to Administration > Users
2. Create new user or manage existing users
# Generate API token
1. Navigate to user profile (top right)
2. Select "Security"
3. Create token
4. Use in CI/CD pipelinesSonarScanner Installation
# Download SonarScanner
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-4.8.0.2856-linux.zip
unzip sonar-scanner-4.8.0.2856-linux.zip
sudo mv sonar-scanner-4.8.0.2856-linux /opt/sonar-scanner
# Create symlink
sudo ln -s /opt/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner
# Verify installation
sonar-scanner --versionRun SonarScanner
# Create sonar-project.properties
cat > sonar-project.properties << 'EOF'
sonar.projectKey=my-project
sonar.projectName=My Project
sonar.projectVersion=1.0
sonar.sources=src
sonar.host.url=http://localhost:9000
sonar.login=your-api-token
EOF
# Run scanner
sonar-scannerUninstall
Manual Installation
# Stop SonarQube
sudo /opt/sonarqube/bin/linux-x86-64/sonar.sh stop
# Remove installation
sudo rm -rf /opt/sonarqube
sudo rm -rf /var/sonarqube
sudo userdel sonarqube
# Remove database
sudo -u postgres dropdb sonarqube
# Remove Nginx config
sudo rm /etc/nginx/conf.d/sonarqube.conf
sudo systemctl restart nginxDocker Installation
# Stop and remove container
docker stop sonarqube
docker rm sonarqube
# Remove volume (optional)
docker volume rm sonarqube_data