Gates / frontend (push) Successful in 1m36s
Gates / test (push) Successful in 1m56s
Gates / test-aarch64 (push) Successful in 7m37s
Gates / package (push) Successful in 9m12s
Gates / container (push) Successful in 13s
CI / gates (push) Successful in 19m4s
query rows gain qclass, rcode, group, policy action and reason, the matched rule or list entry with its source, cname and safe-search targets, route kind, forward zone, and the resolver that actually answered — the pool and local markers die. servfails are logged and name the resolver that lost; post-parse protocol refusals become rows. a detail page at /queries/:id renders the ordered explanation, and coverage watermarks distinguish an empty history from a missing one. the schema fingerprint changes: existing query history is recreated with the old file kept aside and the reset filed as a resolved diagnostic. fixes an oversized udp reply being rebuilt as noerror, which handed clients a truncated nxdomain as success.
nxdns documentation
The pages are split by what you are trying to do, following Diátaxis. Each page serves one of four purposes, and knowing which one you want is the fastest way to the right page.
| Mode | For | Read it when |
|---|---|---|
| Tutorial | Someone who has never run nxdns | You want to learn what it does by making it work once |
| How-to guides | An operator with a job to do | You know what you want and need the steps |
| Reference | Anyone who needs an exact answer | You want a field, a flag, a route or an exit code |
| Explanation | Anyone deciding or debugging | You want to know why it works the way it does |
Tutorial
A lesson, not a procedure: one path with one outcome, on a scratch directory you can delete afterwards.
- tutorial/first-run.md — build nxdns, resolve a name, block a domain from a real blocklist, open the web interface, stop cleanly.
How-to guides
Steps for a goal you already have. They assume you know what nxdns is.
- how-to/verify-a-release.md — check the signature and the checksums before you run anything, and what they prove.
- how-to/install-with-systemd.md — a real install as a system service, including the Raspberry Pi 5 aarch64 binary.
- how-to/install-with-docker.md — the published container image and the compose file.
- how-to/upgrade.md — move to a new release without losing state.
- how-to/troubleshoot.md — what to do when it does not answer, does not block, or will not start.
- how-to/enable-doh-and-dot.md — serve encrypted DNS with certificates.
- how-to/set-up-admin-authentication.md — put a password on the web interface and the API.
- how-to/back-up-and-restore.md — export and import the configuration, and what to copy.
- how-to/measure-performance.md — run the benchmark harness on your own hardware.
Reference
Descriptions of what is there. No procedures, no advice.
- reference/configuration.md — every configuration section, field, default and range.
- reference/api.md — every REST route, authentication and the event stream.
- reference/cli.md — the six subcommands, every flag, every exit code.
- reference/files-and-directories.md — the data directory layout and file modes.
- reference/performance.md — the targets and the measured numbers.
Explanation
Background. Nothing here is needed to operate nxdns; it is here so the decisions are inspectable.
- explanation/architecture.md — the module map and the design it comes from.
- explanation/configuration-model.md — why there are two authority modes, how each one is selected, and what each is for.
- explanation/performance-and-testing.md — why the targets exist, why CI does not gate on them, and what the hermetic tests do and do not prove.
Scope and per-milestone contracts live outside this directory, in ../PLAN.md and ../specs/.