How to self-host SonarQube Community Build on a VPS that has no public HTTP exposure — reachable only through a WireGuard tunnel — and still run automated analysis from GitHub-hosted runners by bringing each CI run onto the tunnel as a scoped, temporary peer.
This is the "private by default" pattern: nothing about SonarQube is on the public internet, no domain, no TLS termination, no reverse proxy rule. The only public-facing port on the box is the WireGuard UDP port. Everything else lives behind the tunnel.
Conventions in this guide:
203.0.113.10— the VPS public IP (replace with yours; this is a TEST-NET address used only for illustration).10.0.0.1— the WireGuard server's tunnel IP (private, RFC 1918).10.0.0.0/24— the tunnel subnet.