All checks were successful
Build Docker / BuildImage (push) Successful in 3m56s
HNSDoH Status
HNSDoH Status is a Flask service that discovers HNSDoH nodes from DNS A records for hnsdoh.com and continuously checks each node for:
- DNS over UDP on port 53
- DNS over TCP on port 53
- DNS over HTTPS (DoH) on port 443 at
/dns-query - DNS over TLS (DoT) on port 853
For DoH and DoT, TLS certificates are validated with hostname hnsdoh.com.
How It Works
- Resolve
hnsdoh.comA records to discover active node IP addresses. - Probe each discovered node for all four protocols.
- Keep current status and short in-memory history.
- Expose results through a web dashboard and JSON API.
Run
uv sync
uv run python main.py
The app runs on 0.0.0.0:5000 by default.
API Endpoints
GET /: HTML status pageGET /api/status: current snapshot and historyGET /api/health: service health (503 if stale or no checks yet)
Configuration
Environment variables:
HNSDOH_DOMAIN(default:hnsdoh.com)HNSDOH_DOH_PATH(default:/dns-query)HNSDOH_CHECK_INTERVAL_SECONDS(default:300)HNSDOH_UI_REFRESH_SECONDS(default:30)HNSDOH_HISTORY_SIZE(default:12)HNSDOH_STALE_AFTER_SECONDS(default:900)HNSDOH_DNS_TIMEOUT_SECONDS(default:5)HNSDOH_DOH_TIMEOUT_SECONDS(default:10)HNSDOH_DOT_TIMEOUT_SECONDS(default:10)
Notes
- Discovery uses DNS A records only.
- DoH check uses RFC8484 DNS wireformat (
application/dns-message) to each node IP while sending SNI/Host ashnsdoh.comfor strict certificate hostname verification. - History is in-memory and resets on process restart.
Description
Languages
Python
67.6%
CSS
13.9%
JavaScript
9.8%
HTML
6.7%
Dockerfile
2%