Skip to content

Troubleshooting

Traefik Logs

The first place to look for routing or certificate issues:

Terminal window
docker logs wb-traefik --tail=100
docker logs wb-traefik --tail=100 | grep -i error
docker logs wb-traefik --tail=100 | grep -i acme

Certificate Not Issued

Symptom: Browser shows “certificate not valid” or Traefik logs show ACME errors.

Causes and fixes:

  1. DNS not propagated yet. Check with dig docs.weekendbuilder.io +short. Wait for the VPS IP to appear before retrying.

  2. Port 80 not reachable. Let’s Encrypt HTTP-01 challenge requires port 80 to be open. Check the firewall:

    Terminal window
    ufw status
    # port 80 must be ALLOW
  3. Rate limited. Let’s Encrypt allows 5 failed attempts per hour per domain. Wait 1 hour, then check logs for “too many certificates”.

  4. Wrong email in traefik.yml. The ACME email must be a real address. Update infrastructure/traefik/traefik.yml and restart:

    Terminal window
    cd infrastructure/traefik
    docker compose restart

Container Not Routing

Symptom: curl -I https://docs.weekendbuilder.io returns 404 or connection refused.

  1. Check the container is running:

    Terminal window
    docker ps | grep wb-docs
  2. Check it is on the web network:

    Terminal window
    docker network inspect web
  3. Check Traefik logs for the service:

    Terminal window
    docker logs wb-traefik --tail=50 | grep docs
  4. Verify the router name is unique — duplicate router names cause silent failures.

Build Fails in Docker

Symptom: docker compose up --build exits with a non-zero code.

Terminal window
docker compose build --no-cache 2>&1 | tail -30

Common cause: npm ci fails because package-lock.json is missing or out of sync. Run npm install locally first, commit package-lock.json, then rebuild on the VPS.

DNS Resolves Wrong IP

Terminal window
dig docs.weekendbuilder.io +short

If the IP is not the VPS, check Cloudflare for conflicting records. Orange-cloud (proxied) records can intercept traffic — set all records to DNS only (grey cloud).

Viewing All Running Containers

Terminal window
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"