# Certbot: Problem binding to port 80: Could not bind to IPv4 or IPv6 (standalone authenticator)

**Code:** `Problem binding to port 80: Could not bind to IPv4 or IPv6` · **Category:** SSL / TLS · **Seen on:** SSL, Linux

`certbot --standalone` needs to listen on port 80 for the HTTP-01 challenge but another process (Nginx, Apache) already holds it.

## 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

1. Use `--webroot -w /var/www/html` or `--nginx` instead
2. Or add hooks: `--pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"`
3. Find the owner: `ss -ltnp | grep ':80 '`

## Detailed fix by platform

### Linux

1. `sudo ss -ltnp | grep ':80 '` ; `sudo certbot certonly --webroot -w /var/www/html -d example.com`

## How to diagnose

1. **Listener** — Who owns port 80?
2. **Authenticator** — standalone/webroot?
3. **Renewal** — Config updated?

---
Source: [WhatIsMyError](https://whatismyerror.com/errors/ssl/certbot-port-80-in-use)
