Warda — documentation
Warda: from ward (to protect, guardian).
The single place of every document of Warda. No other repository keeps a copy: the code repositories link here.
| Folder | Content |
|---|---|
warda/ |
Technical reference of the software (the DNS filter). |
cloud/ |
The online service of Warda (names and certificates of the encrypted DNS, the exchanges of the collective base): API and deployment. |
analyst/ |
warda-analyst, the analysis service of Warda ("master of doubt") behind the online service: the checks of the doubtful domains, the living list of verdicts, the interface of the team, its sources and their terms, deployment and move to another server; from 0.7.11 its module Lists: the admission of a list, the names proposed to add or remove, the dead names, the test bench, the model of warda-ml as a second opinion. |
portal/ |
warda-portal, the customer area account.warda-dns.com (from 0.7.5): accounts, boxes linked by code, plans and their signed statements, Warda Business, the interface of the team; deployment, the plan key, backups, move to another server. |
ml/ |
warda-ml, the weekly learning job from the collective base (from 0.7.5): the export it reads, the models proposed and their report, deployment, the key of the models; from 0.7.11 the push of the signed model to warda-analyst. |
website/ |
The site warda-dns.com: pages and languages, build, security, search engines, deployment. |
lists/ |
warda-lists: the sources, the categories and the curated lists every box downloads; from 0.7.11 the two figures of each list (entries and names), the files written by warda-analyst and the safety of the nightly build. |
docs-site/ |
docs.warda-dns.com: the documentation site built from this repository. |
support/ |
warda-support: the support platform support.warda-dns.com (GLPI 11.0.9 in Docker Compose), its deployment, upgrades and backups. |
domains/ |
The domains of Warda (warda-dns.com, .net, .fr, .eu): their records, the Terraform repository that manages them, the tokens, the steps at the registrars; the runbook of the failover if Cloudflare is lost. |
ci/ |
warda-ci: what the CI of every repository shares. Every push tracked in GLPI by the CI (a Change for a push, a release for a version): the states and the comments, the steps to add to a workflow, the settings, what happens when GLPI does not answer. |
operations/ |
Operations, for the owner: the servers (srv-warda-01, SLDOKP03), the firewall of srv-warda-01, releasing and deploying a version, the rules and the fields of OpenBao (no secret ever shown), GitHub (organisation, repository of the releases, token, verified domains). |
warda/comparison.md |
Warda beside Pi-hole and AdGuard Home, and what it does not do yet. |
warda/guide/ |
User guide, step by step, in English, français, español, Deutsch, Nederlands, italiano and português. |
brand/ |
Charte Améthyste (colours, fonts, logos) and its package @warda-dns/brand, used by every interface. |
design/ |
Design documents, in French, not published on docs.warda-dns.com: roles and groups (the roles of the accounts, reworked in 0.6.8), collective base (exchanges and analysis service done in 0.6.8, next phases under discussion), data loss prevention for Warda Business (P1 and unblock requests done in 0.6.8), high availability and sites of Warda Business (phase 1 done in 0.6.8, next phases), under discussion: HTTPS inspection and DLP; in English: the servers of Warda (the four servers of the target, the flows between them, what scaling needs), warda-portal (the customer area: v0.1 built in 0.7.5, decisions taken by default, open questions), warda-ml (learning from the collective base, privacy-preserving: v0.1 built in 0.7.5, models proposed only), a web proxy for Warda Business (a proposal for decision, nothing built) and the IPv6 DNS of the box (the case of 2026-10-03, the proposals and their state after 0.7.10, the boxes to verify). |
Versions
Each release of Warda tags this repository with the same vX.Y.Z as the
code: the documentation of a version is the one of its tag. The branch
develop describes the version in progress.
Branches
Every repository of Warda (warda, warda-cloud, warda-analyst,
warda-portal, warda-ml, warda-website, warda-docs, warda-docs-site, warda-lists,
warda-terraform-cloudflare, warda-support, warda-ci)
follows the same flow: the work is pushed on
develop; when its CI passes, the job Promote to main pushes the same
commit on main (fast-forward only, with the secret RELEASE_TOKEN), and
the CI of main runs on it. A vX.Y.Z tag is only released from a commit
of develop or main; protect the tags v* in the settings of each
repository (only the administrators, and the owner of RELEASE_TOKEN for
warda-docs, whose tag is set by the release of warda).
The package @warda-dns/brand has its own version (in
brand/package.json): the CI publishes a new version to the npm registry of
the organization as soon as it appears on develop or main, and each
interface chooses when to move to it.
Rules
- One subject, one place. A document moves; it is never copied.
- The seven guides keep the shape of the English one: same chapters, same subsections, a short box at the start of each chapter, the same commands.
- Every page of every interface of Warda has exactly the same style: the charter is the only source of colours, fonts and logos.
- An image of a document lives in an
images/folder beside it, with a text for those who do not see it; in the guide, one image for every language or one by language: adding images (en français). brand/warda.cssis generated frombrand/tokens.json(node brand/scripts/build.mjs), never edited by hand.
Checks
npm test (Node.js 22, no dependency): the guides, the links between the
documents, the images (each shown exists, has its text, a name in lower
case, PNG, JPEG, WebP or a safe SVG, at most 500 KB; no file of an
images/ folder forgotten), and the charter. The CI runs them on every push, and publishes
the charter package on develop and main.
Security checks
The job security runs beside the checks, and a finding stops the
promotion to main and the publication of the charter as a failed check
does: secrets committed by mistake (gitleaks, pinned image, reading the
committed files on its standard input: no bind mount). Without npm
dependency (no package-lock.json), there is nothing for npm audit; no
nightly workflow either, gitleaks only finds something new when the files
change.