Unable to access login page - SonarQube Docker

Versions

  • SonarQube Server: Developer Edition (licensed)
  • Deployment: Docker (ports: "9000:9000")
  • OS Host: CentOS 8

Issue Description

Hello,

I am trying to access the SonarQube web UI from outside the host machine (using <host-ip>:9000), but the service is unreachable from any external client.


What I have tried / Observations

  • SonarQube is started with Docker and the following port mapping:
    ports:
      - "9000:9000"
    
  • There is no firewall between my client and the host machine.
  • SonarQube starts correctly, with no errors in the logs.
  • Accessing the UI with curl 127.0.0.1:9000 from the host returns valid HTML:
    <span aria-live="polite" class="global-loading-text">Loading...</span>
    
  • However, accessing http://<host-ip>:9000 from any external machine fails with a connection timeout.
  • No custom configuration was made.
  • From the logs:
    2025.06.02 10:54:17 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
    2025.06.02 10:54:17 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:{}]
    ...
    

No firewall on machine.

Question

  • Is there any recommended best practice or additional configuration to ensure SonarQube is safely accessible externally?

Thank you in advance for your support!

Additional Troubleshooting

To further isolate the issue, I stopped all Docker services and started a simple Python webserver on port 9000:

python3 -m http.server 9000

From an external machine, I successfully accessed the service using:

curl http://<host_ip>:9000

so, other services on port 9000 are reachable from outside, so this confirms that the issue is specific to the Docker container (or SonarQube running inside the container), not related to firewall, SELinux, or network configuration on the host.

Hey there.

  • What version of SonarQube are you trying to start up?
  • It looks like you’re using Docker Compose. Can you share your full Docker compose file?
  • It will sound super basic – but on your external machine, can you try with a clean browser cache?