Certbot: Problem binding to port 80: Could not bind to IPv4 or IPv6 (standalone authenticator)
certbot --standalone needs to listen on port 80 for the HTTP-01 challenge but another process (Nginx, Apache) already holds it.
Problem binding to port 80: Could not bind to IPv4 or IPv6Could not bind TCP port 80 because it is already in use by another process on this systemProblem binding to port 443: Could not bind to IPv4 or IPv6certbot standalone port 80 already in use Meaning
Standalone mode starts its own tiny web server. Either stop the web server briefly, switch to --webroot or the --nginx / --apache plugin, or use pre/post hooks to stop and start the service. Renewal fails silently later if the authenticator stays standalone with the web server running.
Common causes
- Nginx/Apache already listening on port 80
- Standalone authenticator saved in renewal config
- Docker proxy publishing 80
- Another certbot process running
- Firewall not the cause (bind error is local)
⚡ Quick fix
- Use
--webroot -w /var/www/htmlor--nginxinstead - Or add hooks:
--pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" - Find the owner:
ss -ltnp | grep ':80 '
Detailed fix by platform
Linux
sudo ss -ltnp | grep ':80 ';sudo certbot certonly --webroot -w /var/www/html -d example.com
How to diagnose
- Listener — Who owns port 80?
- Authenticator — standalone/webroot?
- Renewal — Config updated?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- AH01909: server certificate does NOT include an ID which matches the server name Apache: [ssl:warn] AH01909: example.com:443:0 server certificate does NOT include an ID which matches the server name
- Challenge failed for domain Let’s Encrypt / Certbot: Challenge failed for domain example.com — Invalid response from http://example.com/.well-known/acme-challenge/x: 404
- Could not automatically find a matching server block Certbot: Could not automatically find a matching server block for example.com. Set the `server_name` directive to use the Nginx installer
Most viewed in SSL / TLS
- NET::ERR_CERT_COMMON_NAME_INVALID NET::ERR_CERT_COMMON_NAME_INVALID: Your connection is not private (certificate is for a different domain)
- no start line OpenSSL: unable to load certificate / PEM routines:get_name:no start line (key values mismatch)
- NSURLErrorServerCertificateUntrusted (-1202) iOS: Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be 'example.com'"
Other ways to find it
Where this error sits
Origin: Network. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 4 Nov 2026