My domain is: id.airpay.kz
Public IPv4: 95.56.228.222
I am using NGINX Proxy Manager with Certbot.
The existing certificate renewal intermittently fails with:
Certbot failed to authenticate some domains (authenticator: webroot).
The Certificate Authority reported these problems:
Identifier: id.airpay.kz
Type: connection
Detail: 95.56.228.222: Fetching http://id.airpay.kz/.well-known/acme-challenge/yua28UrDHD21EHMrBh_2D5rQ7__GIFq3veAGVfaM-e8: Timeout after connect
However, at almost the same time, the same ACME challenge was successfully reached by a Let's Encrypt validation server:
[30/Sep/2026:12:31:10 +0500]
200 GET http id.airpay.kz "/.well-known/acme-challenge/yua28UrDHD21EHMrBh_2D5rQ7__GIFq3veAGVfaM-e8"
[Client 23.178.112.219]
"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
The request returned HTTP 200 and the challenge was served successfully.
There is no AAAA record for the domain because IPv6 is not provided by my ISP.
TCP port 80 is publicly reachable and NGINX Proxy Manager is listening on:
0.0.0.0:80
[::]:80
The important point is that at least one Let's Encrypt validation request reaches my server successfully, while another validation attempt reports:
Timeout after connect
If the failing validation perspective cannot reach my server at all, I obviously cannot see its packets in tcpdump or my web server logs.
Here is the setup:
Provider / Public IP / NAT / GW / Docker / NGINX Proxy Manager are operational — an external server successfully executes:
curl -4 -v
-A 'Mozilla/5.0 (compatible; Let'''s Encrypt validation server; +https://www.letsencrypt.org)'
http://id.airpay.kz/.well-known/acme-challenge/yua28UrDHD21EHMrBh_2D5rQ7__GIFq3veAGVfaM-e8
CrowdSec has been ruled out — stopping the crowdsec-firewall-bouncer did not change the situation.
IPv6 is not involved — id.airpay.kz has no AAAA record.
Let's Encrypt can indeed reach NPM — a request was previously logged:
23.178.112.219
/.well-known/acme-challenge/...
HTTP 200
However, Let's Encrypt itself reports:
95.56.228.222: Fetching http://id.airpay.kz/.well-known/acme-challenge/...
Timeout after connect
Therefore, the issue appears to stem from the difference between Let's Encrypt's validation perspectives: one validator reaches the server, while the other does not. Furthermore, we cannot see the IP of the unsuccessful validator because the TCP connection to your server fails to establish.
Could you please check the production HTTP-01 validation for id.airpay.kz / 95.56.228.222 from the Let's Encrypt validation infrastructure and determine whether there is a connectivity or routing problem from one of the validation perspectives?
I can provide full Certbot logs, NGINX access logs and packet captures for the validation attempts if required.
Thank you.