Post Install ACME Falining Fix
This guide walks you through the exact steps to diagnose and fix ACME certificate issues during a Pangolin installation. These steps cover the most common real‑world causes: DNS mismatches, blocked ports, Traefik misconfiguration, and redirect loops. Follow the checklist in order—each step rules out a specific failure point so you can quickly identify what’s wrong and get ACME issuing certificates again.
Troubleshoot Steps
Verify DNS is pointing to the correct server
ACME will always fail if DNS points to the wrong IP.
-
A yourdomain.com → <your VPS IP> -
A *.yourdomain.com → <your VPS IP>
- Check your server’s public IP and make sure it matches your DNS records
curl ifconfig.me
Test port 80 from outside the server
ACME HTTP‑01 requires port 80 to be reachable publicly.
- From your laptop or phone:
curl -I http://yourdomain.com
Interpret the result:
-
200 / 301 / 404 → Port 80 is open (good)
-
Timeout → Firewall or provider is blocking port 80
-
Connection refused → Traefik is not listening on port 80
3. Check VPS firewall (UFW)
On the server:
sudo ufw status
You must see:
80/tcp ALLOW
443/tcp ALLOW
If missing:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
4. Check hosting provider firewall (Hetzner Cloud Firewall)
For example Hetzner has an external firewall that overrides UFW.UFW
InGoHetznertodashboard:your VPS dashboard- Server → Networking → Firewalls
You must allow:
TCP 80
TCP 443
If port 80 is missing → ACME will fail every time.
5.
Confirm Traefik is listening on port 80
On the server:
bashSSH into server and run following command
sudo ss -tulpn | grep :80
Expected:
docker-proxy ... LISTEN ... :80
If nothing is listening → Traefik didn’t bind to port 80.
6.
Disable HTTP→HTTPS redirect during ACME
This is the most common Traefik mistake.issue.
If Traefik redirects ACME requests to HTTPS before a certificate exists, ACME fails.
LookSSHforintothisthe server, and go to dynamic-compose.yaml. Usually inyourconfigdynamic>config:traefik folder
middlewares:
- redirect-to-https
Or:
main-app-router-redirect:
entryPoints:
- web
middlewares:
- redirect-to-https
- Temporarily comment out the redirect:
# - redirect-to-https
- Restart Traefik:
sudo docker compose restart traefik
Uncomment the redirect after successful redirect
7. Ensure ACME is using HTTP‑01 on the correct entrypoint
In traefik_config.yml:traefik onfig yaml
httpChallenge:
entryPoint: web
Entrypoints must be:
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
8. Check for CrowdSec blocking ACME
CrowdSec sometimes blocks Let’s Encrypt IPs.
If you see errors like:
Temporarily disable CrowdSec middleware:
# - crowdsec@file
Restart Traefik.
9. Restart Traefik and watch ACME logs
Traefik retries ACME automatically.
docker logs traefik -f
You want to see:
Server responded with certificate
10. Re-enable HTTPS redirect after certificate is issued
Once ACME succeeds, you can safely turn HTTPS redirect back on:
middlewares:
- redirect-to-https
Restart Traefik again.
11. Verify HTTPS is working
From your laptop:
curl -I https://yourdomain.com
You should see:
HTTP/2 200
Or a redirect.
12. Confirm Pangolin + Newt tunnel works
Once ACME is fixed:
Pangolin can issue tokensWebSocket handshake succeedsNewt receives WireGuard configTunnel comes up normally