Continuous DNS and TLS health checks for custom domains on GitHub Pages sites, by Custom Domain.
Install it on any repository with a custom domain and it runs a Domain health check on every push, plus a single tracking issue when your domain breaks. It grades nine signals:
- DNS resolution
- Record type (CNAME for subdomains, A/AAAA or ALIAS for apex)
- Target correctness (CNAME to
<owner>.github.io, or the four185.199.108-111.153apex IPs) - Served by GitHub Pages
- Domain verification (the takeover-protection TXT record and
protected_domain_state) - CAA compatibility with Let's Encrypt
- TLS certificate validity and expiry
- HTTPS enforcement
- DNS hygiene (MX-on-CNAME conflicts, domain length)
Zero runtime dependencies: Node core modules and fetch only. The service verifies webhook signatures (HMAC SHA-256, constant-time), mints an app JWT (RS256), exchanges installation tokens, and reports through the Checks and Issues APIs.
Install Custom Domain Checks →
docker build -t custom-domain-checks .
docker run -p 8787:8787 -v $(pwd)/secrets:/secrets custom-domain-checksThe service registers itself through the GitHub App Manifest flow: visit /github-app/register, click Create, and the callback stores the app id, private key, and webhook secret in /secrets.
Maintained by CustomDomain.ai.