From 6b6a8c847f552af1da38cccd9c179c93106fb0dd Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 11 Jun 2026 13:21:16 +0900 Subject: [PATCH 1/3] docs: expand reference pages and fix children shortcode rendering Enable Goldmark block-level attributes so the relearn `children` shortcode applies its CSS classes instead of printing them literally in the table-of-contents pages. Also expand the deploy, plugins, records, and email reference docs and add the checks pages. --- config.yml | 12 + content/introduction/deploy/docker.en.md | 332 +++++++++++++++++-- content/introduction/deploy/docker.fr.md | 332 +++++++++++++++++-- content/pages/checks.en.md | 174 ++++++++++ content/pages/checks.fr.md | 174 ++++++++++ content/reference/plugins/tests.en.md | 396 +++++++++-------------- content/reference/plugins/tests.fr.md | 396 +++++++++-------------- content/reference/records/SOA.en.md | 29 +- content/reference/records/SOA.fr.md | 29 +- content/reference/records/TXT.en.md | 36 ++- content/reference/records/TXT.fr.md | 36 ++- content/reference/services/email.en.md | 51 ++- content/reference/services/email.fr.md | 51 ++- 13 files changed, 1502 insertions(+), 546 deletions(-) create mode 100644 content/pages/checks.en.md create mode 100644 content/pages/checks.fr.md diff --git a/config.yml b/config.yml index db10f4b..5c7d1f2 100644 --- a/config.yml +++ b/config.yml @@ -62,5 +62,17 @@ params: - identifier: relearn-dark +# The relearn theme attaches CSS classes to generated blocks (e.g. the +# `children` shortcode appends `{class="children ..."}` after its list). +# Goldmark only interprets that as block attributes when block parsing is +# enabled; otherwise it is rendered as literal text. +markup: + goldmark: + parser: + attribute: + block: true + renderer: + unsafe: true + outputs: home: [ "HTML", "RSS", "PRINT"] diff --git a/content/introduction/deploy/docker.en.md b/content/introduction/deploy/docker.en.md index e07dacb..7f18c6b 100644 --- a/content/introduction/deploy/docker.en.md +++ b/content/introduction/deploy/docker.en.md @@ -7,69 +7,335 @@ weight: 15 happyDomain is sponsored by Docker. You'll find the official container image on [the Docker Hub](https://hub.docker.com/r/happydomain/happydomain/). -This image will run happyDomain as a single process, with a LevelDB database (similarly to sqlite, LevelDB is stored on disk, no need to configure anything). +The image runs happyDomain as a single process with a LevelDB database stored on disk — no extra database to configure. ## Supported tags and architectures -All tags are build for `amd64`, `arm64` and `arm/v7` and are based on alpine. +All tags are built for `amd64`, `arm64` and `arm/v7` and are based on Alpine. -Currently, available tags are: +Currently available tags: -- `latest`: this is a the most up to date version, corresponding to the master branch. +- `latest`: the most up-to-date version, corresponding to the master branch. -## Using this image -### For testing purpose +## Quick start (single container) -You can test happyDomain or use it for your own usage, with the option `HAPPYDOMAIN_NO_AUTH=1`: this will automatically creates a default account, and disable all features related to the user management (signup, login, ...). +For a quick test or personal use, pass `HAPPYDOMAIN_NO_AUTH=1` to skip account management: ``` docker run -e HAPPYDOMAIN_NO_AUTH=1 -p 8081:8081 happydomain/happydomain ``` -Data are stored in `/data` directory. If you want to keep your settings from one run to another, you'll need to attach this directory to a Docker managed volume or to a directory on your host: +Data are stored inside the container. To keep them across restarts, attach a volume: ``` docker volume create happydomain_data docker run -e HAPPYDOMAIN_NO_AUTH=1 -v happydomain_data:/data -p 8081:8081 happydomain/happydomain ``` -### In production - -happyDomain needs to send e-mail, in order to verify addresses and doing password recovery, so you need basically to configure a SMTP relay. -Use the options `HAPPYDOMAIN_MAIL_SMTP_HOST`, `HAPPYDOMAIN_MAIL_SMTP_PORT` (default 25), `HAPPYDOMAIN_MAIL_SMTP_USERNAME` and `HAPPYDOMAIN_MAIL_SMTP_PASSWORD` for this purpose: +For a production single-container setup that sends e-mail: ``` -docker run -e HAPPYDOMAIN_MAIL_SMTP_HOST=smtp.yourcompany.com -e HAPPYDOMAIN_MAIL_SMTP_USERNAME=happydomain -e HAPPYDOMAIN_MAIL_SMTP_PASSWORD=secret -v /var/lib/happydomain:/data -p 8081:8081 happydomain/happydomain -``` - -If you prefer using a configuration file, you can place it either in `/data/happydomain.conf` to use the volume, or bind your file to `/etc/happydomain.conf`: - -``` -docker run -v happydomain.conf:/etc/happydomain.conf -p 8081:8081 happydomain/happydomain -``` - -#### Extend the base image - -By default, happyDomain uses `sendmail`, if you prefer, you can create you own image with the package `ssmtp`: - -``` -FROM happydomain/happydomain -RUN apk --no-cache add ssmtp -COPY my_ssmtp.conf /etc/ssmtp/ssmtp.conf +docker run \ + -e HAPPYDOMAIN_MAIL_SMTP_HOST=smtp.yourcompany.com \ + -e HAPPYDOMAIN_MAIL_SMTP_USERNAME=happydomain \ + -e HAPPYDOMAIN_MAIL_SMTP_PASSWORD=secret \ + -v /var/lib/happydomain:/data \ + -p 8081:8081 \ + happydomain/happydomain ``` -## Admin Interface +## Full deployment with all checkers -happyDomain exposes some administration command through a unix socket. The docker container contains a script to access this admin part: `hadmin`. +happyDomain ships every checker built-in, but several of them rely on +external tools (DNSViz, Zonemaster, Matrix federation tester) that are +packaged in their own container images. Running these as separate services +gives you the full checker experience and better isolation. -You can use it this way: +The recommended approach is `docker compose`. Save the following file as +`docker-compose.yml` and run `docker compose up -d`. + +```yaml +services: + happydomain: + image: happydomain/happydomain + ports: + - "8080:8081" + environment: + # Uncomment for single-user / testing + # HAPPYDOMAIN_NO_AUTH: "1" + + # Mail configuration (required for multi-user production use) + # HAPPYDOMAIN_MAIL_SMTP_HOST: "mailer" + + # ── DNS / DNSSEC ───────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_DNSVIZ_ENDPOINT: "http://checker-dnsviz:8080" + HAPPYDOMAIN_CHECKER_DNSSEC_ENDPOINT: "http://checker-dnssec:8080" + HAPPYDOMAIN_CHECKER_ZONEMASTER_ENDPOINT: "http://checker-zonemaster:8080" + HAPPYDOMAIN_CHECKER_ZONEMASTER_ZONEMASTERAPIURL: "http://zonemaster:5000" + HAPPYDOMAIN_CHECKER_DELEGATION_ENDPOINT: "http://checker-delegation:8080" + HAPPYDOMAIN_CHECKER_AUTHORITATIVE_CONSISTENCY_ENDPOINT: "http://checker-authoritative-consistency:8080" + HAPPYDOMAIN_CHECKER_ALIAS_ENDPOINT: "http://checker-alias:8080" + HAPPYDOMAIN_CHECKER_LEGACY_RECORDS_ENDPOINT: "http://checker-legacy-records:8080" + HAPPYDOMAIN_CHECKER_NS_RESTRICTIONS_ENDPOINT: "http://checker-ns-restrictions:8080" + HAPPYDOMAIN_CHECKER_RESOLVER_PROPAGATION_ENDPOINT: "http://checker-resolver-propagation:8080" + HAPPYDOMAIN_CHECKER_REVERSE_ZONE_ENDPOINT: "http://checker-reverse-zone:8080" + HAPPYDOMAIN_CHECKER_PTR_ENDPOINT: "http://checker-ptr:8080" + HAPPYDOMAIN_CHECKER_DANGLING_ENDPOINT: "http://checker-dangling:8080" + + # ── Security / Certificates ─────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_TLS_ENDPOINT: "http://checker-tls:8080" + HAPPYDOMAIN_CHECKER_DANE_ENDPOINT: "http://checker-dane:8080" + HAPPYDOMAIN_CHECKER_CAA_ENDPOINT: "http://checker-caa:8080" + HAPPYDOMAIN_CHECKER_BLACKLIST_ENDPOINT: "http://checker-blacklist:8080" + + # ── E-mail ──────────────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_SMTP_ENDPOINT: "http://checker-smtp:8080" + HAPPYDOMAIN_CHECKER_EMAIL_AUTOCONFIG_ENDPOINT: "http://checker-email-autoconfig:8080" + HAPPYDOMAIN_CHECKER_OPENPGPKEY_SMIMEA_ENDPOINT: "http://checker-email-keys:8080" + + # ── Web & Protocols ─────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_HTTP_ENDPOINT: "http://checker-http:8080" + HAPPYDOMAIN_CHECKER_SSH_ENDPOINT: "http://checker-ssh:8080" + HAPPYDOMAIN_CHECKER_PING_ENDPOINT: "http://checker-ping:8080" + HAPPYDOMAIN_CHECKER_SRV_ENDPOINT: "http://checker-srv:8080" + + # ── Collaboration / Messaging ───────────────────────────────────────── + HAPPYDOMAIN_CHECKER_MATRIXIM_ENDPOINT: "http://checker-matrix:8080" + HAPPYDOMAIN_CHECKER_MATRIXIM_FEDERATIONTESTERSERVER: "http://matrixfederationtester:8080/api/report?server_name=%s" + HAPPYDOMAIN_CHECKER_XMPP_ENDPOINT: "http://checker-xmpp:8080" + HAPPYDOMAIN_CHECKER_SIP_ENDPOINT: "http://checker-sip:8080" + + # ── Directory & Auth ────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_LDAP_ENDPOINT: "http://checker-ldap:8080" + HAPPYDOMAIN_CHECKER_KERBEROS_ENDPOINT: "http://checker-kerberos:8080" + HAPPYDOMAIN_CHECKER_STUNTURN_ENDPOINT: "http://checker-stun-turn:8080" + + # ── CalDAV / CardDAV ────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_CALDAV_ENDPOINT: "http://checker-caldav:8080" + HAPPYDOMAIN_CHECKER_CARDDAV_ENDPOINT: "http://checker-carddav:8080" + + # ── Optional: happyDeliver integration ──────────────────────────────── + # HAPPYDOMAIN_CHECKER_HAPPYDELIVER_ENDPOINT: "http://checker-happydeliver:8080" + + restart: unless-stopped + volumes: + - storage:/var/lib/happydomain:rw + + # ── DNS / DNSSEC checkers ────────────────────────────────────────────────── + + checker-dnsviz: + image: happydomain/checker-dnsviz + restart: unless-stopped + + checker-dnssec: + image: happydomain/checker-dnssec + restart: unless-stopped + + checker-zonemaster: + image: happydomain/checker-zonemaster + restart: unless-stopped + + zonemaster: + image: zonemaster/backend + command: full + restart: unless-stopped + + checker-delegation: + image: happydomain/checker-delegation + restart: unless-stopped + + checker-authoritative-consistency: + image: happydomain/checker-authoritative-consistency + restart: unless-stopped + + checker-alias: + image: happydomain/checker-alias + restart: unless-stopped + + checker-legacy-records: + image: happydomain/checker-legacy-records + restart: unless-stopped + + checker-ns-restrictions: + image: happydomain/checker-ns-restrictions + restart: unless-stopped + + checker-resolver-propagation: + image: happydomain/checker-resolver-propagation + restart: unless-stopped + + checker-reverse-zone: + image: happydomain/checker-reverse-zone + restart: unless-stopped + + checker-ptr: + image: happydomain/checker-ptr + restart: unless-stopped + + checker-dangling: + image: happydomain/checker-dangling + restart: unless-stopped + + # ── Security / Certificate checkers ─────────────────────────────────────── + + checker-tls: + image: happydomain/checker-tls + restart: unless-stopped + + checker-dane: + image: happydomain/checker-dane + restart: unless-stopped + + checker-caa: + image: happydomain/checker-caa + restart: unless-stopped + + checker-blacklist: + image: happydomain/checker-blacklist + restart: unless-stopped + + # ── E-mail checkers ──────────────────────────────────────────────────────── + + checker-smtp: + image: happydomain/checker-smtp + restart: unless-stopped + + checker-email-autoconfig: + image: happydomain/checker-email-autoconfig + restart: unless-stopped + + checker-email-keys: + image: happydomain/checker-email-keys + restart: unless-stopped + + # ── Web & Protocol checkers ──────────────────────────────────────────────── + + checker-http: + image: happydomain/checker-http + restart: unless-stopped + + checker-ssh: + image: happydomain/checker-ssh + restart: unless-stopped + + checker-ping: + image: happydomain/checker-ping + restart: unless-stopped + cap_add: + - NET_RAW # required for ICMP ping + + checker-srv: + image: happydomain/checker-srv + restart: unless-stopped + + # ── Collaboration / Messaging checkers ───────────────────────────────────── + + checker-matrix: + image: happydomain/checker-matrix + restart: unless-stopped + + matrixfederationtester: + image: matrixdotorg/federation-tester-backend + environment: + BIND_ADDRESS: "0.0.0.0:8080" + restart: unless-stopped + + checker-xmpp: + image: happydomain/checker-xmpp + restart: unless-stopped + + checker-sip: + image: happydomain/checker-sip + restart: unless-stopped + + # ── Directory & Auth checkers ────────────────────────────────────────────── + + checker-ldap: + image: happydomain/checker-ldap + restart: unless-stopped + + checker-kerberos: + image: happydomain/checker-kerberos + restart: unless-stopped + + checker-stun-turn: + image: happydomain/checker-stun-turn + restart: unless-stopped + + # ── CalDAV / CardDAV checkers ────────────────────────────────────────────── + + checker-caldav: + image: happydomain/checker-caldav + restart: unless-stopped + + checker-carddav: + image: happydomain/checker-carddav + restart: unless-stopped + +volumes: + storage: +``` + +### How it works + +Each checker runs as a standalone HTTP service. happyDomain delegates check +requests to the matching container via the `HAPPYDOMAIN_CHECKER__ENDPOINT` +environment variable. When an endpoint is not set, the corresponding checker +runs locally inside the happyDomain process instead. + +Two checkers rely on additional third-party backends: + +- **Zonemaster** (`checker-zonemaster`) queries the `zonemaster/backend` + service. The `HAPPYDOMAIN_CHECKER_ZONEMASTER_ZONEMASTERAPIURL` variable tells + the checker where that backend listens. +- **Matrix federation tester** (`checker-matrix`) queries the + `matrixdotorg/federation-tester-backend` service. The + `HAPPYDOMAIN_CHECKER_MATRIXIM_FEDERATIONTESTERSERVER` variable points to its + report endpoint. + +### Optional: happyDeliver + +If you run a [happyDeliver](https://happydeliver.io) instance for mail-flow +monitoring, uncomment the `HAPPYDOMAIN_CHECKER_HAPPYDELIVER_ENDPOINT` line and +add the corresponding service: + +```yaml + checker-happydeliver: + image: happydomain/checker-happydeliver + restart: unless-stopped +``` + +### Optional: blacklist API keys + +The `checker-blacklist` service works without API keys (it uses DNS-based +blocklists by default), but you can enable additional sources — Google Safe +Browsing, VirusTotal, abuse.ch URLhaus — by configuring the matching admin +options from the happyDomain administration interface once the stack is running. + + +## Admin interface + +happyDomain exposes administration commands through a Unix socket. The +container includes the `hadmin` wrapper: ``` docker exec my_container hadmin /api/users docker exec my_container hadmin /api/users/0123456789/send_validation_email -X POST ``` -This is in fact a wrapper above `curl`, but you have to start by the URL, and place options after it. +`hadmin` is a thin wrapper around `curl` — start with the URL path, then add +any `curl` options after it. + + +## Using a configuration file + +Instead of environment variables, you can place a configuration file either in +`/data/happydomain.conf` (inside the data volume) or bind-mount it to +`/etc/happydomain.conf`: + +``` +docker run -v happydomain.conf:/etc/happydomain.conf -p 8081:8081 happydomain/happydomain +``` diff --git a/content/introduction/deploy/docker.fr.md b/content/introduction/deploy/docker.fr.md index e66e19e..091fd8d 100644 --- a/content/introduction/deploy/docker.fr.md +++ b/content/introduction/deploy/docker.fr.md @@ -4,78 +4,340 @@ title: Avec Docker weight: 15 --- -happyDomain est sponsorisé Docker. +happyDomain est sponsorisé par Docker. Vous trouverez notre image officielle sur [le Docker Hub](https://hub.docker.com/r/happydomain/happydomain/). -Cette image exécutera happyDomain en tant que processus unique, avec une base de données LevelDB (similaire à sqlite, LevelDB est une base de données stockée sur le disque, il n'est pas nécessaire de configurer quoi que ce soit d'autre). +L'image exécute happyDomain en tant que processus unique avec une base de données LevelDB stockée sur le disque — aucune base de données supplémentaire à configurer. -## Versions, étiquettes and architectures supportés +## Versions, étiquettes et architectures supportées -Toutes les étiquettes (*tags*) sont construites pour les architectures de processeur les plus courantes (`amd64`, `arm64` et `arm/v7`). -Nous ne construisons des images uniquement basées sur la distribution Alpine Linux, ce qui assure des images de taille minimale. +Toutes les étiquettes (*tags*) sont construites pour `amd64`, `arm64` et `arm/v7` et sont basées sur Alpine. -Actuellement, les étiquettes disponibles sont : +Les étiquettes actuellement disponibles : -- `latest`: il s'agit de la version la plus récente, correspondant à la branche `master` de notre dépôt de sources. +- `latest` : la version la plus récente, correspondant à la branche `master` de notre dépôt. -## Utilisation de l'image +## Démarrage rapide (conteneur unique) -### À des fins de test - -Vous pouvez tester happyDomain ou l'utiliser pour votre usage personnel, avec l'option `HAPPYDOMAIN_NO_AUTH=1` : cela créera automatiquement un compte par défaut, et désactivera toutes les fonctionnalités liées à la gestion des utilisateurs (inscription, connexion, ...). +Pour un test rapide ou un usage personnel, utilisez `HAPPYDOMAIN_NO_AUTH=1` pour désactiver la gestion des comptes : ``` docker run -e HAPPYDOMAIN_NO_AUTH=1 -p 8081:8081 happydomain/happydomain ``` -Les données sont stockées dans le répertoire `/data`. -Si vous souhaitez conserver vos paramètres d'une exécution à l'autre, vous devrez attacher ce répertoire à un volume géré par Docker ou à un répertoire sur votre hôte : +Les données sont stockées à l'intérieur du conteneur. Pour les conserver entre les redémarrages, attachez un volume : ``` docker volume create happydomain_data docker run -e HAPPYDOMAIN_NO_AUTH=1 -v happydomain_data:/data -p 8081:8081 happydomain/happydomain ``` - -### En production - -happyDomain a besoin d'envoyer du courrier électronique, afin de vérifier les adresses et d'effectuer la récupération des mots de passe, vous devez donc configurer un relais SMTP. -Utilisez les options `HAPPYDOMAIN_MAIL_SMTP_HOST`, `HAPPYDOMAIN_MAIL_SMTP_PORT` (par défaut 25), `HAPPYDOMAIN_MAIL_SMTP_USERNAME` et `HAPPYDOMAIN_MAIL_SMTP_PASSWORD` à cette fin : +Pour une instance de production avec envoi d'e-mails : ``` -docker run -e HAPPYDOMAIN_MAIL_SMTP_HOST=smtp.yourcompany.com -e HAPPYDOMAIN_MAIL_SMTP_USERNAME=happydomain -e HAPPYDOMAIN_MAIL_SMTP_PASSWORD=secret -v /var/lib/happydomain:/data -p 8081:8081 happydomain/happydomain -``` - -Si vous préférez utiliser un fichier de configuration, vous pouvez le placer soit dans `/data/happydomain.conf` pour utiliser le volume, soit lier votre fichier à `/etc/happydomain.conf` : - -``` -docker run -v happydomain.conf:/etc/happydomain.conf -p 8081:8081 happydomain/happydomain +docker run \ + -e HAPPYDOMAIN_MAIL_SMTP_HOST=smtp.votreentreprise.com \ + -e HAPPYDOMAIN_MAIL_SMTP_USERNAME=happydomain \ + -e HAPPYDOMAIN_MAIL_SMTP_PASSWORD=secret \ + -v /var/lib/happydomain:/data \ + -p 8081:8081 \ + happydomain/happydomain ``` -#### Étendre l'image de base +## Déploiement complet avec tous les vérificateurs -Par défaut, happyDomain utilise `sendmail`, si vous préférez, vous pouvez créer votre propre image avec le paquet `ssmtp` : +happyDomain intègre tous les vérificateurs (*checkers*) en natif, mais certains +d'entre eux s'appuient sur des outils externes (DNSViz, Zonemaster, Matrix +federation tester) distribués dans leurs propres images Docker. Les faire +tourner comme des services séparés vous donne l'expérience complète des +vérificateurs et une meilleure isolation. +L'approche recommandée est `docker compose`. Enregistrez le fichier suivant +sous le nom `docker-compose.yml` et lancez `docker compose up -d`. + +```yaml +services: + happydomain: + image: happydomain/happydomain + ports: + - "8080:8081" + environment: + # Décommentez pour un usage mono-utilisateur / test + # HAPPYDOMAIN_NO_AUTH: "1" + + # Configuration mail (obligatoire en production multi-utilisateurs) + # HAPPYDOMAIN_MAIL_SMTP_HOST: "mailer" + + # ── DNS / DNSSEC ───────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_DNSVIZ_ENDPOINT: "http://checker-dnsviz:8080" + HAPPYDOMAIN_CHECKER_DNSSEC_ENDPOINT: "http://checker-dnssec:8080" + HAPPYDOMAIN_CHECKER_ZONEMASTER_ENDPOINT: "http://checker-zonemaster:8080" + HAPPYDOMAIN_CHECKER_ZONEMASTER_ZONEMASTERAPIURL: "http://zonemaster:5000" + HAPPYDOMAIN_CHECKER_DELEGATION_ENDPOINT: "http://checker-delegation:8080" + HAPPYDOMAIN_CHECKER_AUTHORITATIVE_CONSISTENCY_ENDPOINT: "http://checker-authoritative-consistency:8080" + HAPPYDOMAIN_CHECKER_ALIAS_ENDPOINT: "http://checker-alias:8080" + HAPPYDOMAIN_CHECKER_LEGACY_RECORDS_ENDPOINT: "http://checker-legacy-records:8080" + HAPPYDOMAIN_CHECKER_NS_RESTRICTIONS_ENDPOINT: "http://checker-ns-restrictions:8080" + HAPPYDOMAIN_CHECKER_RESOLVER_PROPAGATION_ENDPOINT: "http://checker-resolver-propagation:8080" + HAPPYDOMAIN_CHECKER_REVERSE_ZONE_ENDPOINT: "http://checker-reverse-zone:8080" + HAPPYDOMAIN_CHECKER_PTR_ENDPOINT: "http://checker-ptr:8080" + HAPPYDOMAIN_CHECKER_DANGLING_ENDPOINT: "http://checker-dangling:8080" + + # ── Sécurité / Certificats ──────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_TLS_ENDPOINT: "http://checker-tls:8080" + HAPPYDOMAIN_CHECKER_DANE_ENDPOINT: "http://checker-dane:8080" + HAPPYDOMAIN_CHECKER_CAA_ENDPOINT: "http://checker-caa:8080" + HAPPYDOMAIN_CHECKER_BLACKLIST_ENDPOINT: "http://checker-blacklist:8080" + + # ── E-mail ──────────────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_SMTP_ENDPOINT: "http://checker-smtp:8080" + HAPPYDOMAIN_CHECKER_EMAIL_AUTOCONFIG_ENDPOINT: "http://checker-email-autoconfig:8080" + HAPPYDOMAIN_CHECKER_OPENPGPKEY_SMIMEA_ENDPOINT: "http://checker-email-keys:8080" + + # ── Web & Protocoles ────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_HTTP_ENDPOINT: "http://checker-http:8080" + HAPPYDOMAIN_CHECKER_SSH_ENDPOINT: "http://checker-ssh:8080" + HAPPYDOMAIN_CHECKER_PING_ENDPOINT: "http://checker-ping:8080" + HAPPYDOMAIN_CHECKER_SRV_ENDPOINT: "http://checker-srv:8080" + + # ── Collaboration / Messagerie ──────────────────────────────────────── + HAPPYDOMAIN_CHECKER_MATRIXIM_ENDPOINT: "http://checker-matrix:8080" + HAPPYDOMAIN_CHECKER_MATRIXIM_FEDERATIONTESTERSERVER: "http://matrixfederationtester:8080/api/report?server_name=%s" + HAPPYDOMAIN_CHECKER_XMPP_ENDPOINT: "http://checker-xmpp:8080" + HAPPYDOMAIN_CHECKER_SIP_ENDPOINT: "http://checker-sip:8080" + + # ── Annuaire & Authentification ─────────────────────────────────────── + HAPPYDOMAIN_CHECKER_LDAP_ENDPOINT: "http://checker-ldap:8080" + HAPPYDOMAIN_CHECKER_KERBEROS_ENDPOINT: "http://checker-kerberos:8080" + HAPPYDOMAIN_CHECKER_STUNTURN_ENDPOINT: "http://checker-stun-turn:8080" + + # ── CalDAV / CardDAV ────────────────────────────────────────────────── + HAPPYDOMAIN_CHECKER_CALDAV_ENDPOINT: "http://checker-caldav:8080" + HAPPYDOMAIN_CHECKER_CARDDAV_ENDPOINT: "http://checker-carddav:8080" + + # ── Optionnel : intégration happyDeliver ────────────────────────────── + # HAPPYDOMAIN_CHECKER_HAPPYDELIVER_ENDPOINT: "http://checker-happydeliver:8080" + + restart: unless-stopped + volumes: + - storage:/var/lib/happydomain:rw + + # ── Vérificateurs DNS / DNSSEC ───────────────────────────────────────────── + + checker-dnsviz: + image: happydomain/checker-dnsviz + restart: unless-stopped + + checker-dnssec: + image: happydomain/checker-dnssec + restart: unless-stopped + + checker-zonemaster: + image: happydomain/checker-zonemaster + restart: unless-stopped + + zonemaster: + image: zonemaster/backend + command: full + restart: unless-stopped + + checker-delegation: + image: happydomain/checker-delegation + restart: unless-stopped + + checker-authoritative-consistency: + image: happydomain/checker-authoritative-consistency + restart: unless-stopped + + checker-alias: + image: happydomain/checker-alias + restart: unless-stopped + + checker-legacy-records: + image: happydomain/checker-legacy-records + restart: unless-stopped + + checker-ns-restrictions: + image: happydomain/checker-ns-restrictions + restart: unless-stopped + + checker-resolver-propagation: + image: happydomain/checker-resolver-propagation + restart: unless-stopped + + checker-reverse-zone: + image: happydomain/checker-reverse-zone + restart: unless-stopped + + checker-ptr: + image: happydomain/checker-ptr + restart: unless-stopped + + checker-dangling: + image: happydomain/checker-dangling + restart: unless-stopped + + # ── Vérificateurs Sécurité / Certificats ─────────────────────────────────── + + checker-tls: + image: happydomain/checker-tls + restart: unless-stopped + + checker-dane: + image: happydomain/checker-dane + restart: unless-stopped + + checker-caa: + image: happydomain/checker-caa + restart: unless-stopped + + checker-blacklist: + image: happydomain/checker-blacklist + restart: unless-stopped + + # ── Vérificateurs e-mail ──────────────────────────────────────────────────── + + checker-smtp: + image: happydomain/checker-smtp + restart: unless-stopped + + checker-email-autoconfig: + image: happydomain/checker-email-autoconfig + restart: unless-stopped + + checker-email-keys: + image: happydomain/checker-email-keys + restart: unless-stopped + + # ── Vérificateurs Web & Protocoles ───────────────────────────────────────── + + checker-http: + image: happydomain/checker-http + restart: unless-stopped + + checker-ssh: + image: happydomain/checker-ssh + restart: unless-stopped + + checker-ping: + image: happydomain/checker-ping + restart: unless-stopped + cap_add: + - NET_RAW # requis pour l'ICMP + + checker-srv: + image: happydomain/checker-srv + restart: unless-stopped + + # ── Vérificateurs Collaboration / Messagerie ──────────────────────────────── + + checker-matrix: + image: happydomain/checker-matrix + restart: unless-stopped + + matrixfederationtester: + image: matrixdotorg/federation-tester-backend + environment: + BIND_ADDRESS: "0.0.0.0:8080" + restart: unless-stopped + + checker-xmpp: + image: happydomain/checker-xmpp + restart: unless-stopped + + checker-sip: + image: happydomain/checker-sip + restart: unless-stopped + + # ── Vérificateurs Annuaire & Authentification ─────────────────────────────── + + checker-ldap: + image: happydomain/checker-ldap + restart: unless-stopped + + checker-kerberos: + image: happydomain/checker-kerberos + restart: unless-stopped + + checker-stun-turn: + image: happydomain/checker-stun-turn + restart: unless-stopped + + # ── Vérificateurs CalDAV / CardDAV ───────────────────────────────────────── + + checker-caldav: + image: happydomain/checker-caldav + restart: unless-stopped + + checker-carddav: + image: happydomain/checker-carddav + restart: unless-stopped + +volumes: + storage: ``` -FROM happydomain/happydomain -RUN apk --no-cache add ssmtp -COPY my_ssmtp.conf /etc/ssmtp/ssmtp.conf + +### Comment ça fonctionne + +Chaque vérificateur tourne comme un service HTTP autonome. happyDomain lui délègue +les demandes de vérification via la variable d'environnement +`HAPPYDOMAIN_CHECKER__ENDPOINT`. Si aucun point d'accès n'est configuré, le +vérificateur correspondant s'exécute localement dans le processus happyDomain. + +Deux vérificateurs s'appuient sur des services tiers supplémentaires : + +- **Zonemaster** (`checker-zonemaster`) interroge le service `zonemaster/backend`. + La variable `HAPPYDOMAIN_CHECKER_ZONEMASTER_ZONEMASTERAPIURL` indique au + vérificateur l'adresse de ce service. +- **Matrix federation tester** (`checker-matrix`) interroge le service + `matrixdotorg/federation-tester-backend`. La variable + `HAPPYDOMAIN_CHECKER_MATRIXIM_FEDERATIONTESTERSERVER` pointe vers son point + d'accès de rapport. + +### Optionnel : happyDeliver + +Si vous exploitez une instance [happyDeliver](https://happydeliver.io) pour +surveiller les flux e-mail, décommentez la ligne +`HAPPYDOMAIN_CHECKER_HAPPYDELIVER_ENDPOINT` et ajoutez le service correspondant : + +```yaml + checker-happydeliver: + image: happydomain/checker-happydeliver + restart: unless-stopped ``` +### Optionnel : clés API pour checker-blacklist + +Le service `checker-blacklist` fonctionne sans clé API (il utilise des listes +de blocage DNS par défaut), mais vous pouvez activer des sources supplémentaires +— Google Safe Browsing, VirusTotal, abuse.ch URLhaus — en configurant les +options d'administration correspondantes depuis l'interface d'administration de +happyDomain une fois la pile démarrée. + ## Interface d'administration -happyDomain expose certaines commandes d'administration à travers un socket unix. -Le conteneur docker contient un script pour accéder à cette partie d'administration : `hadmin`. - -Vous pouvez l'utiliser de cette manière : +happyDomain expose des commandes d'administration à travers un socket Unix. +Le conteneur inclut l'utilitaire `hadmin` : ``` docker exec my_container hadmin /api/users docker exec my_container hadmin /api/users/0123456789/send_validation_email -X POST ``` -Il s'agit en fait d'une surcouche au-dessus de `curl`, mais vous devez commencer par l'URL, et placer les options après. +`hadmin` est une surcouche légère autour de `curl` — commencez par le chemin +d'URL, puis ajoutez les options `curl` après. + + +## Utilisation d'un fichier de configuration + +Plutôt que des variables d'environnement, vous pouvez placer un fichier de +configuration dans `/data/happydomain.conf` (dans le volume de données) ou le +monter directement sur `/etc/happydomain.conf` : + +``` +docker run -v happydomain.conf:/etc/happydomain.conf -p 8081:8081 happydomain/happydomain +``` diff --git a/content/pages/checks.en.md b/content/pages/checks.en.md new file mode 100644 index 0000000..ced19fd --- /dev/null +++ b/content/pages/checks.en.md @@ -0,0 +1,174 @@ +--- +date: 2026-04-05T12:00:00+02:00 +title: Monitoring & Checks +author: nemunaire +weight: 35 +description: "Set up automated health checks to monitor your domains and services" +--- + +happyDomain includes a built-in monitoring system that lets you run automated health checks on your domains and services. Checkers periodically collect data (such as ping response times, domain expiry dates, or DNS audit results), evaluate it against thresholds you define, and report a clear status: OK, Warning, Critical, or Error. + +## Browsing available checkers + +You can see all available checkers by navigating to the **Checkers** page from the main menu. + + + +Each checker is labelled with the scope it applies to: + +- **Domain-level**: checks that concern the domain itself, independent of DNS records (e.g. domain expiry via WHOIS). +- **Zone-level**: checks that need the full zone content (e.g. DNSSEC validation). +- **Service-level**: checks that target a specific service on a subdomain (e.g. ping, HTTP check). + +Use the search bar to filter checkers by name. Click on a checker to see its description and configuration options. + + +## Configuring a checker for your domain + +To set up a checker on one of your domains: + +1. Go to your domain's page and open the **Checks** tab. +2. You will see a table of checkers available for this domain. Click **Configure** next to the checker you want to set up. + + + +On the configuration page, you will find several sections: + +### Checker options + +Options are grouped by category: + +- **Admin Options** -- system-wide settings controlled by the administrator (read-only for regular users). +- **Configuration** -- user-level preferences such as warning and critical thresholds. These are the main settings you will adjust. +- **Domain-specific Settings** -- values automatically filled in based on the domain being checked (e.g. the domain name itself). +- **Checker Parameters** -- additional runtime parameters. + +Fill in or adjust the options to match your needs, then click **Save**. + + + +### Rules + +Each checker comes with one or more **rules** that evaluate different aspects of the collected data. For example, a ping checker might have separate rules for latency and packet loss. + +You can enable or disable individual rules using the toggle switches. Each rule may also have its own specific options that you can configure. + + + + +## Scheduling automatic checks + +Once a checker is configured, you can schedule it to run automatically at a regular interval. + +In the **Schedule** section of the checker configuration page: + +1. Toggle **Run automatically** to enable scheduling. +2. Set the **Check interval** (in hours) -- this determines how often the check runs. +3. The **Next scheduled run** time is displayed so you know when the next execution will happen. +4. Click **Save** to apply the schedule. + + + +{{% notice style="info" title="Interval limits" icon="clock" %}} +Each checker defines minimum and maximum intervals to prevent overloading external services. The interface will respect these bounds when you configure the schedule. +{{% /notice %}} + +When scheduling is disabled, the checker can still be run manually at any time. + + +## Running a check manually + +You can trigger a check at any time without waiting for the schedule: + +1. Navigate to the checker's **Executions** page (from the domain checks list, click **View Results**). +2. Click **Run Check Now**. +3. A dialog opens where you can: + - Select which rules to run for this execution. + - Override options temporarily (these overrides are not saved). +4. Click **Run Check** to start the execution. + + + +A confirmation message will appear with the execution ID. The result will show up in the executions list once the check completes. + + +## Viewing check results + +All past executions are listed on the checker's **Executions** page, accessible from your domain's Checks tab by clicking **View Results**. + + + +The executions table shows: + +| Column | Description | +|--------|-------------| +| **Executed at** | When the check ran | +| **Status** | The result: OK, Warning, Critical, Error, or Unknown | +| **Message** | A summary of the findings | +| **Duration** | How long the check took to complete | +| **Type** | Whether it was a scheduled or manual run | + +Click **View** on any execution to see its detailed results. + + +## Understanding execution details + +The execution detail page presents the results in the most appropriate format depending on what the checker provides. + +### Metrics + +When a checker produces metrics (e.g. response time, packet loss percentage), the detail page shows: + +- A **line chart** plotting the metric values over time across recent executions. +- A **data table** listing each metric with its name, value, and unit. + + + +### HTML reports + +Some checkers generate rich HTML reports (e.g. detailed DNS audit results). These are rendered directly in the page. + +### Raw data + +You can always switch to the **Raw JSON** view to inspect the full observation data collected during the execution. Use the view toggle at the top of the report section to switch between Metrics, HTML Report, and Raw JSON. + +### Rule evaluations + +Each rule that ran during the execution reports its own status and message. You can see the per-rule breakdown to understand which specific aspect triggered a warning or critical status. + + + + +## Service-level checks + +Checkers that apply at the service level are configured from the service's own page rather than the domain-level Checks tab. + +1. Navigate to your domain, then to the specific subdomain and service. +2. Open the **Checks** tab for that service. +3. The workflow is the same as for domain-level checkers: configure options, set up scheduling, run checks, and view results. + +Service-level checkers automatically receive information about the service they are attached to (such as IP addresses from a Server service), so they require less manual configuration. + + +## Managing check results + +From the executions list, you can: + +- **Delete a single result** by clicking the delete action on a specific execution. +- **Delete all results** for a checker using the bulk delete option (a confirmation dialog will appear). + +This can be useful to clean up old data or reset after configuration changes. + + +## Status reference + +Checkers report one of the following statuses, in order of severity: + +| Status | Meaning | +|--------|---------| +| **OK** | Everything is within acceptable parameters | +| **Info** | Informational finding, no action needed | +| **Warning** | A threshold is approaching; attention recommended | +| **Critical** | A threshold has been exceeded; action required | +| **Error** | The check itself failed (collection error, bad configuration) | +| **Unknown** | The check could not determine a result | diff --git a/content/pages/checks.fr.md b/content/pages/checks.fr.md new file mode 100644 index 0000000..bfa3c91 --- /dev/null +++ b/content/pages/checks.fr.md @@ -0,0 +1,174 @@ +--- +date: 2026-04-05T12:00:00+02:00 +title: Surveillance & Vérifications +author: nemunaire +weight: 35 +description: "Mettez en place des vérifications automatiques pour surveiller vos domaines et vos services" +--- + +happyDomain intègre un système de surveillance qui permet de lancer des vérifications automatiques sur vos domaines et vos services. Les vérificateurs collectent périodiquement des données (temps de réponse au ping, date d'expiration d'un domaine ou résultats d'audit DNS, par exemple), les évaluent au regard des seuils que vous définissez et rapportent un statut clair : OK, Avertissement, Critique ou Erreur. + +## Parcourir les vérificateurs disponibles + +Vous pouvez consulter l'ensemble des vérificateurs disponibles depuis la page **Vérifications**, accessible par le menu principal. + + + +Chaque vérificateur indique la portée à laquelle il s'applique : + +- **Niveau domaine** : vérifications qui concernent le domaine lui-même, indépendamment des enregistrements DNS (par exemple l'expiration du domaine via WHOIS). +- **Niveau zone** : vérifications qui nécessitent le contenu complet de la zone (par exemple la validation DNSSEC). +- **Niveau service** : vérifications qui ciblent un service précis sur un sous-domaine (par exemple un ping ou une vérification HTTP). + +Utilisez la barre de recherche pour filtrer les vérificateurs par nom. Cliquez sur un vérificateur pour afficher sa description et ses options de configuration. + + +## Configurer un vérificateur pour votre domaine + +Pour mettre en place un vérificateur sur l'un de vos domaines : + +1. Rendez-vous sur la page de votre domaine et ouvrez l'onglet **Vérifications**. +2. Un tableau présente les vérificateurs disponibles pour ce domaine. Cliquez sur **Configurer** en regard du vérificateur souhaité. + + + +La page de configuration regroupe plusieurs sections : + +### Options du vérificateur + +Les options sont réparties par catégorie : + +- **Options d'administration** : paramètres globaux contrôlés par l'administrateur (en lecture seule pour les utilisateurs ordinaires). +- **Configuration** : préférences au niveau de l'utilisateur, comme les seuils d'avertissement et critique. Ce sont les principaux réglages que vous ajusterez. +- **Paramètres propres au domaine** : valeurs renseignées automatiquement à partir du domaine vérifié (par exemple le nom de domaine lui-même). +- **Paramètres du vérificateur** : paramètres d'exécution supplémentaires. + +Renseignez ou ajustez les options selon vos besoins, puis cliquez sur **Enregistrer**. + + + +### Règles + +Chaque vérificateur s'accompagne d'une ou plusieurs **règles** qui évaluent différents aspects des données collectées. Un vérificateur de ping peut par exemple comporter des règles distinctes pour la latence et la perte de paquets. + +Vous pouvez activer ou désactiver chaque règle à l'aide des interrupteurs. Chaque règle peut également disposer de ses propres options à configurer. + + + + +## Planifier des vérifications automatiques + +Une fois un vérificateur configuré, vous pouvez planifier son exécution automatique à intervalle régulier. + +Dans la section **Planification** de la page de configuration du vérificateur : + +1. Activez **Exécuter automatiquement** pour mettre en place la planification. +2. Définissez l'**intervalle de vérification** (en heures) : il détermine la fréquence d'exécution. +3. L'heure de la **prochaine exécution planifiée** est affichée afin que vous sachiez quand aura lieu la prochaine vérification. +4. Cliquez sur **Enregistrer** pour appliquer la planification. + + + +{{% notice style="info" title="Limites d'intervalle" icon="clock" %}} +Chaque vérificateur définit un intervalle minimal et maximal afin d'éviter de surcharger les services externes. L'interface respecte ces bornes lorsque vous configurez la planification. +{{% /notice %}} + +Lorsque la planification est désactivée, le vérificateur peut tout de même être lancé manuellement à tout moment. + + +## Lancer une vérification manuellement + +Vous pouvez déclencher une vérification à tout moment, sans attendre la planification : + +1. Rendez-vous sur la page **Exécutions** du vérificateur (depuis la liste des vérifications du domaine, cliquez sur **Voir les résultats**). +2. Cliquez sur **Lancer la vérification**. +3. Une fenêtre s'ouvre, dans laquelle vous pouvez : + - Sélectionner les règles à exécuter pour cette exécution. + - Remplacer temporairement certaines options (ces remplacements ne sont pas enregistrés). +4. Cliquez sur **Lancer la vérification** pour démarrer l'exécution. + + + +Un message de confirmation apparaît avec l'identifiant de l'exécution. Le résultat s'affiche dans la liste des exécutions une fois la vérification terminée. + + +## Consulter les résultats des vérifications + +Toutes les exécutions passées sont répertoriées sur la page **Exécutions** du vérificateur, accessible depuis l'onglet Vérifications de votre domaine en cliquant sur **Voir les résultats**. + + + +Le tableau des exécutions présente : + +| Colonne | Description | +|--------|-------------| +| **Exécutée le** | Date à laquelle la vérification a été lancée | +| **Statut** | Le résultat : OK, Avertissement, Critique, Erreur ou Inconnu | +| **Message** | Un résumé des constats | +| **Durée** | Le temps qu'a pris la vérification | +| **Type** | S'il s'agit d'une exécution planifiée ou manuelle | + +Cliquez sur **Voir** sur une exécution pour en afficher les résultats détaillés. + + +## Comprendre le détail d'une exécution + +La page de détail d'une exécution présente les résultats sous la forme la plus adaptée à ce que fournit le vérificateur. + +### Métriques + +Lorsqu'un vérificateur produit des métriques (temps de réponse, pourcentage de perte de paquets, etc.), la page de détail affiche : + +- Un **graphique en courbes** qui trace l'évolution des valeurs de la métrique au fil des exécutions récentes. +- Un **tableau de données** qui répertorie chaque métrique avec son nom, sa valeur et son unité. + + + +### Rapports HTML + +Certains vérificateurs génèrent des rapports HTML détaillés (par exemple les résultats d'un audit DNS). Ces rapports sont affichés directement dans la page. + +### Données brutes + +Vous pouvez à tout moment basculer vers la vue **JSON brut** pour examiner l'ensemble des données d'observation collectées durant l'exécution. Utilisez le sélecteur de vue en haut de la section du rapport pour passer de Métriques à Rapport HTML et JSON brut. + +### Évaluation des règles + +Chaque règle exécutée durant l'exécution rapporte son propre statut et son propre message. Le détail règle par règle permet de comprendre quel aspect précis a déclenché un statut d'avertissement ou critique. + + + + +## Vérifications au niveau service + +Les vérificateurs qui s'appliquent au niveau service se configurent depuis la page du service concerné, et non depuis l'onglet Vérifications du domaine. + +1. Rendez-vous sur votre domaine, puis sur le sous-domaine et le service concernés. +2. Ouvrez l'onglet **Vérifications** de ce service. +3. Le déroulement est identique à celui des vérificateurs de niveau domaine : configurer les options, mettre en place la planification, lancer des vérifications et consulter les résultats. + +Les vérificateurs de niveau service reçoivent automatiquement les informations relatives au service auquel ils sont rattachés (comme les adresses IP d'un service Serveur), ce qui réduit la configuration manuelle. + + +## Gérer les résultats des vérifications + +Depuis la liste des exécutions, vous pouvez : + +- **Supprimer un résultat** en cliquant sur l'action de suppression d'une exécution précise. +- **Supprimer tous les résultats** d'un vérificateur grâce à l'option de suppression groupée (une fenêtre de confirmation apparaît). + +Cela peut être utile pour faire le ménage dans les anciennes données ou repartir de zéro après des changements de configuration. + + +## Référence des statuts + +Les vérificateurs rapportent l'un des statuts suivants, par ordre de gravité : + +| Statut | Signification | +|--------|---------| +| **OK** | Tout se situe dans les paramètres acceptables | +| **Information** | Constat informatif, aucune action nécessaire | +| **Avertissement** | Un seuil est sur le point d'être atteint ; une attention est recommandée | +| **Critique** | Un seuil a été dépassé ; une action est requise | +| **Erreur** | La vérification elle-même a échoué (erreur de collecte, mauvaise configuration) | +| **Inconnu** | La vérification n'a pas pu déterminer de résultat | diff --git a/content/reference/plugins/tests.en.md b/content/reference/plugins/tests.en.md index 76bb719..306d398 100644 --- a/content/reference/plugins/tests.en.md +++ b/content/reference/plugins/tests.en.md @@ -1,311 +1,235 @@ --- -title: "Writing a happyDomain Plugin" -description: "Technical guide for developing test plugins for happyDomain" +title: "Writing a happyDomain Checker Plugin" +description: "Technical guide for developing checker plugins for happyDomain" --- -happyDomain supports external **test plugins** — shared libraries (`.so` files) that add domain or service health checks to a running instance. Plugins are loaded at startup without recompiling the server; the operator simply drops a `.so` file into a configured directory. +happyDomain can be extended with external **checker plugins** — shared libraries (`.so` files) that add automated diagnostics on zones, domains, services or users. A checker plugin is loaded into the running happyDomain process at startup; the operator simply drops a `.so` file into a configured directory, no recompilation of the server required. -## How it works - -A plugin receives a set of options assembled from several configuration scopes, runs a check (HTTP call, DNS query, …), and returns a result with a status level and an optional detailed report. Results are stored and displayed in the happyDomain UI alongside the domain or service they concern. - -When happyDomain starts it scans every directory listed in the `plugins-directories` configuration option. For each file it finds, it: - -1. Opens the shared library. -2. Looks up the exported symbol `NewTestPlugin`. -3. Calls `NewTestPlugin()` to obtain a plugin value. -4. Registers the plugin under each name returned by `PluginEnvName()`. - -If the file is not a valid Go plugin, if `NewTestPlugin` is missing, or if it returns an error, a warning is logged and the file is skipped. The server always starts regardless of individual plugin load failures. - ---- - -## The `TestPlugin` interface - -Every plugin must implement four methods: - -```go -type TestPlugin interface { - PluginEnvName() []string - Version() PluginVersionInfo - AvailableOptions() PluginOptionsDocumentation - RunTest(PluginOptions, map[string]string) (*PluginResult, error) -} -``` - ---- - -## Project structure - -A plugin is a standalone Go module compiled with `-buildmode=plugin`. It must be in `package main` and export exactly one symbol: - -```go -func NewTestPlugin() (happydns.TestPlugin, error) -``` - -Recommended layout: - -``` -myplugin/ -├── go.mod -├── Makefile -└── plugin.go # (or split across multiple .go files) -``` - -### go.mod - -``` -module git.happydns.org/happyDomain/plugins/myplugin - -go 1.25 - -require git.happydns.org/happyDomain v0.0.0 -replace git.happydns.org/happyDomain => ../../ -``` - -The `replace` directive points to your local happyDomain checkout, ensuring the plugin is compiled against the exact same types as the server. +A checker has two halves: it **collects** raw data about a target (an observation), then **evaluates** that data against a set of rules to produce a status. Results are stored and displayed in the happyDomain UI alongside the domain or service they concern. {{< notice style="warning" >}} -A Go plugin and the host process share the same runtime. They **must** be compiled with the same Go toolchain version and the same versions of every shared dependency. Any mismatch produces a hard error at load time. +A `.so` plugin is loaded into the happyDomain process and runs with the same privileges as the server. Treat the plugin directory as a trusted location: happyDomain refuses to load plugins from a directory it cannot trust (see [Security and deployment](#security-and-deployment)). {{< /notice >}} --- -## Entry point +## What a checker plugin must export + +Plugins are built against the **`checker-sdk-go`** module, published separately from the happyDomain core. Throughout this page, `checker` refers to the package `git.happydns.org/checker-sdk-go/checker`. + +happyDomain's loader looks for a single exported symbol named `NewCheckerPlugin` with this exact signature: ```go +func NewCheckerPlugin() (*checker.CheckerDefinition, checker.ObservationProvider, error) +``` + +The two return values describe the two halves of a checker: + +- **`*CheckerDefinition`** describes the checker: its identifier, name, version, the observation keys it relies on, the options it accepts, its rules, an optional aggregator, a scheduling interval, and whether it exposes HTML reports or metrics. See the [field table](#checkerdefinition-fields) below. +- **`ObservationProvider`** is the data-collection half. It exposes a `Key()` (the observation key the rules look up) and a `Collect(ctx, opts)` method that returns the raw observation payload. happyDomain serialises that result to JSON and caches it per observation context. +- Return a non-nil `error` if the plugin cannot initialise (a missing environment variable, a broken cgo dependency, …). The host logs the error and skips the file rather than aborting startup. + +A single `.so` may export several plugin kinds. The loader runs every known plugin loader against every file, then skips any symbol it does not recognise, so one binary can ship more than one plugin. + +--- + +## Minimal example + +This is the smallest plugin that loads. It collects a fixed observation and declares no rules. Adapt it from [`checker-dummy`](https://git.happydns.org/checker-dummy), the reference implementation. + +```go +// Command plugin is the happyDomain plugin entrypoint for the dummy checker. +// +// Build with: +// go build -buildmode=plugin -o checker-dummy.so ./plugin package main -import "git.happydns.org/happyDomain/model" +import ( + "context" -func NewTestPlugin() (happydns.TestPlugin, error) { - return &MyPlugin{}, nil + "git.happydns.org/checker-sdk-go/checker" +) + +type dummyProvider struct{} + +func (dummyProvider) Key() checker.ObservationKey { return "dummy.observation" } + +func (dummyProvider) Collect(ctx context.Context, opts checker.CheckerOptions) (any, error) { + return map[string]string{"hello": "world"}, nil +} + +// NewCheckerPlugin is the symbol resolved by happyDomain at startup. +func NewCheckerPlugin() (*checker.CheckerDefinition, checker.ObservationProvider, error) { + def := &checker.CheckerDefinition{ + ID: "com.example.dummy", + Name: "Dummy checker", + Version: "0.1.0", + ObservationKeys: []checker.ObservationKey{"dummy.observation"}, + // Add Rules / Aggregator / Options here in a real plugin. + } + return def, dummyProvider{}, nil } ``` -The constructor is a good place to perform one-time initialisation (open config files, create an HTTP client, …). Return an error if the plugin cannot function. +{{< notice style="warning" >}} +A Go plugin and the host process share the same runtime. They **must** be compiled with the same Go toolchain version and the same versions of every shared dependency. Any mismatch produces a hard error at load time. See [Build constraints](#build-constraints). +{{< /notice >}} --- -## Naming — `PluginEnvName()` +## `CheckerDefinition` fields -Returns one or more short, lowercase identifiers. These names are used to look up the plugin via the API and to key its stored configuration. - -```go -func (p *MyPlugin) PluginEnvName() []string { - return []string{"myplugin"} -} -``` - -Choose names that are unlikely to collide (e.g. `"zonemaster"`, `"matrixim"`) and keep them **stable across versions** because they are persisted alongside user configuration. If two loaded plugins claim the same name, the second one is skipped and a conflict is logged. - ---- - -## Version and availability — `Version()` - -Describes the plugin and controls where it appears in the UI: - -```go -func (p *MyPlugin) Version() happydns.PluginVersionInfo { - return happydns.PluginVersionInfo{ - Name: "My Plugin", - Version: "1.0", - AvailableOn: happydns.PluginAvailability{ - ApplyToDomain: true, - ApplyToService: false, - LimitToProviders: nil, // nil or empty = all providers - LimitToServices: []string{"abstract.MatrixIM"}, - }, - } -} -``` +The `*CheckerDefinition` returned by `NewCheckerPlugin` is the description of your checker: | Field | Type | Description | |---|---|---| -| `ApplyToDomain` | `bool` | Plugin can be run against a whole domain | -| `ApplyToService` | `bool` | Plugin can be run against a specific DNS service | -| `LimitToProviders` | `[]string` | Restrict to certain DNS provider identifiers (empty = no restriction) | -| `LimitToServices` | `[]string` | Restrict to certain service type identifiers, e.g. `"abstract.MatrixIM"` (empty = no restriction) | +| `ID` | `string` | **Required.** Stable, persistent identifier. Pick a namespaced value (`com.example.dnssec-freshness`, not `dnssec`) and never change it: it keys stored results and user configuration. | +| `Name` | `string` | Human-readable name shown in the UI. | +| `Version` | `string` | Plugin version (e.g. `"1.0.0"`). | +| `Availability` | `CheckerAvailability` | Declares which scopes the checker applies to and any provider/service restrictions (see below). | +| `Options` | `CheckerOptionsDocumentation` | Documents the options the checker accepts, grouped by scope (see below). | +| `Rules` | `[]CheckRule` | The rules evaluated against the collected observation. | +| `Aggregator` | `CheckAggregator` | Optional. Combines the per-rule `CheckState`s into a single summary state. | +| `Interval` | `*CheckIntervalSpec` | Optional scheduling bounds (`Min`, `Max`, `Default` durations). | +| `HasHTMLReport` | `bool` | Set when the provider implements `CheckerHTMLReporter`. | +| `HasMetrics` | `bool` | Set when the provider implements `CheckerMetricsReporter`. | +| `ObservationKeys` | `[]ObservationKey` | The observation keys this checker reads. | -Both `ApplyToDomain` and `ApplyToService` may be `true` simultaneously. +### Availability ---- - -## Options — `AvailableOptions()` - -Options are key/value pairs (`map[string]any`) that configure each test run. They are declared grouped by **scope**, i.e. who sets them and how long they persist: - -```go -func (p *MyPlugin) AvailableOptions() happydns.PluginOptionsDocumentation { - return happydns.PluginOptionsDocumentation{ - RunOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - ServiceOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - DomainOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - UserOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - AdminOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - } -} -``` - -### Option scopes - -| Scope | Who sets it | Storage key | Typical use | -|---|---|---|---| -| `RunOpts` | User, at test time | _(transient)_ | Per-invocation parameters | -| `ServiceOpts` | User | plugin + user + domain + service | Service-level configuration | -| `DomainOpts` | User | plugin + user + domain | Domain-level configuration | -| `UserOpts` | User | plugin + user | Personal preferences (e.g. language) | -| `AdminOpts` | Administrator | plugin | Instance-wide settings, shared credentials | - -Before `RunTest` is called, happyDomain merges all scoped values from least specific (admin) to most specific (run-time). More-specific values silently override less-specific ones. `RunTest` always receives a single flat map and does not need to know which scope each value came from. - -### Option fields - -Each option is a `PluginOptionDocumentation` (an alias for `Field`): +`CheckerAvailability` controls where the checker is offered in the UI: | Field | Type | Description | |---|---|---| -| `Id` | `string` | **Required.** Key used in the `PluginOptions` map inside `RunTest` | -| `Type` | `string` | Input type: `"string"`, `"select"` | -| `Label` | `string` | Human-readable label shown in the UI | -| `Placeholder` | `string` | Placeholder text for the input field | -| `Default` | `any` | Default value pre-filled in the form | -| `Choices` | `[]string` | Options for `"select"` inputs | -| `Required` | `bool` | Whether the field must be filled before running | -| `Secret` | `bool` | Marks the field as sensitive (e.g. an API key) | -| `Hide` | `bool` | Hides the field from the user entirely | -| `Textarea` | `bool` | Renders a multiline text area | -| `Description` | `string` | Help text displayed below the field | -| `AutoFill` | `string` | Populate the field automatically from context (see below) | +| `ApplyToDomain` | `bool` | Checker can run against a whole domain. | +| `ApplyToZone` | `bool` | Checker can run against a zone. | +| `ApplyToService` | `bool` | Checker can run against a specific service. | +| `LimitToProviders` | `[]string` | Restrict to certain DNS provider identifiers (empty = no restriction). | +| `LimitToServices` | `[]string` | Restrict to certain service type identifiers, e.g. `"abstract.MatrixIM"` (empty = no restriction). | -### Auto-fill +### Options -When `AutoFill` is set, happyDomain populates the field from the test context; the user is not prompted: +Options are declared grouped by **scope**, i.e. who sets them and how long they persist. Each scope is a slice of `CheckerOptionDocumentation`: -| Constant | String value | Populated with | +| Scope | Who sets it | Typical use | |---|---|---| -| `happydns.AutoFillDomainName` | `"domain_name"` | FQDN of the domain under test, e.g. `"example.com."` | -| `happydns.AutoFillSubdomain` | `"subdomain"` | Subdomain relative to the zone, e.g. `"www"` — service-scoped tests only | -| `happydns.AutoFillServiceType` | `"service_type"` | Service type identifier, e.g. `"abstract.MatrixIM"` — service-scoped tests only | +| `AdminOpts` | Administrator | Instance-wide settings, shared credentials. | +| `UserOpts` | User | Personal preferences (e.g. language). | +| `DomainOpts` | User | Domain-level configuration. | +| `ServiceOpts` | User | Service-level configuration. | +| `RunOpts` | User, at run time | Per-invocation parameters. | -```go -{ - Id: "domainName", - Type: "string", - Label: "Domain name", - AutoFill: happydns.AutoFillDomainName, - Required: true, -} -``` +happyDomain merges the scoped values from least specific (admin) to most specific (run-time) before calling `Collect`, so the provider receives a single flat `CheckerOptions` map. Each option is a `CheckerOptionField` with fields such as `Id`, `Type`, `Label`, `Default`, `Choices`, `Required`, `Secret`, `Description` and `AutoFill`. Read typed values out of the map with the SDK helpers `checker.GetOption`, `checker.GetIntOption`, `checker.GetBoolOption`, … + +{{< notice style="info" >}} +When happyDomain registers an externalisable checker, it automatically appends an `endpoint` admin option, so the administrator can delegate collection to a remote HTTP endpoint instead of running the checker in-process. Leave it empty to run locally. +{{< /notice >}} --- -## Running the check — `RunTest()` +## The `ObservationProvider` -`RunTest` receives the merged option map and a metadata map (reserved for future use), performs the check, and returns a `PluginResult`. - -Always assert option values to a concrete type before use — the map holds `any`: +The provider is the data-collection half of the checker: ```go -func (p *MyPlugin) RunTest(opts happydns.PluginOptions, _ map[string]string) (*happydns.PluginResult, error) { - domain, ok := opts["domainName"].(string) - if !ok || domain == "" { - return nil, fmt.Errorf("domainName option is required") - } - - // … perform the check … - - return &happydns.PluginResult{ - Status: happydns.PluginResultStatusOK, - StatusLine: "All good", - Report: myStructuredReport, - }, nil +type ObservationProvider interface { + Key() ObservationKey + Collect(ctx context.Context, opts CheckerOptions) (any, error) } ``` -Return a **non-nil error** only for unexpected failures (network errors, invalid configuration). For expected check failures — the monitored service is down, DNS records are wrong — return a `PluginResult` with an appropriate status and a human-readable `StatusLine`. +- `Key()` returns the observation key this provider fills. It must match one of the `ObservationKeys` declared in the definition. +- `Collect` performs the actual work (a DNS query, an HTTP call, …) and returns any JSON-serialisable value. happyDomain marshals it to JSON and caches it; the rules then read it back. -### Result fields +A provider can optionally implement additional SDK interfaces to extend its behaviour: -| Field | Type | Description | -|---|---|---| -| `Status` | `PluginResultStatus` | Overall result level (see below) | -| `StatusLine` | `string` | Short summary displayed in the UI | -| `Report` | `any` | Any JSON-serialisable value stored as structured diagnostic data | - -### Status levels (worst → best) - -| Constant | Meaning | +| Interface | Purpose | |---|---| -| `PluginResultStatusKO` | Check failed | -| `PluginResultStatusWarn` | Check passed with warnings | -| `PluginResultStatusInfo` | Informational, no action required | -| `PluginResultStatusOK` | Check fully passed | +| `CheckerHTMLReporter` | `GetHTMLReport(ctx ReportContext)` renders the stored observation as an HTML document. | +| `CheckerMetricsReporter` | `ExtractMetrics(ctx ReportContext, collectedAt)` produces time-series metrics. | +| `CheckEnabler` | `IsEligible(ctx, opts)` decides, from the target's actual data, whether running the checker is meaningful at all. | +| `DiscoveryPublisher` | `DiscoverEntries(data)` publishes `DiscoveryEntry` records other checkers can consume. | + +Rules return `CheckState` values whose `Status` is one of `StatusOK`, `StatusInfo`, `StatusWarn`, `StatusCrit`, `StatusError` or `StatusUnknown`. + +### Optional: standalone server + +The SDK also provides `checker.Server`, HTTP scaffolding for running a checker as a remote endpoint instead of (or alongside) an in-process plugin. It exposes the routes `/health` and `/collect`, plus `/definition`, `/evaluate` and `/report` when the provider implements the matching optional interfaces. A provider that implements `CheckerInteractive` (`RenderForm` / `ParseForm`) additionally gets a human-facing form on `/check`, usable outside of happyDomain. See the [SDK README](https://git.happydns.org/checker-sdk-go) for details; the in-process plugin path described above does not require any of this. --- -## Building +## Build constraints -```bash -go build -buildmode=plugin -o happydomain-plugin-test-myplugin.so \ - git.happydns.org/happyDomain/plugins/myplugin -``` +Go's `plugin` package is unforgiving. To load successfully, your plugin must be built with: -Minimal `Makefile`: +- the **same Go toolchain version** as happyDomain itself, including the same patch level; +- the **same versions of every shared dependency** (pin them in your `go.mod`, vendoring the exact versions happyDomain ships); +- `CGO_ENABLED=1`; +- the same `GOOS`/`GOARCH` as the host binary. -```makefile -PLUGIN_NAME=myplugin -TARGET=../happydomain-plugin-test-$(PLUGIN_NAME).so +If any of these do not match, `plugin.Open` fails with a (sometimes cryptic) error like *"plugin was built with a different version of package …"*. The host logs it and skips the file. -all: $(TARGET) - -$(TARGET): *.go - go build -buildmode=plugin -o $@ git.happydns.org/happyDomain/plugins/$(PLUGIN_NAME) -``` - -The prefix `happydomain-plugin-test-` is a convention; happyDomain loads every file in the plugin directories regardless of its name. +Go's `plugin` package only works on **linux**, **darwin** and **freebsd**. On other platforms happyDomain is built without plugin support and the configured plugin directories are ignored, with a warning logged at startup. --- -## Deployment +## Security and deployment -### 1. Copy the `.so` file +### Directory and file permissions + +Loading a `.so` file is arbitrary code execution as the happyDomain process, so the loader enforces strict ownership before it touches any file: + +- The plugin directory **must not be a symbolic link** — happyDomain refuses to follow one, to prevent it being redirected to an attacker-controlled path. +- The plugin directory **must not be group- or world-writable**. A directory writable by anyone but the owner is treated as a fatal misconfiguration and aborts loading. +- Any individual `.so` file that is **group- or world-writable is skipped** (logged and ignored), even inside a properly locked-down directory. + +In practice: keep the directory owned by the happyDomain user, mode `0755`, and the plugin files mode `0644`. ```bash -cp happydomain-plugin-test-myplugin.so /usr/lib/happydomain/plugins/ +sudo install -d -m 0755 -o happydomain /var/lib/happydomain/plugins +sudo install -m 0644 -o happydomain checker-dummy.so /var/lib/happydomain/plugins/ ``` -### 2. Point happyDomain at the directory - -`happydomain.conf`: - -``` -plugins-directories=/usr/lib/happydomain/plugins -``` - -Environment variable: +### Building the plugin ```bash -HAPPYDOMAIN_PLUGINS_DIRECTORIES=/usr/lib/happydomain/plugins +CGO_ENABLED=1 go build -buildmode=plugin -o checker-dummy.so ./plugin ``` -Multiple directories may be listed as a comma-separated value. +### Pointing happyDomain at the directory -### 3. Check the logs +The directory is configured with the **`--plugins-directory`** flag, which **may be repeated** to scan several directories: -On a successful load: - -``` -Plugin My Plugin loaded (version 1.0) +```bash +happydomain --plugins-directory /var/lib/happydomain/plugins ``` -On a name conflict or load error a warning is logged with the filename and reason. +The equivalent environment variable is `HAPPYDOMAIN_PLUGINS_DIRECTORY`. + +The loader scans each configured directory and attempts to load every `.so` file it finds. An individual plugin that fails to load — wrong build, missing symbols, a panic in its factory — is logged and skipped without aborting startup; one bad `.so` never prevents the others from loading. + +### Restart and check the logs + +```bash +sudo systemctl restart happydomain +``` + +On a successful load, happyDomain logs: + +``` +Plugin com.example.dummy (/var/lib/happydomain/plugins/checker-dummy.so) loaded +``` --- -## Reference implementations +## Licensing -Two plugins are bundled in this directory: +Checker plugins import only `git.happydns.org/checker-sdk-go/checker`, which is licensed under **Apache-2.0**. The SDK is deliberately split out of the AGPL-3.0 happyDomain core as a small, stable public API for third-party checkers. -- **`matrix/`** — queries the Matrix federation tester API. Demonstrates `ApplyToService` with `LimitToServices` and `AdminOpts` for the backend URL. -- **`zonemaster/`** — drives the Zonemaster JSON-RPC API, polls for completion, and maps results to severity levels. Demonstrates `AutoFillDomainName`, `UserOpts` for language selection, and multi-level status mapping. +A plugin built against this SDK is therefore **not** a derivative work of happyDomain, and you may distribute your checker `.so` under any license you choose (MIT, Apache, proprietary, AGPL — whatever fits your needs). + +--- + +## Reference implementation + +[`checker-dummy`](https://git.happydns.org/checker-dummy) is the fully working, documented template that this page mirrors. Start from it when writing your own checker. diff --git a/content/reference/plugins/tests.fr.md b/content/reference/plugins/tests.fr.md index 535d704..b5494fd 100644 --- a/content/reference/plugins/tests.fr.md +++ b/content/reference/plugins/tests.fr.md @@ -1,311 +1,235 @@ --- -title: "Écrire un plugin happyDomain" -description: "Guide technique pour développer des plugins de test pour happyDomain" +title: "Écrire un plugin de vérification happyDomain" +description: "Guide technique pour développer des plugins checker pour happyDomain" --- -happyDomain prend en charge des **plugins de test** externes — des bibliothèques partagées (fichiers `.so`) qui ajoutent des vérifications de santé sur les domaines ou les services d'une instance en cours d'exécution. Les plugins sont chargés au démarrage sans recompiler le serveur ; l'opérateur dépose simplement un fichier `.so` dans un répertoire configuré. +happyDomain peut être étendu par des **plugins de vérification** (*checkers*) externes : des bibliothèques partagées (fichiers `.so`) qui ajoutent des diagnostics automatisés sur les zones, les domaines, les services ou les utilisateurs. Un plugin checker est chargé dans le processus happyDomain au démarrage. L'opérateur dépose simplement un fichier `.so` dans un répertoire configuré, sans recompiler le serveur. -## Fonctionnement - -Un plugin reçoit un ensemble d'options assemblées depuis plusieurs portées de configuration, exécute une vérification (appel HTTP, requête DNS, …) et renvoie un résultat avec un niveau de statut et un rapport détaillé optionnel. Les résultats sont stockés et affichés dans l'interface happyDomain aux côtés du domaine ou du service concerné. - -Au démarrage, happyDomain parcourt chaque répertoire listé dans l'option de configuration `plugins-directories`. Pour chaque fichier trouvé, il : - -1. Ouvre la bibliothèque partagée. -2. Recherche le symbole exporté `NewTestPlugin`. -3. Appelle `NewTestPlugin()` pour obtenir une valeur de plugin. -4. Enregistre le plugin sous chaque nom renvoyé par `PluginEnvName()`. - -Si le fichier n'est pas un plugin Go valide, si `NewTestPlugin` est absent ou s'il retourne une erreur, un avertissement est journalisé et le fichier est ignoré. Le serveur démarre toujours, quels que soient les échecs de chargement individuels. - ---- - -## L'interface `TestPlugin` - -Tout plugin doit implémenter quatre méthodes : - -```go -type TestPlugin interface { - PluginEnvName() []string - Version() PluginVersionInfo - AvailableOptions() PluginOptionsDocumentation - RunTest(PluginOptions, map[string]string) (*PluginResult, error) -} -``` - ---- - -## Structure du projet - -Un plugin est un module Go autonome compilé avec `-buildmode=plugin`. Il doit être dans `package main` et exporter exactement un symbole : - -```go -func NewTestPlugin() (happydns.TestPlugin, error) -``` - -Organisation recommandée : - -``` -myplugin/ -├── go.mod -├── Makefile -└── plugin.go # (ou réparti sur plusieurs fichiers .go) -``` - -### go.mod - -``` -module git.happydns.org/happyDomain/plugins/myplugin - -go 1.25 - -require git.happydns.org/happyDomain v0.0.0 -replace git.happydns.org/happyDomain => ../../ -``` - -La directive `replace` pointe vers votre dépôt local happyDomain, garantissant que le plugin est compilé avec exactement les mêmes types que le serveur. +Un checker comporte deux moitiés. Il **collecte** d'abord des données brutes sur une cible (une observation). Il **évalue** ensuite ces données au regard d'un ensemble de règles afin de produire un statut. Les résultats sont stockés puis affichés dans l'interface de happyDomain, à côté du domaine ou du service concerné. {{< notice style="warning" >}} -Un plugin Go et le processus hôte partagent le même environnement d'exécution. Ils **doivent** être compilés avec la même version de la chaîne d'outils Go et les mêmes versions de toutes les dépendances partagées. Tout écart provoque une erreur fatale au chargement. +Un plugin `.so` est chargé dans le processus happyDomain et s'exécute avec les mêmes privilèges que le serveur. Le répertoire des plugins doit être considéré comme un emplacement de confiance : happyDomain refuse de charger des plugins depuis un répertoire qui ne l'est pas (voir [Sécurité et déploiement](#sécurité-et-déploiement)). {{< /notice >}} --- -## Point d'entrée +## Ce qu'un plugin checker doit exporter + +Les plugins sont construits avec le module **`checker-sdk-go`**, publié séparément du cœur de happyDomain. Dans cette page, `checker` désigne le paquet `git.happydns.org/checker-sdk-go/checker`. + +Le chargeur de happyDomain recherche un unique symbole exporté nommé `NewCheckerPlugin`, avec cette signature exacte : ```go +func NewCheckerPlugin() (*checker.CheckerDefinition, checker.ObservationProvider, error) +``` + +Les deux valeurs de retour décrivent les deux moitiés d'un checker : + +- **`*CheckerDefinition`** décrit le checker : son identifiant, son nom, sa version, les clés d'observation dont il dépend, les options qu'il accepte, ses règles, un agrégateur optionnel, un intervalle de planification, et s'il expose des rapports HTML ou des métriques. Voir le [tableau des champs](#champs-de-checkerdefinition) ci-dessous. +- **`ObservationProvider`** est la moitié chargée de la collecte. Elle expose une méthode `Key()` (la clé d'observation que les règles consultent) et une méthode `Collect(ctx, opts)` qui renvoie la charge utile brute de l'observation. happyDomain sérialise ce résultat en JSON et le met en cache pour chaque contexte d'observation. +- Renvoyez une `error` non nulle si le plugin ne peut pas s'initialiser (variable d'environnement manquante, dépendance cgo cassée, …). L'hôte journalise l'erreur et ignore le fichier, sans interrompre le démarrage. + +Un même fichier `.so` peut exporter plusieurs types de plugins. Le chargeur applique chaque chargeur connu à chaque fichier, puis ignore tout symbole qu'il ne reconnaît pas. Un binaire peut donc fournir plusieurs plugins. + +--- + +## Exemple minimal + +Voici le plus petit plugin qui se charge. Il collecte une observation fixe et ne déclare aucune règle. On peut l'adapter à partir de [`checker-dummy`](https://git.happydns.org/checker-dummy), l'implémentation de référence. + +```go +// Command plugin is the happyDomain plugin entrypoint for the dummy checker. +// +// Build with: +// go build -buildmode=plugin -o checker-dummy.so ./plugin package main -import "git.happydns.org/happyDomain/model" +import ( + "context" -func NewTestPlugin() (happydns.TestPlugin, error) { - return &MyPlugin{}, nil + "git.happydns.org/checker-sdk-go/checker" +) + +type dummyProvider struct{} + +func (dummyProvider) Key() checker.ObservationKey { return "dummy.observation" } + +func (dummyProvider) Collect(ctx context.Context, opts checker.CheckerOptions) (any, error) { + return map[string]string{"hello": "world"}, nil +} + +// NewCheckerPlugin is the symbol resolved by happyDomain at startup. +func NewCheckerPlugin() (*checker.CheckerDefinition, checker.ObservationProvider, error) { + def := &checker.CheckerDefinition{ + ID: "com.example.dummy", + Name: "Dummy checker", + Version: "0.1.0", + ObservationKeys: []checker.ObservationKey{"dummy.observation"}, + // Add Rules / Aggregator / Options here in a real plugin. + } + return def, dummyProvider{}, nil } ``` -Le constructeur est l'endroit idéal pour effectuer une initialisation unique (ouvrir des fichiers de configuration, créer un client HTTP, …). Retournez une erreur si le plugin ne peut pas fonctionner. +{{< notice style="warning" >}} +Un plugin Go et le processus hôte partagent le même *runtime*. Ils **doivent** être compilés avec la même version de la chaîne d'outils Go et les mêmes versions de chaque dépendance partagée. Toute divergence produit une erreur bloquante au chargement. Voir [Contraintes de build](#contraintes-de-build). +{{< /notice >}} --- -## Nommage — `PluginEnvName()` +## Champs de `CheckerDefinition` -Renvoie un ou plusieurs identifiants courts en minuscules. Ces noms sont utilisés pour retrouver le plugin via l'API et pour indexer sa configuration stockée. - -```go -func (p *MyPlugin) PluginEnvName() []string { - return []string{"myplugin"} -} -``` - -Choisissez des noms peu susceptibles d'entrer en conflit (ex. `"zonemaster"`, `"matrixim"`) et gardez-les **stables entre les versions**, car ils sont persistés avec la configuration utilisateur. Si deux plugins chargés revendiquent le même nom, le second est ignoré et un conflit est journalisé. - ---- - -## Version et disponibilité — `Version()` - -Décrit le plugin et contrôle l'endroit où il apparaît dans l'interface : - -```go -func (p *MyPlugin) Version() happydns.PluginVersionInfo { - return happydns.PluginVersionInfo{ - Name: "My Plugin", - Version: "1.0", - AvailableOn: happydns.PluginAvailability{ - ApplyToDomain: true, - ApplyToService: false, - LimitToProviders: nil, // nil ou vide = tous les fournisseurs - LimitToServices: []string{"abstract.MatrixIM"}, - }, - } -} -``` +Le `*CheckerDefinition` renvoyé par `NewCheckerPlugin` est la description de votre checker : | Champ | Type | Description | |---|---|---| -| `ApplyToDomain` | `bool` | Le plugin peut être exécuté sur un domaine entier | -| `ApplyToService` | `bool` | Le plugin peut être exécuté sur un service DNS spécifique | -| `LimitToProviders` | `[]string` | Restreint à certains identifiants de fournisseurs DNS (vide = aucune restriction) | -| `LimitToServices` | `[]string` | Restreint à certains types de services, ex. `"abstract.MatrixIM"` (vide = aucune restriction) | +| `ID` | `string` | **Requis.** Identifiant stable et persistant. Choisissez une valeur préfixée par un espace de noms (`com.example.dnssec-freshness`, et non `dnssec`) et ne la changez jamais : elle indexe les résultats stockés et la configuration utilisateur. | +| `Name` | `string` | Nom lisible affiché dans l'interface. | +| `Version` | `string` | Version du plugin (par exemple `"1.0.0"`). | +| `Availability` | `CheckerAvailability` | Déclare les portées auxquelles le checker s'applique et d'éventuelles restrictions de fournisseur ou de service (voir ci-dessous). | +| `Options` | `CheckerOptionsDocumentation` | Documente les options acceptées par le checker, regroupées par portée (voir ci-dessous). | +| `Rules` | `[]CheckRule` | Les règles évaluées sur l'observation collectée. | +| `Aggregator` | `CheckAggregator` | Optionnel. Combine les `CheckState` produits par chaque règle en un état de synthèse unique. | +| `Interval` | `*CheckIntervalSpec` | Bornes de planification optionnelles (durées `Min`, `Max`, `Default`). | +| `HasHTMLReport` | `bool` | À activer lorsque le provider implémente `CheckerHTMLReporter`. | +| `HasMetrics` | `bool` | À activer lorsque le provider implémente `CheckerMetricsReporter`. | +| `ObservationKeys` | `[]ObservationKey` | Les clés d'observation que ce checker lit. | -`ApplyToDomain` et `ApplyToService` peuvent être tous les deux `true` simultanément. +### Disponibilité ---- - -## Options — `AvailableOptions()` - -Les options sont des paires clé/valeur (`map[string]any`) qui configurent chaque exécution de test. Elles sont déclarées regroupées par **portée**, c'est-à-dire qui les définit et combien de temps elles persistent : - -```go -func (p *MyPlugin) AvailableOptions() happydns.PluginOptionsDocumentation { - return happydns.PluginOptionsDocumentation{ - RunOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - ServiceOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - DomainOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - UserOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - AdminOpts: []happydns.PluginOptionDocumentation{ /* … */ }, - } -} -``` - -### Portées des options - -| Portée | Qui la définit | Clé de stockage | Usage typique | -|---|---|---|---| -| `RunOpts` | L'utilisateur, au moment du test | _(transitoire)_ | Paramètres propres à l'exécution | -| `ServiceOpts` | L'utilisateur | plugin + utilisateur + domaine + service | Configuration au niveau du service | -| `DomainOpts` | L'utilisateur | plugin + utilisateur + domaine | Configuration au niveau du domaine | -| `UserOpts` | L'utilisateur | plugin + utilisateur | Préférences personnelles (ex. langue) | -| `AdminOpts` | L'administrateur | plugin | Paramètres d'instance, identifiants partagés | - -Avant l'appel à `RunTest`, happyDomain fusionne toutes les valeurs par portée, de la moins spécifique (admin) à la plus spécifique (exécution). Les valeurs plus spécifiques écrasent silencieusement les moins spécifiques. `RunTest` reçoit toujours une map plate unique et n'a pas besoin de savoir de quelle portée provient chaque valeur. - -### Champs d'une option - -Chaque option est un `PluginOptionDocumentation` (un alias pour `Field`) : +`CheckerAvailability` contrôle l'endroit où le checker est proposé dans l'interface : | Champ | Type | Description | |---|---|---| -| `Id` | `string` | **Obligatoire.** Clé utilisée dans la map `PluginOptions` dans `RunTest` | -| `Type` | `string` | Type de saisie : `"string"`, `"select"` | -| `Label` | `string` | Libellé lisible affiché dans l'interface | -| `Placeholder` | `string` | Texte indicatif du champ de saisie | -| `Default` | `any` | Valeur par défaut pré-remplie dans le formulaire | -| `Choices` | `[]string` | Options pour les saisies de type `"select"` | -| `Required` | `bool` | Indique si le champ doit être rempli avant l'exécution | -| `Secret` | `bool` | Marque le champ comme sensible (ex. une clé API) | -| `Hide` | `bool` | Masque entièrement le champ à l'utilisateur | -| `Textarea` | `bool` | Affiche une zone de texte multiligne | -| `Description` | `string` | Texte d'aide affiché sous le champ | -| `AutoFill` | `string` | Remplit le champ automatiquement depuis le contexte (voir ci-dessous) | +| `ApplyToDomain` | `bool` | Le checker peut s'exécuter sur un domaine entier. | +| `ApplyToZone` | `bool` | Le checker peut s'exécuter sur une zone. | +| `ApplyToService` | `bool` | Le checker peut s'exécuter sur un service précis. | +| `LimitToProviders` | `[]string` | Restreint à certains identifiants de fournisseurs DNS (vide = aucune restriction). | +| `LimitToServices` | `[]string` | Restreint à certains identifiants de types de services, par exemple `"abstract.MatrixIM"` (vide = aucune restriction). | -### Remplissage automatique +### Options -Lorsque `AutoFill` est défini, happyDomain remplit le champ à partir du contexte du test ; l'utilisateur n'est pas sollicité : +Les options sont déclarées par **portée**, c'est-à-dire selon qui les définit et combien de temps elles persistent. Chaque portée est une tranche de `CheckerOptionDocumentation` : -| Constante | Valeur chaîne | Rempli avec | +| Portée | Qui la définit | Usage habituel | |---|---|---| -| `happydns.AutoFillDomainName` | `"domain_name"` | FQDN du domaine testé, ex. `"example.com."` | -| `happydns.AutoFillSubdomain` | `"subdomain"` | Sous-domaine relatif à la zone, ex. `"www"` — tests à portée service uniquement | -| `happydns.AutoFillServiceType` | `"service_type"` | Identifiant du type de service, ex. `"abstract.MatrixIM"` — tests à portée service uniquement | +| `AdminOpts` | Administrateur | Réglages valables pour toute l'instance, identifiants partagés. | +| `UserOpts` | Utilisateur | Préférences personnelles (par exemple la langue). | +| `DomainOpts` | Utilisateur | Configuration au niveau du domaine. | +| `ServiceOpts` | Utilisateur | Configuration au niveau du service. | +| `RunOpts` | Utilisateur, au moment de l'exécution | Paramètres propres à une invocation. | -```go -{ - Id: "domainName", - Type: "string", - Label: "Nom de domaine", - AutoFill: happydns.AutoFillDomainName, - Required: true, -} -``` +happyDomain fusionne les valeurs des différentes portées, de la moins spécifique (administrateur) à la plus spécifique (exécution), avant d'appeler `Collect`. Le provider reçoit donc une unique table `CheckerOptions` à plat. Chaque option est un `CheckerOptionField` avec des champs comme `Id`, `Type`, `Label`, `Default`, `Choices`, `Required`, `Secret`, `Description` et `AutoFill`. On lit les valeurs typées de la table à l'aide des fonctions du SDK `checker.GetOption`, `checker.GetIntOption`, `checker.GetBoolOption`, … + +{{< notice style="info" >}} +Lorsque happyDomain enregistre un checker externalisable, il ajoute automatiquement une option d'administration `endpoint`. L'administrateur peut ainsi déléguer la collecte à un point d'accès HTTP distant plutôt que de l'exécuter dans le processus. Laissée vide, elle fait fonctionner le checker localement. +{{< /notice >}} --- -## Exécuter la vérification — `RunTest()` +## L'`ObservationProvider` -`RunTest` reçoit la map d'options fusionnée et une map de métadonnées (réservée à un usage futur), effectue la vérification et renvoie un `PluginResult`. - -Convertissez toujours les valeurs d'options vers un type concret avant de les utiliser — la map contient des valeurs de type `any` : +Le provider est la moitié du checker chargée de la collecte : ```go -func (p *MyPlugin) RunTest(opts happydns.PluginOptions, _ map[string]string) (*happydns.PluginResult, error) { - domain, ok := opts["domainName"].(string) - if !ok || domain == "" { - return nil, fmt.Errorf("l'option domainName est obligatoire") - } - - // … effectuer la vérification … - - return &happydns.PluginResult{ - Status: happydns.PluginResultStatusOK, - StatusLine: "Tout est bon", - Report: myStructuredReport, - }, nil +type ObservationProvider interface { + Key() ObservationKey + Collect(ctx context.Context, opts CheckerOptions) (any, error) } ``` -Retournez une **erreur non nulle** uniquement pour les échecs inattendus (erreurs réseau, configuration invalide). Pour les échecs de vérification attendus — le service surveillé est indisponible, les enregistrements DNS sont incorrects — retournez un `PluginResult` avec un statut approprié et un `StatusLine` lisible par un humain. +- `Key()` renvoie la clé d'observation que ce provider remplit. Elle doit correspondre à l'une des `ObservationKeys` déclarées dans la définition. +- `Collect` effectue le travail réel (une requête DNS, un appel HTTP, …) et renvoie n'importe quelle valeur sérialisable en JSON. happyDomain la convertit en JSON et la met en cache ; les règles la relisent ensuite. -### Champs du résultat +Un provider peut implémenter des interfaces supplémentaires du SDK pour étendre son comportement : -| Champ | Type | Description | -|---|---|---| -| `Status` | `PluginResultStatus` | Niveau de résultat global (voir ci-dessous) | -| `StatusLine` | `string` | Résumé court affiché dans l'interface | -| `Report` | `any` | Toute valeur sérialisable en JSON, stockée comme données de diagnostic structurées | - -### Niveaux de statut (du pire au meilleur) - -| Constante | Signification | +| Interface | Rôle | |---|---| -| `PluginResultStatusKO` | La vérification a échoué | -| `PluginResultStatusWarn` | La vérification a réussi avec des avertissements | -| `PluginResultStatusInfo` | Informatif, aucune action requise | -| `PluginResultStatusOK` | La vérification a entièrement réussi | +| `CheckerHTMLReporter` | `GetHTMLReport(ctx ReportContext)` rend l'observation stockée sous forme de document HTML. | +| `CheckerMetricsReporter` | `ExtractMetrics(ctx ReportContext, collectedAt)` produit des métriques temporelles. | +| `CheckEnabler` | `IsEligible(ctx, opts)` décide, à partir des données réelles de la cible, s'il est pertinent d'exécuter le checker. | +| `DiscoveryPublisher` | `DiscoverEntries(data)` publie des enregistrements `DiscoveryEntry` que d'autres checkers peuvent consommer. | + +Les règles renvoient des valeurs `CheckState` dont le `Status` vaut `StatusOK`, `StatusInfo`, `StatusWarn`, `StatusCrit`, `StatusError` ou `StatusUnknown`. + +### Optionnel : serveur autonome + +Le SDK fournit aussi `checker.Server`, une ossature HTTP pour exécuter un checker comme un point d'accès distant plutôt que (ou en plus) d'un plugin chargé dans le processus. Elle expose les routes `/health` et `/collect`, ainsi que `/definition`, `/evaluate` et `/report` lorsque le provider implémente les interfaces optionnelles correspondantes. Un provider qui implémente `CheckerInteractive` (`RenderForm` / `ParseForm`) dispose en outre d'un formulaire `/check` destiné aux humains, utilisable en dehors de happyDomain. Voir le [README du SDK](https://git.happydns.org/checker-sdk-go) pour les détails ; le mode plugin décrit plus haut n'en a pas besoin. --- -## Compilation +## Contraintes de build -```bash -go build -buildmode=plugin -o happydomain-plugin-test-myplugin.so \ - git.happydns.org/happyDomain/plugins/myplugin -``` +Le paquet `plugin` de Go est intransigeant. Pour se charger correctement, votre plugin doit être compilé avec : -`Makefile` minimal : +- la **même version de la chaîne d'outils Go** que happyDomain, jusqu'au même niveau de correctif ; +- les **mêmes versions de chaque dépendance partagée** (à figer dans votre `go.mod`, en vendorisant les versions exactes que happyDomain embarque) ; +- `CGO_ENABLED=1` ; +- les mêmes `GOOS` et `GOARCH` que le binaire hôte. -```makefile -PLUGIN_NAME=myplugin -TARGET=../happydomain-plugin-test-$(PLUGIN_NAME).so +Si l'un de ces points ne correspond pas, `plugin.Open` échoue avec une erreur parfois obscure, du type *« plugin was built with a different version of package … »*. L'hôte la journalise et ignore le fichier. -all: $(TARGET) - -$(TARGET): *.go - go build -buildmode=plugin -o $@ git.happydns.org/happyDomain/plugins/$(PLUGIN_NAME) -``` - -Le préfixe `happydomain-plugin-test-` est une convention ; happyDomain charge tous les fichiers présents dans les répertoires de plugins, quel que soit leur nom. +Le paquet `plugin` de Go ne fonctionne que sur **linux**, **darwin** et **freebsd**. Sur les autres plateformes, happyDomain est construit sans prise en charge des plugins et les répertoires configurés sont ignorés, avec un avertissement journalisé au démarrage. --- -## Déploiement +## Sécurité et déploiement -### 1. Copier le fichier `.so` +### Permissions du répertoire et des fichiers + +Charger un fichier `.so` revient à exécuter du code arbitraire avec les droits du processus happyDomain. Le chargeur impose donc des règles strictes de propriété avant de toucher au moindre fichier : + +- Le répertoire des plugins **ne doit pas être un lien symbolique** : happyDomain refuse de le suivre, pour éviter qu'il soit redirigé vers un chemin contrôlé par un attaquant. +- Le répertoire des plugins **ne doit pas être accessible en écriture au groupe ni à tous**. Un répertoire modifiable par quelqu'un d'autre que son propriétaire est traité comme une erreur de configuration bloquante et interrompt le chargement. +- Tout fichier `.so` **accessible en écriture au groupe ou à tous est ignoré** (journalisé puis écarté), même dans un répertoire par ailleurs verrouillé. + +En pratique : conservez le répertoire détenu par l'utilisateur happydomain, en mode `0755`, et les fichiers de plugins en mode `0644`. ```bash -cp happydomain-plugin-test-myplugin.so /usr/lib/happydomain/plugins/ +sudo install -d -m 0755 -o happydomain /var/lib/happydomain/plugins +sudo install -m 0644 -o happydomain checker-dummy.so /var/lib/happydomain/plugins/ ``` -### 2. Indiquer le répertoire à happyDomain - -`happydomain.conf` : - -``` -plugins-directories=/usr/lib/happydomain/plugins -``` - -Variable d'environnement : +### Construire le plugin ```bash -HAPPYDOMAIN_PLUGINS_DIRECTORIES=/usr/lib/happydomain/plugins +CGO_ENABLED=1 go build -buildmode=plugin -o checker-dummy.so ./plugin ``` -Plusieurs répertoires peuvent être listés en les séparant par des virgules. +### Indiquer le répertoire à happyDomain -### 3. Vérifier les journaux +Le répertoire se configure avec l'option **`--plugins-directory`**, qui **peut être répétée** pour analyser plusieurs répertoires : -En cas de chargement réussi : - -``` -Plugin My Plugin loaded (version 1.0) +```bash +happydomain --plugins-directory /var/lib/happydomain/plugins ``` -En cas de conflit de nom ou d'erreur de chargement, un avertissement est journalisé avec le nom du fichier et la raison. +La variable d'environnement équivalente est `HAPPYDOMAIN_PLUGINS_DIRECTORY`. + +Le chargeur analyse chaque répertoire configuré et tente de charger tous les fichiers `.so` qu'il y trouve. Un plugin qui échoue au chargement (mauvaise compilation, symboles absents, panique dans sa fabrique) est journalisé puis ignoré, sans interrompre le démarrage : un seul `.so` défectueux n'empêche jamais le chargement des autres. + +### Redémarrer et vérifier les journaux + +```bash +sudo systemctl restart happydomain +``` + +En cas de chargement réussi, happyDomain journalise : + +``` +Plugin com.example.dummy (/var/lib/happydomain/plugins/checker-dummy.so) loaded +``` --- -## Implémentations de référence +## Licence -Deux plugins sont fournis dans ce répertoire : +Les plugins checker n'importent que `git.happydns.org/checker-sdk-go/checker`, sous licence **Apache-2.0**. Le SDK a été délibérément détaché du cœur de happyDomain (sous AGPL-3.0) pour offrir une API publique réduite et stable aux checkers tiers. -- **`matrix/`** — interroge l'API de test de fédération Matrix. Illustre `ApplyToService` avec `LimitToServices` et `AdminOpts` pour l'URL du serveur tiers. -- **`zonemaster/`** — pilote l'API JSON-RPC de Zonemaster, attend la fin du test et agrège les résultats par niveau de sévérité. Illustre `AutoFillDomainName`, `UserOpts` pour la sélection de la langue et la gestion de statuts multi-niveaux. +Un plugin construit avec ce SDK n'est donc **pas** une œuvre dérivée de happyDomain. Vous pouvez distribuer votre `.so` sous la licence de votre choix (MIT, Apache, propriétaire ou AGPL, selon vos besoins). + +--- + +## Implémentation de référence + +[`checker-dummy`](https://git.happydns.org/checker-dummy) est le modèle complet et documenté dont s'inspire cette page. Partez-en pour écrire votre propre checker. diff --git a/content/reference/records/SOA.en.md b/content/reference/records/SOA.en.md index 45f1665..f3e5352 100644 --- a/content/reference/records/SOA.en.md +++ b/content/reference/records/SOA.en.md @@ -2,9 +2,36 @@ date: 2021-01-12T21:38:49+02:00 author: Frederic title: SOA (Start Of Authority) +description: "Understand the Start Of Authority record, the mandatory record at the apex of every DNS zone, and how happyDomain manages it for you." weight: 10 aliases: records/SOA --- -The Start of Authority-SOA is the first record of a zone. +The **Start Of Authority** (SOA) record is defined by [RFC 1035](https://www.rfc-editor.org/rfc/rfc1035). It is mandatory and unique: exactly one SOA must sit at the apex (the root) of every DNS zone. Its presence declares that the name server is authoritative for the zone and carries the parameters that govern how the zone is replicated between servers and cached by resolvers. + +## Fields of the SOA record + +The SOA record gathers seven values: + +| Field | Description | +|---|---| +| **MNAME** (primary name server) | The hostname of the primary (master) name server for the zone. | +| **RNAME** (responsible party) | The email address of the person responsible for the zone, encoded in DNS form: the `@` is replaced by a dot (for example `hostmaster.example.com.` means `hostmaster@example.com`). | +| **Serial** | A version number for the zone. It must increase every time the zone changes, so that secondary servers know they need to transfer the new content. | +| **Refresh** | How often (in seconds) a secondary server checks the primary for an updated serial. | +| **Retry** | How long (in seconds) a secondary waits before retrying a failed refresh. | +| **Expire** | How long (in seconds) a secondary keeps serving the zone when it cannot reach the primary, before considering the data stale. | +| **Minimum** (negative-cache TTL) | The duration for which resolvers cache negative answers (NXDOMAIN), per [RFC 2308](https://www.rfc-editor.org/rfc/rfc2308). | + +## The SOA in happyDomain + +happyDomain does not present the SOA as a standalone record to edit field by field. Instead, the apex of your zone is modelled as an **Origin** service, which groups the SOA together with the zone's name servers (NS records). You will therefore find the SOA at the root of your domain, alongside the list of authoritative name servers, rather than in a separate form. + +The **serial** is, in most cases, handled automatically. When you publish your changes, many DNS providers manage the serial themselves: happyDomain detects this capability and re-reads the zone after publication to reflect the serial the provider actually assigned. You normally do not need (nor are you expected) to set it by hand. + +{{% notice style="info" title="What you can and cannot change" %}} +The exact behaviour depends on your DNS provider. Some providers expose the full SOA and let happyDomain submit its values; others manage the SOA serial — and sometimes the other timers — on their side. When the provider takes care of the serial, any value happyDomain shows for it simply reflects the published state and is refreshed automatically. +{{% /notice %}} + +For more on how the apex and other groupings are represented, see the {{< relref "../services" >}} chapter. diff --git a/content/reference/records/SOA.fr.md b/content/reference/records/SOA.fr.md index 3f573d8..090d534 100644 --- a/content/reference/records/SOA.fr.md +++ b/content/reference/records/SOA.fr.md @@ -1,9 +1,36 @@ --- date: 2020-12-15T01:01:08+01:00 title: SOA (Start Of Authority) +description: "Comprendre l'enregistrement Start Of Authority, présent obligatoirement à la racine de chaque zone DNS, et la façon dont happyDomain le gère pour vous." weight: 10 aliases: records/SOA --- -Le SOA est le premier enregistrement d'une zone. +L'enregistrement **Start Of Authority** (SOA) est défini par la [RFC 1035](https://www.rfc-editor.org/rfc/rfc1035). Il est obligatoire et unique : un seul SOA figure à l'apex (la racine) de chaque zone DNS. Sa présence indique que le serveur de noms fait autorité sur la zone. Il porte également les paramètres qui régissent la réplication de la zone entre serveurs et sa mise en cache par les résolveurs. + +## Les champs de l'enregistrement SOA + +Le SOA réunit sept valeurs : + +| Champ | Description | +|---|---| +| **MNAME** (serveur primaire) | Le nom du serveur de noms primaire (maître) de la zone. | +| **RNAME** (responsable) | L'adresse de courriel du responsable de la zone, encodée à la manière du DNS : le `@` est remplacé par un point. Ainsi, `hostmaster.example.com.` désigne `hostmaster@example.com`. | +| **Serial** | Un numéro de version de la zone. Il augmente à chaque modification, afin que les serveurs secondaires sachent qu'ils doivent transférer le nouveau contenu. | +| **Refresh** | L'intervalle (en secondes) au bout duquel un serveur secondaire vérifie le numéro de série auprès du primaire. | +| **Retry** | Le délai (en secondes) que respecte un secondaire avant de retenter une vérification ayant échoué. | +| **Expire** | La durée (en secondes) pendant laquelle un secondaire continue de servir la zone lorsqu'il ne parvient pas à joindre le primaire, avant de considérer les données comme périmées. | +| **Minimum** (cache négatif) | La durée pendant laquelle les résolveurs conservent en cache les réponses négatives (NXDOMAIN), selon la [RFC 2308](https://www.rfc-editor.org/rfc/rfc2308). | + +## Le SOA dans happyDomain + +happyDomain ne présente pas le SOA comme un enregistrement à éditer champ par champ. La racine de votre zone est plutôt modélisée par un service **Origin**, qui regroupe le SOA et les serveurs de noms de la zone (les enregistrements NS). On retrouve donc le SOA à la racine du domaine, aux côtés de la liste des serveurs faisant autorité, et non dans un formulaire distinct. + +Le **numéro de série** est, dans la plupart des cas, géré automatiquement. Lors de la publication de vos modifications, de nombreux hébergeurs DNS gèrent eux-mêmes ce numéro. happyDomain détecte cette capacité, puis relit la zone après publication afin de refléter le numéro de série réellement attribué par l'hébergeur. Vous n'avez normalement pas à le renseigner à la main. + +{{% notice style="info" title="Ce que l'on peut modifier, et ce que l'on ne peut pas" %}} +Le comportement exact dépend de votre hébergeur DNS. Certains exposent l'ensemble du SOA et laissent happyDomain en transmettre les valeurs ; d'autres gèrent eux-mêmes le numéro de série (et parfois les autres minuteries). Lorsque l'hébergeur prend en charge le numéro de série, la valeur affichée par happyDomain reflète simplement l'état publié et se met à jour automatiquement. +{{% /notice %}} + +Pour en savoir plus sur la représentation de l'apex et des autres regroupements, consultez le chapitre {{< relref "../services" >}}. diff --git a/content/reference/records/TXT.en.md b/content/reference/records/TXT.en.md index cefc6b6..03c040f 100644 --- a/content/reference/records/TXT.en.md +++ b/content/reference/records/TXT.en.md @@ -5,6 +5,40 @@ title: TXT weight: 20 aliases: records/TXT +description: "The TXT record attaches free-form text to a DNS name. Learn what it is used for and how happyDomain edits it through the Text Record service." --- -Please, help us to write this Documentation screen +A **TXT record** (defined in [RFC 1035](https://www.rfc-editor.org/rfc/rfc1035)) attaches one or more free-form text strings to a name in your zone. It carries no predefined meaning of its own, which makes it one of the most versatile record types: any application is free to define its own convention for the text it stores there. + +## Common uses + +Because a TXT record can hold arbitrary text, it has become the carrier for many widespread conventions: + +- **Domain ownership and site verification** — a provider asks you to publish a token so it can confirm you control the domain. +- **SPF** — declares which servers are allowed to send e-mail for your domain. +- **DKIM** — publishes the public key used to sign your outgoing e-mail. +- **DMARC** — sets the policy applied when SPF or DKIM checks fail. +- Various other key or policy publications defined by different tools. + +For most of these purposes, happyDomain offers dedicated, higher-level **services** (SPF, DKIM, DMARC, site verification, and more) that are easier and safer to use than a raw TXT record: they guide you with the right fields and validate the syntax for you. Browse them in the {{< relref "/reference/services" >}} chapter, in particular the e-mail-related services. Prefer those services whenever one matches your need. + +{{% notice style="info" title="When a TXT record becomes a service" %}} +When happyDomain reads your zone, it recognises TXT records that follow a known convention (SPF, DKIM, DMARC, …) and presents them as their dedicated service rather than as a plain Text Record. Only TXT records without a recognised prefix or syntax are shown as a raw **Text Record**. +{{% /notice %}} + +## Editing a TXT record in happyDomain + +In the zone editor, a plain TXT record appears as a **Text Record** service. It is intentionally minimal: a single field holds the text content of the record. + +To work with one: + +1. Open the subdomain where the record should live (the apex of the zone, or any subdomain such as `www`). +2. Add or open the **Text Record** service. +3. Type the full text string in its only field. +4. Adjust the **TTL** if needed, then publish your changes to apply them. + +The value you enter is stored verbatim. Editing it and publishing updates the corresponding TXT record on that subdomain. + +{{% notice style="note" title="Long strings" %}} +A single text string inside a TXT record cannot exceed 255 bytes at the DNS protocol level. Longer values are automatically split into 255-byte chunks for you. You simply enter the complete string in happyDomain — no manual splitting is required. +{{% /notice %}} diff --git a/content/reference/records/TXT.fr.md b/content/reference/records/TXT.fr.md index 2dbb67e..9094e9d 100644 --- a/content/reference/records/TXT.fr.md +++ b/content/reference/records/TXT.fr.md @@ -4,6 +4,40 @@ title: TXT weight: 20 aliases: records/TXT +description: "L'enregistrement TXT associe du texte libre à un nom DNS. Découvrez à quoi il sert et comment happyDomain l'édite grâce au service Enregistrement texte." --- -Documentation à faire +Un **enregistrement TXT** (défini par la [RFC 1035](https://www.rfc-editor.org/rfc/rfc1035)) associe une ou plusieurs chaînes de texte libre à un nom de votre zone. Il ne porte aucune signification propre. C'est ce qui en fait l'un des types d'enregistrement les plus polyvalents : chaque application est libre de définir sa propre convention pour le texte qu'elle y dépose. + +## Usages courants + +Comme un enregistrement TXT peut contenir n'importe quel texte, il est devenu le support de nombreuses conventions répandues : + +- **Vérification de propriété ou de site** : un fournisseur demande de publier un jeton afin de confirmer que l'on contrôle bien le domaine. +- **SPF** : déclare quels serveurs sont autorisés à envoyer du courrier pour le domaine. +- **DKIM** : publie la clé publique servant à signer le courrier sortant. +- **DMARC** : définit la politique à appliquer lorsqu'une vérification SPF ou DKIM échoue. +- Diverses autres publications de clés ou de politiques propres à différents outils. + +Pour la plupart de ces usages, happyDomain propose des **services** dédiés, de plus haut niveau (SPF, DKIM, DMARC, vérification de site, etc.). Ils sont plus simples et plus sûrs à utiliser qu'un enregistrement TXT brut : ils guident la saisie avec les bons champs et en valident la syntaxe. On les retrouve dans le chapitre {{< relref "/reference/services" >}}, notamment parmi les services liés au courrier électronique. Mieux vaut recourir à ces services dès que l'un d'eux correspond au besoin. + +{{% notice style="info" title="Quand un enregistrement TXT devient un service" %}} +Lorsque happyDomain lit votre zone, il reconnaît les enregistrements TXT qui suivent une convention connue (SPF, DKIM, DMARC, etc.) et les présente sous leur service dédié plutôt que comme un simple enregistrement texte. Seuls les enregistrements TXT sans préfixe ni syntaxe reconnus apparaissent comme un **Enregistrement texte** brut. +{{% /notice %}} + +## Éditer un enregistrement TXT dans happyDomain + +Dans l'éditeur de zone, un enregistrement TXT ordinaire apparaît sous la forme d'un service **Enregistrement texte**. Il est volontairement minimal : un unique champ contient le contenu textuel de l'enregistrement. + +Pour le manipuler : + +1. Ouvrez le sous-domaine où l'enregistrement doit se trouver (la racine de la zone, ou un sous-domaine comme `www`). +2. Ajoutez ou ouvrez le service **Enregistrement texte**. +3. Saisissez la chaîne de texte complète dans son unique champ. +4. Ajustez la **durée de vie** (TTL) si besoin, puis publiez vos modifications pour les appliquer. + +La valeur saisie est conservée telle quelle. La modifier puis publier met à jour l'enregistrement TXT correspondant sur ce sous-domaine. + +{{% notice style="note" title="Chaînes longues" %}} +Au niveau du protocole DNS, une chaîne de texte ne peut excéder 255 octets dans un enregistrement TXT. Les valeurs plus longues sont automatiquement découpées en fragments de 255 octets. Il suffit de saisir la chaîne complète dans happyDomain : aucun découpage manuel n'est nécessaire. +{{% /notice %}} diff --git a/content/reference/services/email.en.md b/content/reference/services/email.en.md index 67ab4d8..32be324 100644 --- a/content/reference/services/email.en.md +++ b/content/reference/services/email.en.md @@ -2,8 +2,57 @@ date: 2021-01-12T21:38:49+02:00 author: Frederic title: E-Mail +description: "Declare the mail servers of a zone (MX records) and the related anti-spoofing services (SPF, DKIM, DMARC) that govern how mail is sent and received." aliases: services/email --- -The E-Mail service allows you to define an e-mail server on the zone, as well as the zone settings for sending/receiving e-mails. +The **E-Mail** service lets you declare the mail servers responsible for a zone, and points you to the companion services that control how mail is sent and authenticated for that domain. + +In happyDomain, this service is named **E-Mail servers**: its single job is to publish the `MX` records that tell the rest of the Internet *where* to deliver mail addressed to your domain. Everything that protects *outgoing* mail (proving that a message really comes from you) is handled by separate, dedicated services described further down. + +## Receiving mail: MX records + +An `MX` (Mail eXchanger) record names a host that accepts mail for the domain. A zone usually publishes several of them so that delivery keeps working if one server is unavailable. + +Each entry has two parts: + +- **Priority** — a number that orders the servers. Sending servers try the **lowest** number first; higher numbers are used only as fallbacks. Two records sharing the same priority are treated as equivalent and load-balanced. +- **Mail server** — the hostname of the machine that receives the mail (for example `mx1.example.com.`). This host must itself resolve to an address; it should not be a bare IP. + +A common setup looks like this: + +| Priority | Mail server | +|---|---| +| 10 | `mx1.example.com.` | +| 20 | `mx2.example.com.` | + +Here `mx1` is tried first, and `mx2` is the backup. + +{{% notice style="info" title="One E-Mail service per subdomain" %}} +The E-Mail servers service is *single*: a given subdomain can hold only one such service, which gathers all of its `MX` records together. To declare mail servers for both the apex (`example.com`) and a subdomain (`mail.example.com`), add the service to each of them separately. +{{% /notice %}} + +## Sending mail: authentication and anti-spoofing + +Publishing `MX` records is enough to *receive* mail, but it says nothing about which servers are allowed to *send* mail on your behalf. Without that, anyone can forge messages using your domain. happyDomain offers several dedicated services, each managing its own DNS records, to establish that posture: + +- **SPF** (*Sender Policy Framework*) — a `TXT` record, usually at the zone apex, that lists the servers authorized to send mail for the domain. Receivers compare the sending server against this list. +- **DKIM** (*DomainKeys Identified Mail*) — publishes the public half of a signing key as a `TXT` record under a `._domainkey` selector. Your mail servers sign outgoing messages, and receivers verify the signature against this published key. +- **DMARC** (*Domain-based Message Authentication, Reporting and Conformance*) — a `TXT` record at `_dmarc` that tells receivers what to do with messages failing SPF or DKIM checks (let them through, quarantine, or reject), and where to send aggregate reports. + +Two further services cover transport security and reporting: + +- **MTA-STS** — declares that mail to your domain must be delivered over a secured (TLS) connection. +- **TLS-RPT** — collects reports about TLS delivery problems encountered by sending servers. + +These services are independent of the E-Mail servers service. You can add only the ones you need, but a complete and well-protected mail configuration typically combines `MX`, SPF, DKIM and DMARC. + +## In the zone editor + +To configure mail for a subdomain in the happyDomain zone editor: + +1. Add the **E-Mail servers** service to the subdomain and fill in one line per mail server, with its priority and hostname. +2. Add **SPF**, **DKIM** and **DMARC** as their own services on the relevant subdomain (SPF and DMARC usually at the apex). Each one presents a dedicated form rather than raw record text. + +Because each of these is a distinct abstract service, you manage them separately even though they all work together to make mail for your domain both deliverable and trustworthy. See the {{< relref "/reference/services" >}} chapter for the full list of available services. diff --git a/content/reference/services/email.fr.md b/content/reference/services/email.fr.md index 6cd3b18..d133e80 100644 --- a/content/reference/services/email.fr.md +++ b/content/reference/services/email.fr.md @@ -1,8 +1,57 @@ --- date: 2020-12-15T01:01:08+01:00 title: E-Mail +description: "Déclarez les serveurs de courrier d'une zone (enregistrements MX) ainsi que les services complémentaires (SPF, DKIM, DMARC) qui encadrent l'envoi et la réception des courriels." aliases: services/email --- -Le service E-Mail permet de définir un serveur de courrier électronique sur la zone, ainsi que le paramétrage de la zone en vue d'envoyer/recevoir des courriels. +Le service **E-Mail** permet de déclarer les serveurs de courrier responsables d'une zone. Il oriente également vers les services associés, qui régissent la manière dont le courrier est envoyé et authentifié pour le domaine. + +Dans happyDomain, ce service porte le nom de **E-Mail servers**. Son unique rôle consiste à publier les enregistrements `MX`, ceux qui indiquent au reste d'Internet *où* livrer les courriels adressés à votre domaine. Tout ce qui protège le courrier *sortant*, c'est-à-dire prouver qu'un message provient réellement de vous, relève de services dédiés et distincts, décrits plus bas. + +## Recevoir du courrier : les enregistrements MX + +Un enregistrement `MX` (*Mail eXchanger*) désigne une machine qui accepte le courrier du domaine. Une zone en publie généralement plusieurs, afin que la livraison continue de fonctionner si l'un des serveurs devient indisponible. + +Chaque entrée comporte deux parties : + +- **La priorité** : un nombre qui ordonne les serveurs. Les serveurs émetteurs essaient d'abord le nombre le **plus bas** ; les valeurs plus élevées ne servent que de secours. Deux enregistrements partageant la même priorité sont considérés comme équivalents et se répartissent la charge. +- **Le serveur de courrier** : le nom d'hôte de la machine qui reçoit le courrier (par exemple `mx1.example.com.`). Cet hôte doit lui-même se résoudre vers une adresse ; il ne s'agit pas d'indiquer directement une adresse IP. + +Une configuration courante ressemble à ceci : + +| Priorité | Serveur de courrier | +|---|---| +| 10 | `mx1.example.com.` | +| 20 | `mx2.example.com.` | + +Ici, `mx1` est contacté en premier et `mx2` sert de secours. + +{{% notice style="info" title="Un seul service E-Mail par sous-domaine" %}} +Le service E-Mail servers est *unique* : un sous-domaine donné ne peut héberger qu'un seul service de ce type, qui rassemble l'ensemble de ses enregistrements `MX`. Pour déclarer des serveurs de courrier à la fois sur l'apex (`example.com`) et sur un sous-domaine (`mail.example.com`), on ajoute le service à chacun d'eux séparément. +{{% /notice %}} + +## Envoyer du courrier : authentification et lutte contre l'usurpation + +Publier des enregistrements `MX` suffit pour *recevoir* du courrier, mais ne dit rien sur les serveurs autorisés à en *envoyer* en votre nom. Sans cette indication, n'importe qui peut forger des messages au nom de votre domaine. happyDomain propose plusieurs services dédiés, chacun gérant ses propres enregistrements DNS, pour établir cette protection : + +- **SPF** (*Sender Policy Framework*) : un enregistrement `TXT`, placé en général à l'apex de la zone, qui énumère les serveurs autorisés à envoyer du courrier pour le domaine. Les destinataires comparent le serveur émetteur à cette liste. +- **DKIM** (*DomainKeys Identified Mail*) : publie la partie publique d'une clé de signature dans un enregistrement `TXT`, sous un sélecteur `._domainkey`. Vos serveurs signent les messages sortants, et les destinataires vérifient la signature à l'aide de cette clé publiée. +- **DMARC** (*Domain-based Message Authentication, Reporting and Conformance*) : un enregistrement `TXT` placé sur `_dmarc`, qui indique aux destinataires comment traiter les messages échouant aux contrôles SPF ou DKIM (les laisser passer, les mettre en quarantaine ou les rejeter), et où envoyer les rapports agrégés. + +Deux autres services couvrent la sécurité du transport et la remontée d'informations : + +- **MTA-STS** : déclare que le courrier destiné à votre domaine doit être livré au travers d'une connexion sécurisée (TLS). +- **TLS-RPT** : recueille les rapports relatifs aux problèmes de livraison TLS rencontrés par les serveurs émetteurs. + +Ces services sont indépendants du service E-Mail servers. On peut n'ajouter que ceux dont on a besoin, mais une configuration de courrier complète et bien protégée associe le plus souvent `MX`, SPF, DKIM et DMARC. + +## Dans l'éditeur de zone + +Pour configurer le courrier d'un sous-domaine dans l'éditeur de zone de happyDomain : + +1. On ajoute le service **E-Mail servers** au sous-domaine, puis on renseigne une ligne par serveur de courrier, avec sa priorité et son nom d'hôte. +2. On ajoute **SPF**, **DKIM** et **DMARC** en tant que services à part entière sur le sous-domaine concerné (SPF et DMARC se placent généralement à l'apex). Chacun présente un formulaire dédié plutôt que le contenu brut de l'enregistrement. + +Comme chacune de ces abstractions constitue un service distinct, on les gère séparément, même si elles concourent toutes à rendre le courrier de votre domaine à la fois livrable et digne de confiance. Le chapitre {{< relref "/reference/services" >}} présente la liste complète des services disponibles. From c372f8409abce8b4e4d6627d997f1096c594fc2a Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 11 Jun 2026 16:50:06 +0900 Subject: [PATCH 2/3] docs: restructure help pages into bundles and add new reference pages Convert several pages to leaf bundles with WebP screenshots, add api-keys, domain-availability, notifications, provider-features, quotas, services, settings, signup and subdomains pages, and refresh existing content. --- config.yml | 6 +- content/_index.en.md | 3 - content/_index.fr.md | 3 - content/pages/_index.en.md | 26 ++++ content/pages/_index.fr.md | 30 +++++ content/pages/api-keys.en.md | 55 +++++++++ content/pages/api-keys.fr.md | 54 ++++++++ content/pages/checks.en.md | 2 +- content/pages/checks.fr.md | 2 +- content/pages/domain-abstract.en.md | 8 -- content/pages/domain-abstract.fr.md | 7 -- .../happydomain-abstract-zone-records.webp | Bin 0 -> 76770 bytes .../happydomain-modal-new-subdomain.webp | Bin 0 -> 8244 bytes .../happydomain-modal-service-selector.webp | Bin 0 -> 43022 bytes .../happydomain-offcanva-service-details.webp | Bin 0 -> 17854 bytes content/pages/domain-abstract/index.en.md | 107 ++++++++++++++++ content/pages/domain-abstract/index.fr.md | 106 ++++++++++++++++ content/pages/domain-availability.en.md | 87 +++++++++++++ content/pages/domain-availability.fr.md | 86 +++++++++++++ content/pages/domain-history.en.md | 38 +++++- content/pages/domain-history.fr.md | 38 +++++- content/pages/domain-new.en.md | 2 +- content/pages/domain-new.fr.md | 2 +- content/pages/domains/_index.en.md | 23 ++-- content/pages/domains/_index.fr.md | 18 +-- .../domains/create-domain-on-provider.webp | Bin 0 -> 18892 bytes content/pages/domains/domain-list.png | Bin 85203 -> 0 bytes content/pages/domains/domain-list.webp | Bin 0 -> 37364 bytes .../pages/domains/filtered-by-provider.webp | Bin 0 -> 25450 bytes content/pages/domains/hoster-edit.png | Bin 75097 -> 0 bytes content/pages/domains/hoster-ovh.png | Bin 70747 -> 0 bytes content/pages/domains/hoster-self.png | Bin 73008 -> 0 bytes content/pages/domains/hosters-list.png | Bin 85210 -> 0 bytes content/pages/domains/new-domain.png | Bin 85184 -> 0 bytes content/pages/domains/new-domain.webp | Bin 0 -> 12082 bytes content/pages/domains/provider-menu.webp | Bin 0 -> 14072 bytes content/pages/domains/providers-list.webp | Bin 0 -> 19932 bytes .../happydomain-export-zone.webp | Bin 0 -> 113686 bytes .../happydomain-modal-import-zone.webp | Bin 0 -> 7806 bytes content/pages/import-export/index.en.md | 63 ++++++++++ content/pages/import-export/index.fr.md | 63 ++++++++++ .../happydomain-forget-password-page.webp | Bin 0 -> 14476 bytes .../pages/login/happydomain-login-page.webp | Bin 0 -> 22738 bytes content/pages/login/index.en.md | 45 +++++++ content/pages/login/index.fr.md | 44 +++++++ content/pages/me.en.md | 31 ----- content/pages/me.fr.md | 30 ----- content/pages/notifications.en.md | 116 ++++++++++++++++++ content/pages/notifications.fr.md | 115 +++++++++++++++++ content/pages/provider-features.en.md | 45 +++++++ content/pages/provider-features.fr.md | 44 +++++++ content/pages/provider-list/_index.en.md | 6 +- content/pages/provider-list/_index.fr.md | 8 +- content/pages/provider-list/hosters-list.png | Bin 61272 -> 0 bytes .../pages/provider-list/providers-list.webp | Bin 0 -> 25562 bytes .../pages/provider-new-choice/_index.en.md | 2 +- .../pages/provider-new-choice/_index.fr.md | 2 +- content/pages/provider-update.en.md | 2 +- content/pages/provider-update.fr.md | 2 +- content/pages/publish-changes.en.md | 16 --- content/pages/publish-changes.fr.md | 16 --- .../happydomain-modal-diff-view.webp | Bin 0 -> 39394 bytes .../happydomain-publish-changes-button.webp | Bin 0 -> 1854 bytes content/pages/publish-changes/index.en.md | 68 ++++++++++ content/pages/publish-changes/index.fr.md | 68 ++++++++++ content/pages/quotas.en.md | 40 ++++++ content/pages/quotas.fr.md | 39 ++++++ .../happydomain-abstract-zone-records.webp | Bin 0 -> 76770 bytes .../happydomain-modal-service-selector.webp | Bin 0 -> 43022 bytes content/pages/services/index.en.md | 86 +++++++++++++ content/pages/services/index.fr.md | 85 +++++++++++++ content/pages/settings.en.md | 76 ++++++++++++ content/pages/settings.fr.md | 75 +++++++++++ content/pages/signup.en.md | 44 +++++++ content/pages/signup.fr.md | 43 +++++++ .../happydomain-abstract-zone-records.webp | Bin 0 -> 76770 bytes .../happydomain-modal-new-subdomain.webp | Bin 0 -> 8244 bytes content/pages/subdomains/index.en.md | 66 ++++++++++ content/pages/subdomains/index.fr.md | 65 ++++++++++ content/pages/tools-client.en.md | 2 +- content/pages/tools-client.fr.md | 2 +- 81 files changed, 1957 insertions(+), 155 deletions(-) create mode 100644 content/pages/api-keys.en.md create mode 100644 content/pages/api-keys.fr.md delete mode 100644 content/pages/domain-abstract.en.md delete mode 100644 content/pages/domain-abstract.fr.md create mode 100644 content/pages/domain-abstract/happydomain-abstract-zone-records.webp create mode 100644 content/pages/domain-abstract/happydomain-modal-new-subdomain.webp create mode 100644 content/pages/domain-abstract/happydomain-modal-service-selector.webp create mode 100644 content/pages/domain-abstract/happydomain-offcanva-service-details.webp create mode 100644 content/pages/domain-abstract/index.en.md create mode 100644 content/pages/domain-abstract/index.fr.md create mode 100644 content/pages/domain-availability.en.md create mode 100644 content/pages/domain-availability.fr.md create mode 100644 content/pages/domains/create-domain-on-provider.webp delete mode 100644 content/pages/domains/domain-list.png create mode 100644 content/pages/domains/domain-list.webp create mode 100644 content/pages/domains/filtered-by-provider.webp delete mode 100644 content/pages/domains/hoster-edit.png delete mode 100644 content/pages/domains/hoster-ovh.png delete mode 100644 content/pages/domains/hoster-self.png delete mode 100644 content/pages/domains/hosters-list.png delete mode 100644 content/pages/domains/new-domain.png create mode 100644 content/pages/domains/new-domain.webp create mode 100644 content/pages/domains/provider-menu.webp create mode 100644 content/pages/domains/providers-list.webp create mode 100644 content/pages/import-export/happydomain-export-zone.webp create mode 100644 content/pages/import-export/happydomain-modal-import-zone.webp create mode 100644 content/pages/import-export/index.en.md create mode 100644 content/pages/import-export/index.fr.md create mode 100644 content/pages/login/happydomain-forget-password-page.webp create mode 100644 content/pages/login/happydomain-login-page.webp create mode 100644 content/pages/login/index.en.md create mode 100644 content/pages/login/index.fr.md delete mode 100644 content/pages/me.en.md delete mode 100644 content/pages/me.fr.md create mode 100644 content/pages/notifications.en.md create mode 100644 content/pages/notifications.fr.md create mode 100644 content/pages/provider-features.en.md create mode 100644 content/pages/provider-features.fr.md delete mode 100644 content/pages/provider-list/hosters-list.png create mode 100644 content/pages/provider-list/providers-list.webp delete mode 100644 content/pages/publish-changes.en.md delete mode 100644 content/pages/publish-changes.fr.md create mode 100644 content/pages/publish-changes/happydomain-modal-diff-view.webp create mode 100644 content/pages/publish-changes/happydomain-publish-changes-button.webp create mode 100644 content/pages/publish-changes/index.en.md create mode 100644 content/pages/publish-changes/index.fr.md create mode 100644 content/pages/quotas.en.md create mode 100644 content/pages/quotas.fr.md create mode 100644 content/pages/services/happydomain-abstract-zone-records.webp create mode 100644 content/pages/services/happydomain-modal-service-selector.webp create mode 100644 content/pages/services/index.en.md create mode 100644 content/pages/services/index.fr.md create mode 100644 content/pages/settings.en.md create mode 100644 content/pages/settings.fr.md create mode 100644 content/pages/signup.en.md create mode 100644 content/pages/signup.fr.md create mode 100644 content/pages/subdomains/happydomain-abstract-zone-records.webp create mode 100644 content/pages/subdomains/happydomain-modal-new-subdomain.webp create mode 100644 content/pages/subdomains/index.en.md create mode 100644 content/pages/subdomains/index.fr.md diff --git a/config.yml b/config.yml index 5c7d1f2..0348435 100644 --- a/config.yml +++ b/config.yml @@ -1,10 +1,10 @@ baseURL: https://help.happydomain.org/ defaultContentLanguage: en defaultContentLanguageInSubdir: true +enableGitInfo: true theme: hugo-theme-relearn - languages: en: title: "happyDomain help center" @@ -50,6 +50,7 @@ params: # next to it (a single space resolves to an empty logo title). linkTitle: " " showVisitedLinks: true + hideAuthorEmail: true mermaid: false # "auto" follows the OS light/dark preference: light -> green, dark -> # relearn-dark. Both must be declared as variants so the theme attaches the @@ -61,7 +62,6 @@ params: - identifier: green - identifier: relearn-dark - # The relearn theme attaches CSS classes to generated blocks (e.g. the # `children` shortcode appends `{class="children ..."}` after its list). # Goldmark only interprets that as block attributes when block parsing is @@ -75,4 +75,4 @@ markup: unsafe: true outputs: - home: [ "HTML", "RSS", "PRINT"] + home: ["HTML", "RSS", "PRINT"] diff --git a/content/_index.en.md b/content/_index.en.md index f70cf8a..ceb0bd0 100644 --- a/content/_index.en.md +++ b/content/_index.en.md @@ -4,9 +4,6 @@ title: Welcome to happyDomain author: Frederic description: "Finally a simple interface for domain names." archetype: home -aliases: - en/pages/login - en/pages/signup --- happyDomain is an interface that centralize your domain names and reduces the usual friction points. diff --git a/content/_index.fr.md b/content/_index.fr.md index 4ba7511..739b8c5 100644 --- a/content/_index.fr.md +++ b/content/_index.fr.md @@ -4,9 +4,6 @@ title: happyDomain description: "L'interface des noms de domaine." author: nemunaire archetype: home -aliases: - fr/pages/login - fr/pages/signup --- happyDomain est une interface qui centralise vos noms de domaines et réduit les points de friction habituels. diff --git a/content/pages/_index.en.md b/content/pages/_index.en.md index 81c09c9..7289ecb 100644 --- a/content/pages/_index.en.md +++ b/content/pages/_index.en.md @@ -6,4 +6,30 @@ archetype: chapter weight: 10 --- +This section walks through happyDomain feature by feature, following the path a new user +takes: from creating an account to publishing a fully managed zone. + +You start by [creating an account]({{% relref "signup" %}}) and [logging in]({{% relref "login" %}}), +then land on the [dashboard]({{% relref "domains" %}}) that centralizes all your domains. + +Before importing a domain, you connect a [provider]({{% relref "provider-list" %}}): happyDomain +[adds]({{% relref "provider-new-choice" %}}) and [configures]({{% relref "provider-update" %}}) +it for you, whatever its [specific features]({{% relref "provider-features" %}}). + +You can then [import a domain]({{% relref "domain-new" %}}) and explore it in the +[zone editor]({{% relref "domain-abstract" %}}), which +lets you manage [subdomains]({{% relref "subdomains" %}}) and group records into +[services]({{% relref "services" %}}). Every change is reviewed +before you [publish]({{% relref "publish-changes" %}}) it, and the +[history]({{% relref "domain-history" %}}) keeps track of everything. You can also +[import or export]({{% relref "import-export" %}}) the whole zone as a standard file. + +happyDomain also helps you keep an eye on your domains with +[monitoring and checks]({{% relref "checks" %}}), [availability lookups]({{% relref "domain-availability" %}}) +and the [domain test tool]({{% relref "tools-client" %}}). + +Finally, you can fine-tune your account: [your account and settings]({{% relref "settings" %}}), +[sessions and API access]({{% relref "api-keys" %}}), +[notifications]({{% relref "notifications" %}}) and [quotas]({{% relref "quotas" %}}). + {{% children %}} diff --git a/content/pages/_index.fr.md b/content/pages/_index.fr.md index cba0436..4bffa13 100644 --- a/content/pages/_index.fr.md +++ b/content/pages/_index.fr.md @@ -5,4 +5,34 @@ archetype: chapter weight: 10 --- +Cette section présente happyDomain fonctionnalité par fonctionnalité, en suivant le +parcours d'un nouvel utilisateur : de la création de son compte jusqu'à la publication +d'une zone entièrement gérée. + +Vous commencez par [créer un compte]({{% relref "signup" %}}) et +[vous connecter]({{% relref "login" %}}), puis vous arrivez sur le +[tableau de bord]({{% relref "domains" %}}) qui centralise tous vos domaines. + +Avant d'importer un domaine, vous raccordez un [hébergeur]({{% relref "provider-list" %}}) : +happyDomain l'[ajoute]({{% relref "provider-new-choice" %}}) et le +[configure]({{% relref "provider-update" %}}) pour vous, quelles que soient ses +[particularités]({{% relref "provider-features" %}}). + +Vous pouvez alors [importer un domaine]({{% relref "domain-new" %}}) et le consulter dans +l'[éditeur de zone]({{% relref "domain-abstract" %}}), qui +vous permet de gérer les [sous-domaines]({{% relref "subdomains" %}}) et de regrouper les +enregistrements en [services]({{% relref "services" %}}). Chaque modification est +examinée avant que vous ne la [publiiez]({{% relref "publish-changes" %}}), +et l'[historique]({{% relref "domain-history" %}}) garde la trace de tout. Vous pouvez aussi +[importer ou exporter]({{% relref "import-export" %}}) la zone entière sous forme de fichier standard. + +happyDomain vous aide également à garder un œil sur vos domaines, grâce à la +[surveillance et aux vérifications]({{% relref "checks" %}}), aux +[recherches de disponibilité]({{% relref "domain-availability" %}}) et à +l'[outil de test de domaine]({{% relref "tools-client" %}}). + +Enfin, vous pouvez peaufiner votre compte : [votre compte et vos réglages]({{% relref "settings" %}}), +les [sessions et accès API]({{% relref "api-keys" %}}), les +[notifications]({{% relref "notifications" %}}) et les [quotas]({{% relref "quotas" %}}). + {{% children %}} diff --git a/content/pages/api-keys.en.md b/content/pages/api-keys.en.md new file mode 100644 index 0000000..d3ed063 --- /dev/null +++ b/content/pages/api-keys.en.md @@ -0,0 +1,55 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Sessions & API access +author: nemunaire +weight: 2200 +description: "Manage your active sessions and use authentication tokens to call the happyDomain REST API" +--- + +happyDomain does not have a separate "API keys" feature. Instead, every way of accessing the platform, whether through the web interface or the REST API, relies on the same kind of **session token**. Managing your sessions therefore also means managing your API access. + +You manage your sessions from the security section of your account, under **Active Sessions**. + + + +## Listing your active sessions + +The list shows every session currently open on your account. For each one you see: + +- its **description** (the name given when it was created), followed by a short fingerprint derived from the token; +- a **current session** badge on the session you are using right now; +- when it was **created**, when it was **last used**, and when it **expires**. + +Sessions are sorted with the most recently used first. + +## Creating a token for API access + +To obtain a token you can use to call the API: + +1. Click **Create API key**. +2. Give the session a **description** (for example the name of the script or machine that will use it). This helps you recognise it later in the list. +3. Validate the creation. + +The token secret is then displayed **once**. Use the eye button to reveal it and the copy button to put it on your clipboard. + +{{% notice style="warning" title="Copy the secret immediately" icon="triangle-exclamation" %}} +The session secret is shown only at creation time and is never displayed again. Copy it and store it somewhere safe before closing the dialog. If you lose it, delete the session and create a new one. +{{% /notice %}} + +## Using a token with the REST API + +The token is passed in the HTTP `Authorization` header as a Bearer token. For example, to list your domains: + +```sh +curl -H "Authorization: Bearer YOUR_SECRET_TOKEN" https://your-happydomain-server/api/domains +``` + +Replace `YOUR_SECRET_TOKEN` with the secret you copied, and the host with the address of your happyDomain instance. Any API endpoint is reached the same way, by sending this header with each request. + +## Revoking a session + +To revoke a session (and the token associated with it), click the delete button on its row. The token stops working immediately. You cannot delete the session you are currently using from this list; to end it, simply log out, or use the option below. + +{{% notice style="info" title="Terminate all sessions" icon="circle-info" %}} +The **Terminate all sessions** button closes every session at once, including the one you are using. This is useful if you suspect a token has leaked: all existing tokens become invalid and you are sent back to the [login page]({{% relref "login" %}}). You will then need to log in again and recreate any API tokens you still need. +{{% /notice %}} diff --git a/content/pages/api-keys.fr.md b/content/pages/api-keys.fr.md new file mode 100644 index 0000000..fa699e2 --- /dev/null +++ b/content/pages/api-keys.fr.md @@ -0,0 +1,54 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Sessions et accès à l'API +weight: 2200 +description: "Gérez vos sessions actives et utilisez les jetons d'authentification pour appeler l'API REST de happyDomain" +--- + +happyDomain ne propose pas de fonctionnalité distincte de « clés d'API ». À la place, toutes les façons d'accéder à la plateforme, que ce soit via l'interface web ou via l'API REST, reposent sur le même type de **jeton de session**. Gérer ses sessions revient donc aussi à gérer ses accès à l'API. + +Vous gérez vos sessions depuis la section sécurité de votre compte, sous « Sessions actives ». + + + +## Lister vos sessions actives + +La liste présente toutes les sessions actuellement ouvertes sur votre compte. Pour chacune, vous voyez : + +- sa **description** (le nom donné lors de sa création), suivie d'une courte empreinte dérivée du jeton ; +- un badge « session actuelle » sur la session que vous utilisez en ce moment ; +- sa date de **création**, sa date de **dernière utilisation** et sa date d'**expiration**. + +Les sessions sont triées de la plus récemment utilisée à la plus ancienne. + +## Créer un jeton pour accéder à l'API + +Pour obtenir un jeton utilisable pour appeler l'API : + +1. Cliquez sur « Créer une clé d'API ». +2. Donnez une **description** à la session (par exemple le nom du script ou de la machine qui l'utilisera). Cela vous aidera à la reconnaître plus tard dans la liste. +3. Validez la création. + +Le secret du jeton est alors affiché **une seule fois**. Utilisez le bouton en forme d'œil pour le révéler et le bouton de copie pour le placer dans votre presse-papiers. + +{{% notice style="warning" title="Copiez le secret immédiatement" icon="triangle-exclamation" %}} +Le secret de la session n'est affiché qu'au moment de sa création et n'est plus jamais montré ensuite. Copiez-le et conservez-le en lieu sûr avant de fermer la fenêtre. En cas de perte, supprimez la session et créez-en une nouvelle. +{{% /notice %}} + +## Utiliser un jeton avec l'API REST + +Le jeton se transmet dans l'en-tête HTTP `Authorization`, en tant que jeton « Bearer ». Par exemple, pour lister vos domaines : + +```sh +curl -H "Authorization: Bearer VOTRE_JETON_SECRET" https://votre-serveur-happydomain/api/domains +``` + +Remplacez `VOTRE_JETON_SECRET` par le secret que vous avez copié, et l'hôte par l'adresse de votre instance happyDomain. On atteint n'importe quel point d'accès de l'API de la même manière, en envoyant cet en-tête à chaque requête. + +## Révoquer une session + +Pour révoquer une session (et le jeton qui lui est associé), cliquez sur le bouton de suppression sur sa ligne. Le jeton cesse aussitôt de fonctionner. Vous ne pouvez pas supprimer depuis cette liste la session que vous utilisez actuellement ; pour y mettre fin, déconnectez-vous simplement, ou utilisez l'option ci-dessous. + +{{% notice style="info" title="Fermer toutes les sessions" icon="circle-info" %}} +Le bouton « Fermer toutes les sessions » referme l'ensemble des sessions d'un coup, y compris celle que vous utilisez. C'est utile si vous soupçonnez la fuite d'un jeton : tous les jetons existants deviennent invalides et vous êtes renvoyé vers la [page de connexion]({{% relref "login" %}}). Il vous faudra alors vous reconnecter et recréer les jetons d'API dont vous avez encore besoin. +{{% /notice %}} diff --git a/content/pages/checks.en.md b/content/pages/checks.en.md index ced19fd..1ef0c3f 100644 --- a/content/pages/checks.en.md +++ b/content/pages/checks.en.md @@ -2,7 +2,7 @@ date: 2026-04-05T12:00:00+02:00 title: Monitoring & Checks author: nemunaire -weight: 35 +weight: 1700 description: "Set up automated health checks to monitor your domains and services" --- diff --git a/content/pages/checks.fr.md b/content/pages/checks.fr.md index bfa3c91..3b183c3 100644 --- a/content/pages/checks.fr.md +++ b/content/pages/checks.fr.md @@ -2,7 +2,7 @@ date: 2026-04-05T12:00:00+02:00 title: Surveillance & Vérifications author: nemunaire -weight: 35 +weight: 1700 description: "Mettez en place des vérifications automatiques pour surveiller vos domaines et vos services" --- diff --git a/content/pages/domain-abstract.en.md b/content/pages/domain-abstract.en.md deleted file mode 100644 index f8d0202..0000000 --- a/content/pages/domain-abstract.en.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -date: 2021-01-12T21:38:49+02:00 -title: Your domain -author: Frederic -weight: 30 ---- - -Need help to write this Documentation page \ No newline at end of file diff --git a/content/pages/domain-abstract.fr.md b/content/pages/domain-abstract.fr.md deleted file mode 100644 index 6f50052..0000000 --- a/content/pages/domain-abstract.fr.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -date: 2020-12-09T18:12:45+01:00 -title: Éditer votre zone -weight: 30 ---- - -Documentation à faire diff --git a/content/pages/domain-abstract/happydomain-abstract-zone-records.webp b/content/pages/domain-abstract/happydomain-abstract-zone-records.webp new file mode 100644 index 0000000000000000000000000000000000000000..bdb5aa247af2b100d3fd9db929d2be63660685c2 GIT binary patch literal 76770 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%0Dyf?6(UcC?wNh71azBXWQGG>Fu<5c^SlY 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 literal 0 HcmV?d00001 diff --git a/content/pages/domain-abstract/happydomain-modal-new-subdomain.webp b/content/pages/domain-abstract/happydomain-modal-new-subdomain.webp new file mode 100644 index 0000000000000000000000000000000000000000..4541b7596ca04e046fb78bdbe5fbee91f823b6a9 GIT binary patch literal 8244 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 + +## Records and services + +happyDomain does not show you a raw list of DNS records by default. Instead, it groups related records into **services**, higher-level objects that are easier to reason about (a mail server, a website, a delegation, etc.). Each service expands into the actual records it generates. + +If you prefer to work directly with individual records, you can switch the zone view mode in your [account settings]({{% relref "settings" %}}). The editor then offers an **Add a record** button instead of **Add a service**. + +## Adding a subdomain + +1. Click **Add a subdomain** at the top of the sidebar. +2. Enter the name of the subdomain to create (relative to your domain). +3. happyDomain then proposes to add a first service on that subdomain right away. + +A subdomain only really exists once it carries at least one service, so the two steps are chained together. + +![The add-a-subdomain dialog](happydomain-modal-new-subdomain.webp) + +## Adding a service + +To add a service to an existing subdomain: + +1. Locate the subdomain block (or the domain root) in the viewer. +2. Click the **+** button on the subdomain heading, or use the **Add a service** action. +3. Pick the service type from the selector. The list adapts to what already exists on that subdomain (for instance, you cannot add two conflicting services). +4. Fill in the form for the chosen service, then save. + +![The service type selector](happydomain-modal-service-selector.webp) + +## Inspecting a service + +Click a service to open the **details panel** that slides in from the right. It shows: + +- A description of the service type and any comment you set. +- The concrete DNS records the service produces. +- The propagation status (when the change was last published). +- Any health checks attached to that service (see {{% relref "checks" %}}). + +From this panel you can also adjust the **default TTL** of the service, edit it, or delete it. + +![The service details panel](happydomain-offcanva-service-details.webp) + +## Editing a service + +1. Open the service details panel, then click **Edit this service**; or use the pencil button shown on simple services such as aliases. +2. happyDomain opens the full editing form for the service. +3. Make your changes and save. The viewer refreshes to reflect them. + +## Deleting a service + +1. Open the service details panel. +2. Click **Delete this service**. + +The service and all the records it generated are removed from your working copy of the zone. + +{{% notice style="warning" title="Some services cannot be removed" icon="triangle-exclamation" %}} +The origin service of a zone (the one carrying the SOA and the authoritative name servers) is essential and cannot be deleted from the editor. +{{% /notice %}} + +For aliases (CNAME) and reverse pointers (PTR), a dedicated delete button is available directly on the subdomain heading. + +## Aliases + +When a subdomain holds services, you can attach an **alias** to it using the link button on its heading. The alias makes another name resolve to this subdomain. + +## Next steps + +None of the above changes anything at your hosting provider yet. When you are happy with your edits: + +- Review what will change, then send the changes; see {{% relref "publish-changes" %}}. + +You can also re-import the live zone, or import/export it as a standard zone file: see {{% relref "import-export" %}}. diff --git a/content/pages/domain-abstract/index.fr.md b/content/pages/domain-abstract/index.fr.md new file mode 100644 index 0000000..1938afd --- /dev/null +++ b/content/pages/domain-abstract/index.fr.md @@ -0,0 +1,106 @@ +--- +date: 2020-12-09T18:12:45+01:00 +title: "Utiliser l'éditeur de zone" +weight: 900 +description: "Visualiser, ajouter, modifier et supprimer les enregistrements et services de votre zone, regroupés par sous-domaine" +--- + +L'éditeur de zone est l'écran principal pour travailler sur un domaine. Il présente le contenu de votre zone regroupé par sous-domaine, et vous permet d'ajouter, modifier et supprimer les services et enregistrements qui composent votre zone, sans rien changer chez votre hébergeur tant que vous n'avez pas décidé de [publier vos changements]({{% relref "publish-changes" %}}). + +## Disposition de l'éditeur + +Lorsque vous ouvrez un domaine, l'écran est divisé en deux parties : + +- À gauche, une **barre latérale** liste tous les sous-domaines de la zone. Elle donne aussi accès aux actions concernant l'ensemble du domaine (historique, journal d'audit, contrôles, WHOIS, import/export, etc.). +- À droite, le **Visualiseur de zone** affiche le contenu de la zone, un bloc par sous-domaine. + +![L'éditeur de zone d'happyDomain, avec la barre latérale des sous-domaines et le visualiseur de zone](happydomain-abstract-zone-records.webp) + +Tout en haut de la barre latérale se trouvent le bouton **Ajouter un sous-domaine** et un menu en forme d'engrenage regroupant les autres actions. Le bouton servant à transmettre vos changements à votre hébergeur (« Diffuser mes changements ») est également accessible depuis cet écran ; voyez [cette page]({{% relref "publish-changes" %}}) pour les détails. + +{{% notice style="info" title="Rien n'est envoyé automatiquement" icon="cloud" %}} +Chaque modification que vous faites dans l'éditeur est conservée localement dans happyDomain. Elle n'est transmise à votre hébergeur que lorsque vous la publiez explicitement. +{{% /notice %}} + +## Parcourir la zone + +La zone est organisée **par sous-domaine**. La racine du domaine apparaît en premier (affichée avec le nom de domaine seul), suivie de chaque sous-domaine. Les sous-domaines intermédiaires qui ne portent aucun service sont tout de même affichés, signalés par une icône en pointillés, afin que vous puissiez toujours voir l'arborescence complète. + +- Cliquez sur le titre d'un sous-domaine pour le **déplier ou le replier** et révéler les services qu'il contient. +- Lorsqu'un bloc est replié, un badge indique combien de services il contient ; survolez-le pour obtenir un aperçu rapide. +- Utilisez la **barre latérale** pour accéder directement à un sous-domaine : elle reflète la liste et fait défiler le visualiseur jusqu'au bloc correspondant. + +Les alias pointant vers un sous-domaine apparaissent à côté de son titre, sous forme d'un badge « + N alias ». + + + +## Enregistrements et services + +Par défaut, happyDomain ne vous présente pas une liste brute d'enregistrements DNS. Il regroupe au contraire les enregistrements liés en **services**, des objets de plus haut niveau plus simples à appréhender (un serveur de courrier, un site web, une délégation, etc.). Chaque service se déploie en montrant les enregistrements concrets qu'il génère. + +Si vous préférez travailler directement avec les enregistrements individuels, vous pouvez changer le mode d'affichage de la zone dans [vos préférences]({{% relref "settings" %}}). L'éditeur propose alors un bouton **Ajouter un enregistrement** au lieu d'**Ajouter un service**. + +## Ajouter un sous-domaine + +1. Cliquez sur **Ajouter un sous-domaine** en haut de la barre latérale. +2. Saisissez le nom du sous-domaine à créer (relatif à votre domaine). +3. happyDomain vous propose ensuite d'ajouter immédiatement un premier service sur ce sous-domaine. + +Un sous-domaine n'existe réellement qu'à partir du moment où il porte au moins un service : les deux étapes sont donc enchaînées. + +![La fenêtre d'ajout d'un sous-domaine](happydomain-modal-new-subdomain.webp) + +## Ajouter un service + +Pour ajouter un service à un sous-domaine existant : + +1. Repérez le bloc du sous-domaine (ou la racine du domaine) dans le visualiseur. +2. Cliquez sur le bouton **+** présent sur le titre du sous-domaine, ou utilisez l'action **Ajouter un service**. +3. Choisissez le type de service dans le sélecteur. La liste s'adapte à ce qui existe déjà sur ce sous-domaine (par exemple, vous ne pouvez pas ajouter deux services en conflit). +4. Remplissez le formulaire du service choisi, puis enregistrez. + +![Le sélecteur de type de service](happydomain-modal-service-selector.webp) + +## Inspecter un service + +Cliquez sur un service pour ouvrir le **panneau de détails** qui apparaît par la droite. Il présente : + +- Une description du type de service et le commentaire éventuel que vous avez défini. +- Les enregistrements DNS concrets que le service produit. +- L'état de propagation (date de la dernière publication de la modification). +- Les contrôles de santé éventuellement rattachés à ce service (voyez {{% relref "checks" %}}). + +Depuis ce panneau, vous pouvez aussi ajuster le **TTL par défaut** du service, le modifier ou le supprimer. + +![Le panneau de détails d'un service](happydomain-offcanva-service-details.webp) + +## Modifier un service + +1. Ouvrez le panneau de détails du service, puis cliquez sur **Modifier ce service** ; ou utilisez le bouton crayon affiché sur les services simples comme les alias. +2. happyDomain ouvre le formulaire d'édition complet du service. +3. Effectuez vos changements et enregistrez. Le visualiseur se met à jour pour les refléter. + +## Supprimer un service + +1. Ouvrez le panneau de détails du service. +2. Cliquez sur **Supprimer ce service**. + +Le service et tous les enregistrements qu'il générait sont retirés de votre copie de travail de la zone. + +{{% notice style="warning" title="Certains services ne peuvent pas être supprimés" icon="triangle-exclamation" %}} +Le service d'origine d'une zone (celui qui porte le SOA et les serveurs de noms faisant autorité) est essentiel et ne peut pas être supprimé depuis l'éditeur. +{{% /notice %}} + +Pour les alias (CNAME) et les pointeurs inverses (PTR), un bouton de suppression dédié est disponible directement sur le titre du sous-domaine. + +## Alias + +Lorsqu'un sous-domaine porte des services, vous pouvez lui rattacher un **alias** à l'aide du bouton en forme de lien présent sur son titre. L'alias fait pointer un autre nom vers ce sous-domaine. + +## Et ensuite + +Aucune des opérations ci-dessus ne change quoi que ce soit chez votre hébergeur pour l'instant. Lorsque vos modifications vous conviennent : + +- Examinez ce qui va changer, puis envoyez les changements ; voyez {{% relref "publish-changes" %}}. + +Vous pouvez aussi réimporter la zone en ligne, ou [l'importer / l'exporter sous forme de fichier de zone standard]({{% relref "import-export" %}}). diff --git a/content/pages/domain-availability.en.md b/content/pages/domain-availability.en.md new file mode 100644 index 0000000..ec64590 --- /dev/null +++ b/content/pages/domain-availability.en.md @@ -0,0 +1,87 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Domain availability & lookups +author: nemunaire +weight: 1800 +description: "Check whether a domain is available for registration, and inspect any domain with the WHOIS and DNS resolver tools" +--- + +happyDomain bundles a few diagnostic tools that work on any domain name, whether or not you manage it in happyDomain. They let you check if a name is available for registration, look up its registration details (WHOIS), and query its DNS records directly (resolver). + +## Availability checker + +The **Availability** page lets you keep an eye on one or more domain names you would like to register, and be told as soon as one becomes available. + + + +### Watching a domain + +To start watching a name: + +1. Type the domain you are interested in (for example `mydomain.example`) in the input at the top of the page. +2. Click **Add**. + +The name is added to your watch list and an immediate check is launched in the background, so you do not have to wait for the next automatic check to see its current state. + +### Reading the status + +Each watched domain shows a badge reflecting the result of the last check: + +| Badge | Meaning | +|-------|---------| +| **Available** | The name appears to be free and can probably be registered. | +| **Registered** | The name is already taken. | +| _(error message)_ | The check could not be completed (for example the extension is unsupported, or the registry could not be reached). | +| **Never checked** | No result is available yet. | + +The time of the last check is displayed next to the status. + +### Rechecking and removing + +- Click **Check now** next to a domain to trigger a fresh check immediately. A spinner is shown while the check runs in the background, and the status updates automatically once it finishes. +- Click the trash icon to stop watching a domain. A confirmation is asked before removal. + +{{% notice style="tip" title="Availability is a best effort" icon="lightbulb" %}} +The availability result is only an indication. Some extensions cannot be checked reliably, and a name that appears free may still be reserved or blocked at registration time. Always confirm with a registrar before counting on a name. +{{% /notice %}} + + +## WHOIS lookup + +The **WHOIS** tool shows the public registration information of a domain: its registrar, important dates and current status. + + + +Enter a domain name and run the lookup. happyDomain then displays a clear summary of the collected information: + +- **Status**: the registration statuses returned for the domain (for example `active`, `clientTransferProhibited`, a `hold` state, etc.), shown as colour-coded badges. +- **Creation date** and **Expiration date**: when the domain was first registered and when its registration is due to expire. The expiration is accompanied by a progress bar and a countdown, which turns orange then red as the date approaches. +- **Registrar**: the company through which the domain is registered, with a link to its website when available. +- **Nameservers**: the authoritative nameservers declared for the domain. + +If the name is not registered, a message tells you the domain was not found. If the lookup itself fails, the error is shown. + +{{% notice style="info" title="WHOIS and the availability checker" icon="circle-info" %}} +The availability checker relies on the same underlying registration data as the WHOIS lookup. If you want the full registration picture for a name, use the WHOIS tool; if you simply want to know whether a name is free (and be notified later), add it to your availability watch list. +{{% /notice %}} + + +## DNS resolver + +The **DNS resolver** lets you query the live DNS of any domain, exactly as it is published on the Internet right now. This is handy to confirm that a change has propagated, or to inspect a domain you do not manage. + + + +Enter a domain name and run the query. By default, every record type is requested (`ANY`). Open the **Advanced** options to refine the query: + +- **Field (record type)**: restrict the query to a single record type (`A`, `AAAA`, `MX`, `TXT`, etc.). +- **Resolver**: choose which DNS resolver to send the query to. Several well-known public resolvers are offered, and you can pick **Custom** to enter the address of any resolver you want to test against. +- **Show DNSSEC records**: include the DNSSEC-related records (`RRSIG`, `NSEC`, `NSEC3`) in the results, which are hidden by default. + +If you manage domains in happyDomain, their names are suggested as you type the domain to query. + +Results are grouped by record type, and each entry shows its fields together with its TTL. When the domain exists but has no record of the requested type, a message says so explicitly. + +{{% notice style="tip" title="Resolver vs. your zone in happyDomain" icon="lightbulb" %}} +The resolver shows what is **currently published** by the authoritative servers, which may differ from a draft zone you are editing in happyDomain until you [publish your changes]({{% relref "publish-changes" %}}). +{{% /notice %}} diff --git a/content/pages/domain-availability.fr.md b/content/pages/domain-availability.fr.md new file mode 100644 index 0000000..02c54ac --- /dev/null +++ b/content/pages/domain-availability.fr.md @@ -0,0 +1,86 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Disponibilité et recherches de domaines +weight: 1800 +description: "Vérifier si un domaine est disponible à l'enregistrement, et inspecter n'importe quel domaine grâce aux outils WHOIS et résolveur DNS" +--- + +happyDomain embarque quelques outils de diagnostic qui fonctionnent sur n'importe quel nom de domaine, qu'il soit ou non géré dans happyDomain. Ils permettent de vérifier si un nom est disponible à l'enregistrement, de consulter ses informations d'enregistrement (WHOIS), et d'interroger directement ses enregistrements DNS (résolveur). + +## Vérificateur de disponibilité + +La page **Disponibilité** vous permet de surveiller un ou plusieurs noms de domaine que vous souhaiteriez enregistrer, et d'être prévenu dès que l'un d'eux devient disponible. + + + +### Surveiller un domaine + +Pour commencer à surveiller un nom : + +1. Saisissez le domaine qui vous intéresse (par exemple `mondomaine.example`) dans le champ situé en haut de la page. +2. Cliquez sur **Ajouter**. + +Le nom est ajouté à votre liste de surveillance et une première vérification est lancée immédiatement en arrière-plan, afin de ne pas avoir à attendre la prochaine vérification automatique pour connaître son état actuel. + +### Lire le statut + +Chaque domaine surveillé affiche un badge qui reflète le résultat de la dernière vérification : + +| Badge | Signification | +|-------|---------------| +| **Disponible** | Le nom semble libre et peut probablement être enregistré. | +| **Enregistré** | Le nom est déjà pris. | +| _(message d'erreur)_ | La vérification n'a pas pu aboutir (par exemple l'extension n'est pas prise en charge, ou le registre n'a pas pu être contacté). | +| **Jamais vérifié** | Aucun résultat n'est encore disponible. | + +La date de la dernière vérification est indiquée à côté du statut. + +### Revérifier et supprimer + +- Cliquez sur **Vérifier maintenant** à côté d'un domaine pour déclencher immédiatement une nouvelle vérification. Une animation est affichée pendant que le contrôle s'exécute en arrière-plan, et le statut se met à jour automatiquement une fois terminé. +- Cliquez sur l'icône de corbeille pour cesser de surveiller un domaine. Une confirmation est demandée avant la suppression. + +{{% notice style="tip" title="La disponibilité reste indicative" icon="lightbulb" %}} +Le résultat de disponibilité n'est qu'une indication. Certaines extensions ne peuvent pas être vérifiées de manière fiable, et un nom qui semble libre peut tout de même être réservé ou bloqué au moment de l'enregistrement. Confirmez toujours auprès d'un bureau d'enregistrement avant de compter sur un nom. +{{% /notice %}} + + +## Recherche WHOIS + +L'outil **WHOIS** affiche les informations publiques d'enregistrement d'un domaine : son bureau d'enregistrement, ses dates importantes et son statut actuel. + + + +Saisissez un nom de domaine puis lancez la recherche. happyDomain affiche alors un résumé clair des informations collectées : + +- **Statut** : les statuts d'enregistrement renvoyés pour le domaine (par exemple `active`, `clientTransferProhibited`, un état `hold`, etc.), présentés sous forme de badges colorés. +- **Date de création** et **Date d'expiration** : la date du premier enregistrement du domaine et celle à laquelle son enregistrement doit expirer. L'expiration est accompagnée d'une barre de progression et d'un compte à rebours, qui passe à l'orange puis au rouge à l'approche de l'échéance. +- **Bureau d'enregistrement** : l'organisme auprès duquel le domaine est enregistré, avec un lien vers son site lorsqu'il est disponible. +- **Serveurs de noms** : les serveurs de noms faisant autorité déclarés pour le domaine. + +Si le nom n'est pas enregistré, un message vous indique que le domaine est introuvable. Si la recherche elle-même échoue, l'erreur est affichée. + +{{% notice style="info" title="WHOIS et vérificateur de disponibilité" icon="circle-info" %}} +Le vérificateur de disponibilité s'appuie sur les mêmes données d'enregistrement que la recherche WHOIS. Si vous souhaitez la vue complète de l'enregistrement d'un nom, utilisez l'outil WHOIS ; si vous voulez simplement savoir si un nom est libre (et être prévenu ultérieurement), ajoutez-le à votre liste de surveillance de disponibilité. +{{% /notice %}} + + +## Résolveur DNS + +Le **résolveur DNS** vous permet d'interroger le DNS en direct de n'importe quel domaine, exactement tel qu'il est publié sur Internet en cet instant. C'est pratique pour confirmer qu'une modification s'est bien propagée, ou pour inspecter un domaine que vous ne gérez pas. + + + +Saisissez un nom de domaine puis lancez la requête. Par défaut, tous les types d'enregistrement sont demandés (`ANY`). Ouvrez les options **Avancées** pour affiner la requête : + +- **Champ (type d'enregistrement)** : restreignez la requête à un seul type d'enregistrement (`A`, `AAAA`, `MX`, `TXT`, etc.). +- **Résolveur** : choisissez le résolveur DNS auquel envoyer la requête. Plusieurs résolveurs publics réputés sont proposés, et vous pouvez sélectionner **Personnalisé** pour saisir l'adresse du résolveur de votre choix. +- **Afficher les enregistrements DNSSEC** : inclure les enregistrements liés à DNSSEC (`RRSIG`, `NSEC`, `NSEC3`) dans les résultats, masqués par défaut. + +Si vous gérez des domaines dans happyDomain, leurs noms vous sont suggérés au fur et à mesure que vous saisissez le domaine à interroger. + +Les résultats sont regroupés par type d'enregistrement, et chaque entrée affiche ses champs ainsi que son TTL. Lorsque le domaine existe mais ne possède aucun enregistrement du type demandé, un message l'indique explicitement. + +{{% notice style="tip" title="Résolveur et votre zone dans happyDomain" icon="lightbulb" %}} +Le résolveur montre ce qui est **actuellement publié** par les serveurs faisant autorité, ce qui peut différer d'une zone en cours d'édition dans happyDomain tant que vous n'avez pas [publié vos modifications]({{% relref "publish-changes" %}}). +{{% /notice %}} diff --git a/content/pages/domain-history.en.md b/content/pages/domain-history.en.md index 88753d8..7165ce7 100644 --- a/content/pages/domain-history.en.md +++ b/content/pages/domain-history.en.md @@ -1,7 +1,43 @@ --- date: 2025-06-15T11:06:00+02:00 title: "View change history" -weight: 40 +weight: 1500 --- Every time you [publish changes]({{% relref "publish-changes" %}}) with happyDomain, they are recorded in a log. This log allows you to easily retrieve the status of your domains as they were previously deployed, and to see when you made each change. + +## Opening the history + +From your domain's page, open the **History** entry in the menu. happyDomain displays every recorded version of the zone, from the most recent at the top to the oldest at the bottom. + + + +To keep the list readable, versions are grouped by month. A heading marks the beginning of each month so you can quickly locate a change by its time period. + +## Reading a version + +Each version is identified by the moment it was last modified, along with the avatar and email address of the author who made the change. + +Three dates may be shown for a version: + +- **Published on**: when this version was deployed to your DNS provider. A version without this date was saved but never published. +- **Committed on**: when the version was committed (saved as a definitive state of the zone). +- **Modified on**: when the version was last edited. + +If a message was attached when the changes were published, it appears below the dates, much like a commit message in version control. + +## Viewing the zone at a given time + +To inspect the full content of the zone as it was for a given version, click the eye button next to its date. happyDomain opens that version in read-only mode, so you can browse all the records exactly as they were at that moment. + +## Comparing two versions + +Under each version (except the oldest one), the **View differences** section lets you compare it with the version that immediately precedes it. + + + +Expand the section to reveal the changes: added records, deleted records, and modified records are highlighted, so you can see at a glance what each publication changed. The most recent comparison is expanded automatically when you open the page. + +{{% notice style="info" title="No history yet?" %}} +A domain only builds up a history once you start publishing changes to it. If you have just imported a domain, its history will fill in as you make and publish your first modifications. +{{% /notice %}} diff --git a/content/pages/domain-history.fr.md b/content/pages/domain-history.fr.md index 08f97b3..81a629f 100644 --- a/content/pages/domain-history.fr.md +++ b/content/pages/domain-history.fr.md @@ -1,7 +1,43 @@ --- date: 2025-06-15T11:06:00+02:00 title: "Voir l'historique des changements" -weight: 40 +weight: 1500 --- À chaque fois que vous [publiez des modifications]({{% relref "publish-changes" %}}) avec happyDomain, celles-ci sont enregistrées dans un journal. Ce journal vous permet de retrouver facilement l'état de vos domaines tels qu'ils étaient déployés précédemment, et de voir quand vous avez fait chaque modification. + +## Ouvrir l'historique + +Depuis la page de votre domaine, ouvrez l'entrée **Historique** dans le menu. happyDomain affiche toutes les versions enregistrées de la zone, de la plus récente en haut à la plus ancienne en bas. + + + +Pour garder la liste lisible, les versions sont regroupées par mois. Un en-tête marque le début de chaque mois, ce qui vous permet de retrouver rapidement une modification d'après sa période. + +## Lire une version + +Chaque version est identifiée par le moment de sa dernière modification, accompagné de l'avatar et de l'adresse électronique de l'auteur qui l'a effectuée. + +Trois dates peuvent être affichées pour une version : + +- **Publiée le** : le moment où cette version a été déployée chez votre fournisseur DNS. Une version sans cette date a été enregistrée, mais jamais publiée. +- **Enregistrée le** : le moment où la version a été figée (sauvegardée comme un état définitif de la zone). +- **Dernière modification le** : le moment où la version a été modifiée pour la dernière fois. + +Si un message a été associé lors de la publication des changements, il apparaît sous les dates, à la manière d'un message de commit dans un gestionnaire de versions. + +## Voir la zone à un instant donné + +Pour examiner le contenu complet de la zone tel qu'il était pour une version donnée, cliquez sur le bouton en forme d'œil situé à côté de sa date. happyDomain ouvre cette version en lecture seule, ce qui vous permet de parcourir tous les enregistrements exactement tels qu'ils étaient à ce moment. + +## Comparer deux versions + +Sous chaque version (sauf la plus ancienne), la section **Voir les changements** vous permet de la comparer avec la version qui la précède immédiatement. + + + +Dépliez la section pour révéler les modifications : les enregistrements ajoutés, supprimés et modifiés sont mis en évidence, ce qui vous permet de voir d'un coup d'œil ce que chaque publication a changé. La comparaison la plus récente est dépliée automatiquement à l'ouverture de la page. + +{{% notice style="info" title="Pas encore d'historique ?" %}} +Un domaine ne se constitue un historique qu'à partir du moment où vous commencez à y publier des changements. Si vous venez d'importer un domaine, son historique se remplira au fur et à mesure que vous effectuerez et publierez vos premières modifications. +{{% /notice %}} diff --git a/content/pages/domain-new.en.md b/content/pages/domain-new.en.md index 738330e..e371071 100644 --- a/content/pages/domain-new.en.md +++ b/content/pages/domain-new.en.md @@ -2,7 +2,7 @@ date: 2021-01-12T21:38:49+02:00 title: Import a domain author: Frederic -weight: 20 +weight: 800 --- Importing a domain into happyDomain does not make happyDomain the owner of your domain. This action does not involve any changes to your usual hosting provider. happyDomain will contact your hosting provider or server to check which services are currently registered. diff --git a/content/pages/domain-new.fr.md b/content/pages/domain-new.fr.md index 78b3e0f..00d091f 100644 --- a/content/pages/domain-new.fr.md +++ b/content/pages/domain-new.fr.md @@ -1,7 +1,7 @@ --- date: 2020-12-09T18:12:45+01:00 title: Importer un domaine -weight: 20 +weight: 800 --- Importer un domaine dans happyDomain ne rend pas happyDomain propriétaire de votre domaine. Cette action n'implique aucune modification auprès de votre hébergeur habituel. happyDomain va communiquer avec votre hébergeur ou votre serveur afin de consulter les services qui sont actuellement enregistrés. diff --git a/content/pages/domains/_index.en.md b/content/pages/domains/_index.en.md index 6170d54..fc6a1c8 100644 --- a/content/pages/domains/_index.en.md +++ b/content/pages/domains/_index.en.md @@ -4,14 +4,17 @@ title: Centralize your domains author: Frederic aliases: home -weight: 10 +weight: 300 --- +happyDomain provides you with a unified graphical interface with modern features, regardless of where your domain names are hosted. They can be on a DNS server (PowerDNS, bind, knot, ...) of your own, or with one or several providers (around 50 are currently supported). + + ## Your domains The home page presents the list of all the domains managed by happyDomain, whatever their host: -![The domains managed by happyDomain](domain-list.png) +![The domains managed by happyDomain](domain-list.webp) Click one of the domains to start [make changes]({{% relref "domain-abstract" %}}) (add a sub-domain, add a service, ...). @@ -20,7 +23,7 @@ Click one of the domains to start [make changes]({{% relref "domain-abstract" %} On the right, you can see the list of the different hosting providers for your: -The hosters of your domains](hosters-list.png) +![The hosters of your domains](providers-list.webp) You can [add new host]({{% relref "provider-new-choice" %}}) by clicking on the + button in the table header. @@ -28,7 +31,7 @@ Clicking on a row in this table will filter the list of domains to show only dom You will also see, if the host allows you to list the domains that belong to you, the domains that you can add to happyDomain: -![Domain filtering according to the hosting provider](hoster-ovh.png) +![Domain filtering according to the hosting provider](filtered-by-provider.webp) To view the entire list again, simply click on the selected host again. @@ -37,19 +40,19 @@ To view the entire list again, simply click on the selected host again. If you find an error or no longer need a hosting provider, click on the ... on the line of the host concerned. You will then be able to choose between [update information]({{% relref "provider-update" %}}) or delete the host: -![Modify or delete a hosting](hoster-edit.png) +![Modify or delete a hosting](provider-menu.webp) Note that you will not be able to remove the host as long as domains referring to it exist in the list on the left. ## Add a domain -You have a new domain you want to manage in happyDomain? Start by entering its name in the field below the list. You will then be guided to the [to choose the host] screen ({{% relref "domain-new" %}}). +You have a new domain you want to manage in happyDomain? Start by entering its name in the field above the list. You will then be guided to the screen [to choose the host]({{% relref "domain-new" %}}). -![Location to add a domain that is not listed](new-domain.png) +![Location to add a domain that is not listed](new-domain.webp) -The field does not show when a host is selected on the right. Unless this host does not allow to list: +Some DNS providers allows you to create a domain directly in their database, even if it was not already registered. First, you'll need to select the right provider. You'll see a dedicated "Create on" button. -![Special case of addition for authoritative DNS servers](hoster-self.png) +![Some provider will permit to create a domain](create-domain-on-provider.webp) -In this case, validating the field will automatically search for the new domain with the selected host, as indicated by the message just above the field. +Some providers could charge you for this action, so pay attention if this implies to realy buy the domain. diff --git a/content/pages/domains/_index.fr.md b/content/pages/domains/_index.fr.md index 932d3fb..160c5f4 100644 --- a/content/pages/domains/_index.fr.md +++ b/content/pages/domains/_index.fr.md @@ -3,7 +3,7 @@ date: 2020-12-09T18:12:45+01:00 title: Regrouper vos domaines aliases: home -weight: 10 +weight: 300 --- happyDomain vous apporte une interface graphique unifiée et avec des fonctionnalités modernes quelque soit l'endroit où sont hébergés vos noms de domaine. Ils peuvent être sur un serveur DNS (PowerDNS, bind, knot, ...) qui vous est propre, ou bien chez un ou plusieurs hébergeurs (une 50aine sont supportés à l'heure actuelle). @@ -13,7 +13,7 @@ happyDomain vous apporte une interface graphique unifiée et avec des fonctionna La page d'accueil présente la liste de l'ensemble des domaines gérés par happyDomain, quelque soit leur hébergeur : -![Les domaines gérés par happyDomain](domain-list.png) +![Les domaines gérés par happyDomain](domain-list.webp) Cliquez sur l'un des domaines pour commencer à [y apporter des modifications]({{% relref "domain-abstract" %}}) (ajouter un sous-domaine, ajouter un service, ...). @@ -22,7 +22,7 @@ Cliquez sur l'un des domaines pour commencer à [y apporter des modifications]({ Sur la droite, vous voyez la liste des différents hébergeurs de vos domaines : -![Les hébergeurs de vos domaines](hosters-list.png) +![Les hébergeurs de vos domaines](providers-list.webp) Vous pouvez [ajouter un nouvel hébergeur]({{% relref "provider-new-choice" %}}) en cliquant sur le bouton +, présent dans l'en-tête du tableau. @@ -30,7 +30,7 @@ En cliquant sur une ligne de ce tableau, vous filtrerez la liste des domaines po Vous verrez aussi, si l'hébergeur permet de lister les domaines qui vous appartiennent, les domaines que vous pouvez ajouter à happyDomain : -![Filtrage des domaines en fonction de l'hébergeur](hoster-ovh.png) +![Filtrage des domaines en fonction de l'hébergeur](filtered-by-provider.webp) Pour afficher à nouveau la liste dans son intégralité, recliquez simplement sur l'hébergeur qui est sélectionné. @@ -39,7 +39,7 @@ Pour afficher à nouveau la liste dans son intégralité, recliquez simplement s Si vous constatez une erreur ou n'avez plus besoin d'un hébergeur, cliquez sur les ... sur la ligne de l'hébergeur concerné. Vous aurez alors la possibilité de choisir entre [mettre à jour les informations]({{% relref "provider-update" %}}) ou supprimer l'hébergeur : -![Modification ou suppression d'un hébergeur](hoster-edit.png) +![Modification ou suppression d'un hébergeur](provider-menu.webp) Notez que vous ne pourrez pas supprimer l'hébergeur tant que des domaines y faisant référence existeront dans la liste de gauche. @@ -48,10 +48,10 @@ Notez que vous ne pourrez pas supprimer l'hébergeur tant que des domaines y fai Vous avez un nouveau domaine que vous souhaitez gérer dans happyDomain ? Commencez par entrer son nom dans le champ présent sous la liste. Vous serez ensuite guidé vers l'écran [permettant de choisir l'hébergeur]({{% relref "domain-new" %}}). -![Emplacement pour ajouter un domaine qui n'est pas listé](new-domain.png) +![Emplacement pour ajouter un domaine qui n'est pas listé](new-domain.webp) -Le champ n'apparaît pas lorsqu'un hébergeur est sélectionné à droite. Sauf si cet hébergeur ne permet pas de lister les domaines : +Certains hébergeurs DNS vous permettent de créer un domaine directement dans leur base de données, même s'il n'était pas déjà enregistré. Vous devrez d'abord sélectionner le bon hébergeur. Vous verrez alors un bouton « Créer sur » dédié. -![Cas particulier d'ajout pour les serveurs DNS autoritaire](hoster-self.png) +![Certains hébergeurs permettent de créer un domaine](create-domain-on-provider.webp) -Dans ce cas, la validation du champ recherchera automatiquement le nouveau domaine auprès de l'hébergeur sélectionné, comme l'indique le message juste au dessus du champ. +Certains hébergeurs peuvent vous facturer cette action, soyez donc attentif si cela implique d'acheter réellement le domaine. diff --git a/content/pages/domains/create-domain-on-provider.webp b/content/pages/domains/create-domain-on-provider.webp new file mode 100644 index 0000000000000000000000000000000000000000..b7bff7b050a2edaa2e0285946477f1f74a21a61a GIT binary patch literal 18892 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 as(=6h0000000s5O6d(sofB*mh0001$Dw?hU literal 0 HcmV?d00001 diff --git a/content/pages/domains/domain-list.png b/content/pages/domains/domain-list.png deleted file mode 100644 index 640ad108b90e34ee9e0326ca5154b6c30f0d146b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85203 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

&f5-?tfKdeaPRAxf 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

`V>*?9BW`1zvHWTi)A=>F*AW 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 Xa@PIVw!rxC)}61o|I+aDZ-4w>9CdTu diff --git a/content/pages/domains/domain-list.webp b/content/pages/domains/domain-list.webp new file mode 100644 index 0000000000000000000000000000000000000000..87d12df110adf4e72e4804f6c74a7fe150151cf8 GIT binary patch literal 37364 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≺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 F007#n*l+*< literal 0 HcmV?d00001 diff --git a/content/pages/domains/hoster-edit.png b/content/pages/domains/hoster-edit.png deleted file mode 100644 index 797156f699c1a2ad1d01813fb6bfe8233f5aa3cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75097 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 diff --git a/content/pages/domains/hoster-ovh.png b/content/pages/domains/hoster-ovh.png deleted file mode 100644 index 0988ad235f278eaba62fcd2cadeb80cb7b57da8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70747 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 DDWOT0Q!xA(UPuoX;v(Wa_$xxO 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 TZ^FcPr_SKkotq`sA3Xm*PTSC* diff --git a/content/pages/domains/hosters-list.png b/content/pages/domains/hosters-list.png deleted file mode 100644 index f7179b47451439e6c9ec301d923719b02ca367de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85210 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


BM659in=iqCV|3*AbgnAG6O!iCu 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�bayp@^?{TYRbI*HelFn0Ba-D?i(a zwM0txcMRGj#mj_0mX-DbS`Ji$UJ&S`9bbl-89vPfMuI*1As0m5rNE4WtM|Kp@;=A-t2aWij zmpZt2O$DVHpeOT!w>iruFL*61Gk;iWT#co=Et(N#|7A4p#R%@VjGVfV2sa54swcj)(Vf0zU7qbkhtL^I(FjnkfVE*{aGp&& z%RLr}aqhL@SR*R_boD?w?vKjeMF~W*Jb!{9HIfZ>bdFtE((Owc{pQ9fike!Ef=pE~ z{kH8rSer*56OXarWOPv252mkrpVM92b9LXTXl1C$tVG?26fZi?F3REwyCN8LtBM-9 z1h#iy>=vG=g)KY8&MMs&`T~JpnRV(kX(1{fwfEQ8VQ}~+6o6g^t1sAFe{6Y`S z=>z6MIxT931GGfnqtr?}@}I?%!=b&&(W1A#Y=f37oxyQ8NrE>%%seW!9IY zK$ZBOmb!>EEU|yol$Enjg*<7~U|J5e7zX7H5M9i+3*ST)s9N;+B+ZpokFE-dqV4rf zs=GSXx_xUOc|DbvBBagfK+;!LuG>GuxcxLA=i-?q+{B`_Jf6$l8P=4bwW*lVwYzp< z^Hob&q*t#p(CZ%j4X-_UlicXM=~d@O!>C<5Kg|n4)wadf)~+}npI-adBlZlwjh-K3 zC4f}mw~W+4_RnY2eKHDT1lslcEWDJpJO@0U*5nId1}~Q(U*7y_AxEN62e8S>P3ImV zp(a%Y<;zPOWNjyA!+4F;aC}|TBI2fjr>Se0R1Shypr@zQAtwjib5Rw}+T_^q!!PBR zIId6bxN~l>E}A)_QQZ$U%Z|@$TG_pJA6{%~QshkYX_PtZN>@&Rh!GQihr!3n)7^|@sP zoRX#hzTuzjQKX$@_-L=+RBl2mw)YIKy#7H2g)85yQq-a(qitAn`m7#oBC1fsYT92@ zjdH%L7&w8H$ICeu9hd4vDcliSHJc@AOL0aXudqaCv0+Q8Kb3O$MbuN9T8t~QLuSaN zBQbk~jeScrtB5SG=VTL(VO9}8+6d=ttX(UZUuo$fsqy1*3g0p!6O8CJ5Y@_%?}G@- zpG=~}MN*z!4w!2uGS5k$q}EPXEd{zdv?ohz`owHi8z2XPP;CIIb5Fui@W;EziU_7p zxMYJ2* zmmu#}O?@5-7(Xd@;jQ%T7FLsy!9Rq)S1*j*KWpyvuZh25HAXR~6EZ-)B|W4_M@r%M zpwBx^D!1COjhk}I_4!6+K*SZylB~`sBk|nKOhu#5y{n_gsEJBNP4X`*nv*v-fBZ+k4*}HoQA*VPgfAe3po(upE`o z3(ZM%S&xm4x_1d=YyBbRzOK}Tr}0Io+e9DGFWQ*su=m;?6)X8-&wr4vaP-2(zbBEA z996|(py;vym3w*<3_G9@ghV}~*|t>FXL+iqUH4H`SIqdf2HCgVoQ-$w1QeOsm%idx zewew$9O4e_H{$5t`56kz3#IUYk2fs}KFfG=F zZy7-Htl@ju--d)<>{}nRA=oibl9wOMIMTo49P_>?WaMHuONdl!s?qlYf#ZK{rQ!mSJKA!G>+Fy>|CWE=@7A4E|0YT<&G= ze?+jp)$`7?NmOI3y<2%AcBeT-cAd`2mN3EJW3jd#$%avE$ewooBNGM1jlOLFIeex~ z!}0vf=Ok8I(5bDV5Mtx!&sBu~F1VG&c$Rmp&L{XLmd)LMJKQ!%!>^EVfPM7)!mCR5nu3NCj{((sFJUm~$_1%IZ4GkZ=$jdkX>;SE& zVRa6PQ}KN1c1NO;Ntv#m3krjttcjLg$iBCd4EjcRcut=!ez(MDeUEC6(?PGC)$?1Z z#mNjo3-)Y}gV?|dn^3Dm+?^Kq?H1x4q*sWnDcb!;PS@Xr#Wxm*(gQ+1##D;7dno;V1g{|QyG_PSgLvimG zSEAyUy|q_B+SID6BM~i>5xV_uCDyc<-gWLFTJ&#Qkn* zQ{LG78Y*~dTHU_8Lg6rm`WP=3?O!Gow}vzMsTY;tN;~PG_S0RiNgIOA14&RVCgh{n zw4Fn*qQ||a3h#GZzx{<=l3zly(oXHtVFss4V4zxIt#OLA9dYd&n}L+IyTo_}S49e2_s#wJr! zTHZ7PjV_1U%60AKgFYGfrBRuDV7i0%WcANsDg=D57~1y{>ARE4W(9&W^|&T})78YH z!8>AVZj5E;ND)1zPh7Jv&^>CdZ#hD!cD4PM?)mykCu^9_+Fk>>y5v*e|KpXUiPX@1 zZJ?`l*sJL3v*&AgW7_3UHVU}?V!QthJD*wyge<^b62DM0+kV&}c{V#sd3O}Cu+d}b z3g|H)!JQ=CZwi|A)bqNrP=!+0yn(Okxf{33!@N`1%Oi&9I@5y3tk^&rWNtFl-@S3v zOu6Y1U=F{mm`?Eiq8)X7eRQFS?NIa+@IYJqE6~*W?jAn`DuhGdjb}@bNvEn>SM(QV zgnw%OiuapJ{4;{BG?wmKfMF3z!b=I?W=GAdV#}1VK+(t)Kk9_)C9j zpr^8E9&;=jwtSMBd~QH`Abr!LJMBm0do9++6{K{t7o-v@_Er-9-qe$ImP#`)or2lZ z4!z6c6X)uR@tKvb-=QmM(bkU@rsO-YCr7IEpytpF1Wx82vndMNQ5_>bn*i%yID2%PO^k23(JFSWBjNymE;Q3g>^r_=dy$Dg4?q3BL-~7`I}-P zUts*JxE3)fhDbw{F!zTWnyNwDYkudsk)@{EH$M@BW6vpB8UEm+~Z;Q=!%Xj(lV4(Dw+J9WR&lRfS-yQ?`NPw5(}OL**ja>`Q7|5mnJo8T~Cl2bH# z&CvK>B7xY*Ij6*jBt+$4BO`J6x|a4qF}WErvGW&{vIau{rZ8X1*&^l^B`mt3g3dPe zfUkbV+-=R|(1TpzI-zQ<9(;39dR&qq8W6B-n&bzPqztS?H<;u+aaK7gRpH{l805Ez z!e+*`8$392VhnOnzuHZZkd3)TX|A5Ye%|@cHN`myd{CrKo-9W~uU9+-Vk3%k*+n2z zp144Zh5Yc)JOaG;Z66z}DJ*gVBWUHCT!a&=-UA+9cF&Eelob??4TC%VhOl9dq#{%Y$G(ggwb`i#b0BC*`qe< z>AdTCT~#ulhviNs91@;J#){LFQ~z3gwiY$P?^-aR;Y50SGOFg+198Eo3W@|S4qjSB zUO3!{{FXNjA1dnh;ClNf%!st3XFXAQyw>nzf?ul$KtpIZZc^yfw#;mT1=m)Q*8OE_ zF4-+w9^o7hXu+-oI8Q!!oqRfWg)D)oG%2YMY&ld7Schwf;|;Mkw}T%SPgf^j@_Cp~ zPPY|Fyz^%zMj$Q~dN((1U+*(Ki;|FNTyf38{vzxfCB-{Cw6Iq5F|q*Kl{rH9tXrNI z3N{B9C$T-=+!)J-pa3$lD0Hb35F+gs``)5H&#ev;EpArjCph2`mVf zC*v&*Jj2jCSVI6xCJ+445t8RcoLo2XZZB7a-&g?TK5{0G6+TABg`k2hhgY#!$q1tN}5x8^s@&3*6PUW7zvt+XfFDNSA6YK~0x$T9`h7^`jouIHJs z0LZ($wa`2F7Nfe}FZv9O`4p|BLaWZ6I7az?)5sBZb0jC~(|-NmyiuY15L4P4CxGb; z1>{S@E0}&^@y^Z-O}_vB1wtEB1Vaz5>3&Wk5WVby6!L0hfg~)NiazHg8Etc5r9KBt zuNYW3@WdchF!jAeVrdAK|Dm`xiMcn~ub8=C<*G|Pa8XgR0d4JY(_KGm<8V`2c4|4z znOq;SxCQoB&PC)w(?Ihf_Mpc}5uS+C7Ww_Ge=!Yc=x&qT+;e&BU=gL6Yi0Gdqpo82 zu}d4p*`8I&%v%VnCZ|qNYTlMe&gztIjIg3PfZLf z^thQSFXW=7+n9+xlTb0Oz!{3?j4P7rxpS=ai2xAb?-DCm_)&q&YN3HgNL0nq(*ibP zTG({c{~>IO?bg4h6u8Ub3hW5+eILVbMUq+z-y|eif#(!hkD>nkn)UR)*H~*n9(tHp zeMgtxs9IcT_?&`t=;1#AAt3HjlrVchX^`g|+rom{jGrT}OtV7obL1uJ);+z3j>wur zde~&L%>51Ftv>loHwm$ax|fjw5(u-e@j(KiX1xbMN^V(rsrKF8B!BIQEIU7ICsXhsUtUw;!D|%aR77OIsVKw_U6ByB{%IGG-B% zoVIP?aPF`oHomo0J%iT#X@nC_xdC+kp1w-77=`W`{G*E=h^4x)YU)rNo&^@6xxs^q$KZ}TY zL&agAx^hJ1MUh%zqn{SPeue^nld;I0il%Z_c;9^Ed(>0Itx}uuaW=@ZnTYi0K#ey;Wr75n>dQ9QJ|F5-Mh8MsGpF+3L*QZ5GP_bxoD zJF1w1q@3;*W(iv9hbbJPUDG2yS~tco$nLh@uFlVnOj59}XXOa*oo6@qy`gjD6%s<; z`fS*eu!>KhPX!W((iUAAO_AOuypb&Di3q(diG+UB44@>h%W9?1FkAR~)#+W+kyjkp zbQ2eL)CzuH>SM6T#&y>beCl9Wx?#vrQ^ro8S);-CoRzw?3`^1Dkw8O0Q1?{V0x~h@ zm9-S}LRJ)gCsV{WW#7$#5x#|wqi$gI!aWIyiBeKQBxxwq?e{f$i85VrA4ajr{+f?qBl^%s|)5wZ9-Yih6t0*Y;gQljN zi_A5zzJ{zim>G_rOH{GL&-KZuA(0OxPk26y8oUk9X{-}6MN&NUzp*}Jmp(hoePXEB zA`s#u9zaP(p|s5NsnG&SM!3Tj;>pX97Z-a^(M8WU>#+kVy-tJObm*_EN^|J36s+R+ z(yC|uWE0JVM4QEB_~4|A95o6h7-EwtQk4d~^^yyMMm#Jl4sA&+ED?ws#ICU*T5F%h zKoXm^=AaUf;e*4Lm)M8ltv(zJ;h3Q;r#a2dQq|aNeaBbD;VN`%<8qwrEB5DY49_DD zZ_!73DC)E{qxH5$O~_mO4F?V@x1Nu+{=)MADzS!D8p!~<&o#$gl$I7*Osq9+Rr1$H zZjC`$`}n$p2RhukB+?*7@m4QlW%Yx=hG}L1+ozgV?%Vt_YlPXgkARuP$-`yM#Q5oaZ5Sl-|118q{ z=^MrrZEe^!Y`DSA23tNy8-s-VLyQC|#$WY|-78Ta$7+c(Ts^uz|Fk8ZvEn5@j-|}A z{EKH88_?1$0JAVIu)Pi{EsaK#`g`wbFPj_~@Ql*&-9q3ulJg&2dpmF&yT*4+h}qxj z-XH_S;e-G3|8j>iy@ypLFBN$#AQvw2S3wv}L&j$(O~;{#4=6ZvgZ>|9*BjtAy|ILE zTa`{UMz58ZP6FX}B?0eZUcJnn`PVo>@6l5BZL%gHi+|~hA84=^ILmqA{;ika&L|x= z;4J1A_+yfA9&8z8`Bq+BL%Ow-Qh$C}`U5=(4JSj}bVjDU(G~9(G9iT<<)0RHF2TRd zoz>3_Xn9~mHWfA%CCtxVwnp*RK&WEy>qL13{J!1o=}UW0tKxLw5TzuiVm-k)9MVTu zDgRc@rUok8u(07r>0M~TTYtQ!f^%TAr+cq`yhL^HQY$sLo>f~tUCubDLhGc9WayjH zT?p1Y3C99&@@o0{KET1IHF<}!(vn0vXYSw?3dF9^FBj4=QylKV5KjqGc+61?^)pS+ z2k@%$0;jbh6~ZDB+R#?TN2P#5l4_OWrYgMVl>H(@-a5I@_NZEyN+ zh(cxvl{Ff>$RL-8(6weiK;|M+aX|VY`S}T{lG!%~H~ogubmUHd!e3rWeJ>&}I34Bn*@LJs8f;7avr(BrvePmDp0ar8IfemFMmyibg*14H87MDh=cmsO% zPm=*U9=cc$qG$L%kY}6Vh_CT#uCZw9f2b3uY}c0;n<`f@8|}PMKM8YLCQ89M(te2k zDA_^|aD>5B?}=tB&~mwhB2PDuH)Cm-{qYnt&SDlwIzR3BXti#N@Y0up+ z)IDyKyj)QkYc|Pa78T6|7k<#Wh$VrfCu=x?h9c6B$)j;jewJJd)*wA(p-jXDFTM>h zzQqX2hHr6Ns>u$riP)0Z>IrA@)v}q&CDSoCmF^nS68cw%2`I$%9b=j9f(t@%zE|Ck zGOsRaflm&KK#kMwdu%wv$uDTIb3;D=?Q#R`ynA@Qni&W8wR^J7@Naj^!#T>CBxn=A`?(laHC%DA#@@Xg=AIh_uXh(sqz3W`xoh&r9~zfOc6UdrH$ zP+n8N!@AU4X1Y1p+7z@)=uWuW`8D~wWa!DJCa=DIEZQj6Z@A;tOm(G3*N~p^IZu z7tCcHv*jiRZKpW(@{~i1g6z5K)-edd0 zR~yXoA_Eq+DX^u48lpsW7kf^Y3~lL^#bg%y1J8W{X`bhSYqQc(}y~!S7YQ zz#cs(uUKJG{^{>ZXL&EEO-7|`=kF=|$lT+mgucgC4lDHCy#U;p^njn!%K0G{_(!Je zgNIL@fx9tHY1bYYFRpj(pJsKYvB}IZ3aQI&($lNxV&)JZZKAZ24tn*hX}3O&T~8QW zCrqT`qUMg+9-$3=cru(;z%4ZR+teJJwUA5&DS|;I=WzLsQV3&UGs-8&^w%@qA39zz ze-z`%6txKI$m%+E>vG0zm%(l8*T&~1e~znbqne7}laF;oimz0+u_YLQ%(<4r=f;a! zo6$9Ej*vr1)&qL_v~FYHd@N2tQNJdn3FymP5VQUdD*R@yx%Ym!$LoNqyj>Z;xCFs( zghiFvN>2Gx=I+|pNy4?8=YkztWhwo3oumOGll01Xk0h{Jf0I@VYe{46j8GC@~YMY(rYAD((I+xyb8dDces)vF9hFMI|g`Ri4#EoenC?8)YH3e0iF9Sg3{*;6+GA z5lX(Vd1>5)_Gkh%g1~2H3M99kr`^exIk*mb+nGl=BI=6JaY!Zo(m_Q&n&D*g!;E4k zRe)O)i^vn6UV=4Q^75VYh=pJ+&cUY<4Xv{RPf&C3{3z8eN@;j01kWhj%D&*89rMLs znUgD6LQEEGiqkGcIIiFh(}|Z#B?kcHPiWkK@%acknCIXAZiPR$2uGHpye~y_s5P6+ zd27(9ZC~_!>%`6;@t)V;AY<-c7s|?F`A9xGF5N^tS@x?RSzQSafGx1N@bilCOIh1- z_3|kg#)~*pSkG8UlLJHL5+)YAdE@x@pDoR&^mQNybR#~eIX<{_#LVd2t1J?&a$Z#@ z@fEhjf!Z4WoM*-?7#(~$WY8Yr|JHI~%dh&w3`b~FC5+&jnaZJ+P-&B%sKt1h$Cp)s z{tc5KXJMd}4H3`)BAcui->MHijQbnGUVdz!{AsoLOQ1aCXpoIJ*Iq~D;%$jGrUM(V z`&E@U2w#UWX|RbkTt3Y8i~P74^vyDh_A1Z3IEyEZt3w7~q>PI~m>I;;3z1(ts?nNs z5X0~g8!9gMPplD9u=d9DM8VgCHg8J2j^QKkqvoObN_y6dK<2Zg)i#=o0UPQf4fU-6a#$Gy@}^QlYh=zV_NLBfjnAQe>OU z9Fgnrw1`ux^$139vRPt2MaJ|Q+pj)q=8`Y-R2l;pdL5HP?2PbaRy3xzowB%M=oDRS zEgnpWAgSYX>~w!z#UZ3w)tcB6B1Uy9hM<#XzqWRCJipK&GRptQUy~~bTk!J9sUdqj zQ!rU`4FnDIU}o6~1jQsu=oiYCkw!#Wu{`c%#7xGYBR3`%JzVglizydkv}h zoN8p5JlwbabH?WgR_$e#Wd6F?4Y1~E#1_a_)! zye_*h@mg|-*{cl))wt|@R7_6Vkikmw^Z*OCAnJ^O?1P0lXVUHnGEKXWtl^iWZS$XgG>KYrIFV_T*+>o2dM=!jD;Pw4b60sBlZ6ZO z7IH1s_7e`&b3Re{g6MLf5FOBda!{}3tz`MrRmf19-wU62=amH^n3}$D)DuwZ6@XG# z3Zr%UaLeXjQQK8f1OU!1FTV+F21~$4xKjKK2V1cmF-iN1<U3b^%i{iiz^9f<+Schy8*7TR++=SYZ91zIFMuqEe}l`F=P?cb7F_) z7p!7=vHS?hSENm&EoDt;rfQP_e=)NsBE6nDi%@GMYxK;M2pkZtUvJ?H4W+Kod_d8p z$3gaLeJi(|&5EJV@P|>if;QOONqB)}BFcu>)IB>{*@DXgOFr`ZrG^L}ccHFFTo9ir z{WuRjQ9DD#GwQ+@sp9PDyIMq}u)k8}&xx%*Jo)vBH}#`UmzCZR@i+S*Kq9M{|S(U)TXe54;OHHoE)7 z=(`Jd;g^Qi+Q`f6VW?#@VWidd#+8T`%*qoqss))5ReT|aSZEv}kQf0d8Sx~DOXA^kh|qH=Qx-cEe)H48>Aj^Br6`AdV9LoIw~ z{T;EV?RQw-kSI-s)oIi7HfyvFjh7vpirMWSpz+t{$e9$wTHN)3%CQ$oO5eGK^huR*@&1mS#*3wQ%k#ggE}q(GS>l;- z`oTmc<~taZl_}vK#8(rW>P&P*-&SBjKD~2i?8-&9KNr`VB0o?G4DHh1#Je0?*i{jE z8i&xtV_~60^bF-q@BZ9zu7cTBiQD5E)FRZf#{z`x$;lv+P_|e5bN(@sA&{956Ugjg zj=Puq1X3*3hXLc$h*|=J#Ek<~{@QgyQJqK+yw~~M+fR#3Cyjeu6e+fWc&>bT+>Ns~ zYgFeULD$j^%f|>mJhe;bby3M@8&b~6tnWJW3H1yLKKqgxIk~-Sn$sQVf$zG=-+pds z<=UKo$$MCOb2f_9GF?HO)`K8@Udeqzn&!}d2?21&)80^ZVJiNZEoAfxw_)|SyJ^V9 zxKt1-sk`Q;+r@(I<Cm1VYx_uZu;d~M-V|F01KKP9~ z**9BifhjfvS4)o~TE|ZafB#{M0Ern_+fSYCMHE=-)2X&vO`{C1FB!f+qQxr|`v&)s0 zJgQ^Ij2<_Zd;G82&d&|Vbh|t?TL|WGN#(M5!sQk#;+yWZb82w$< zJ~y4fIEVI#4v0J0&wKQIzBTlt-h;Y(VxpHsv6i9w@mf98L@{+11O@M;V9S*Js{K=qmyY?F*$s~O$~a_3*e5ox1=25&bGFwW z7SsSsa*Dl-ndW#!Jq#Qc+H~dY%l&7fdoIL(3jo3nkx66K-b;MH`YX|WU94c$|y@zatM}k)6NN_ zH_f*4g3;AW4`_J^{ImOM3E=4bY)N)2tcjVFbGm+v2;zE*#1@;{{UGai^cS(*uiDdjqhgV^~d*a%Tg~jS)pr$ z?VXmiM=u2X`;&?Ae44VmYmSq9+PxtJiiZnFoMOrnxEyX}3^lh796g7gTX8qtzC_P} zP^KfROswkDf=4ZQ5&PyqKoJ3z?R2MTN1Bh!<;w}(b?I!<-v}fcrNO>vRTtt>|G|ez z0ZF|l0-?o#WvHyx;|iI^fl;;50EF7@Ud|b-Z1I-=)WRUs$&R9Jy&$UM=)i1I zyDZrQoQdLk+&!=xrf!8dqisbFd4W{P7t0mU@q8)Rqp;(MIJ7TC1#HO#I+>uqKErw1 zHb5W`ao+4iyvX3k&0JB;5W2Gtr7RH72WKeXH9ht%cjk?@-&V{T78leKDSIvMzG;P1 zKu%ZrptzaRabrtBis)s2}H zEID22l41_F?7R5BX1AV2$FuP~<&{O#A;9cogYc(z&j;&DI@2!1pxYwgZMWi8=>l3p62APHRs~ zlO<6Mk7%=XHqOsg!!1jmNo*Lj?ovn?jOcQ(iU)dg!z~K@romBWVCq(Rm(H)RilNe{1qTw<~>evhGV%5;YMBa7BdY;{UevtGy~PgscN~N)Izs zGr#J+uT209-;W3GiMT=!a{#IrkwDPnEN6uxjdRMqo-F@%cK>kz$_iZK56V()W%<}) zAIKw>cDLna-@HNOEqa8GaMyglPQ>KLN_05x2U!Luvw*aaLvs$L?d%bxc1!+nmLiSju8V^?>#D@WM8u=RMreio zLc&a7XNwb_)iY$WO08_!nl zq>BY){`wt1KWKdXO}I8k$dZ*0y3EUfWYt;Q&v8-vlHukRnl?)}GtxG;_i zYg3r7qWfePnB^c}UzMJKx#F$H^05&hqHw)ex_Wxd2eZ{{eGCjp!+8qC7GRJz?aM3< zQ+fp8uxWpSrFQ*EWZ1==ePblC0Zc#A4)9XE_zx@VdLQ~BoolD98ZX=O8x8xCy_upS z%41l-M8jR;QBwo0Ow{;;W{3K`!xzK zuGW1o{PA-n2=QXmKKvQmg=HrYmE%1*OdC5Y_CrV=ztD``0C)&F+m1}3^70e_E;VQY z*WI^=;j;qx#D?Fg!<3#`i$52CC70B{*;@YzI+RhX8)gpa3CM?b1avN}`YQE6AdnvG z>d`M!=t(Sa%&~&|{I3VMms3a6rUbA9hpesYsU!`?wF>JAT~ANXZ6ts(CBEScva6Vw zn7+i{E~r>~_ZR*cwD(J+q`0?D=aag>`eCi^fK3F|JWM_)$_?naAjMjwqgfjTMkc1U zPsIK`)8)~>zG_!(PlUO_&-c&+`^;7|eXieHH3AL(f|Ar5aJA^a1hAp_C9FH@|3D$v zE#tZTeIv~csQk4y&J$Z(CSP&_eL8j;e&f9EQc9O%ULQbTE6aYC*$XN z1Yr@8zP`Sd9;$$6Vq#fT{xFFkKvFDG@$m!z7jC;5C%}m2)sYqb=RRaB#Gdh?LeQr8 zaAG!qeiIcNxK@=c;J|HPShx*lTTnZ`DpL4|J;d4c9Z+?Es3hNQZ}M05WB0`W#KHaY z9|EY~KMiyr;B!f7@20&Kd0*1k?(f6Vl^?1^z#na^=qN3Y=lv)`Lh6|$$4gq4F>X0z zb>WZs@8qR*LX#pQqax+QJRhidVxguWvb1?23`BC-%ky$o6ly7!tHN%}@g!Qv$0WDT z8(4o}PF}h$U3!#M^FiH8A=u)Gh=KrA3;}`gH8KV8=FWA`WAae~A#fp(Wc#mwycQ1x zcx8Zsit;}W1V~V23eQj@EN?B_TSuSoO_h42{dJy^i$yl_uTTG8`_X?7{8t|T?GFEp zwEvEV|7wT-dNz@8K`WBODR^e`@IWBHm|*wTtY3o!7Pr7DxZ}DG&+i7oZpc z;W_pHH3ycWCaG?+CH|@w%{F6kh9gdoOLM;7Ia|X(W+c6U^$*57l%&i{|r}{yV)^I zZhcOgt% zw{btbu2+AOz`=7KU20qE&I=!Z7H0a`wcHFAjKX*?HZ!cbpvEClg9Msq15HK27GT<< z$X`-!OuW78+JjtB75_qx9d*+gDW7`SHCUez`cu zWsXiU-n^$#OX2&vcC$5omRxVibBx97Xhr7X<*jUEDmifc*I%(gvmoE1>i}=*+;_c2 z&%4^-(*tX3=bcx?OLb^RMmKunomXQh1+r_TW)o5?z8lMJ4tjIfD*3aA^9ohj zMZtfTkSuJl6uk4LE(owNA+j5(s@dUjd>2JIO^fdOO)ky3BES5pTX-f!YU~i)0bx}c zV_iC!+;LtXCLe3HX_%@}adQ)3NqeC^QpSzBC7RkuF9!0O+y7t9efe8jSKDrT@;0`g ziN5{vHP$#a&0vjFBMwm%+gfAQAc;7{IFQ6C4oCu`!HEn_d|Ri)2?ddwIK(-Miik)P z6Gy-}52(bbDBz3}AaJ%l=WjUI`GMiO;9BgxpS|wqdG7mWtvI+OD|FhZg)@78#D_BJ}Ffx-txmSxUUvCBnf3fOOZ%EuUXMzCa* z(*8R1dLZ^Dx8O%J!#E?uyr(8bsw)ETZ0lz7aMZ-IuJzr!qjS*XxO;<-+AraeL^tmUU!GO!aUF8!(_`G+v~FPOrE2v|1LEe1 z%YymQUgFbpewKUEn%}&4g+o@|McCgmPi@`lqTsQ`*OdfaaUdMDvA=C<=nBm|H3qi9 zW8&gy>(-W6bSM~O2hTdva~xxa(b)m`5OdJCg~dh6Nmu`rAN~czWFvfg_RA0cE2R1J z>71{zHcQnAB6E>FI%*8xTM4dA+-;a1!` zBHGqK?8OTx4*l@lH9IAB$2GfXZwD1ENg@Qr{>$_lzYT}Yep{>(y+23a zEcdro|HK;|`DZ2!dq{uDUMRX29@aHXjeA|>o)&A1^SZoi5<1spEFtSq+-Ce6KcTxz zv~6yMKvHBA=|p^FT~NC)hnk#8It-ZWNe?}OF{+3xgIfE>JDei~-uvY#;vxi!(9Uyp zA3N_y#>K;?&u&Lk2Czbc$0!QvFV~Iloj4}?P|$78`e7d5vTgbhEsj;KOr$$1UIf7X z3eA-trR0J?W+5&VkVUGu%|gj~5ZQH)wUMvQHXWMlk)SzG6cz_>2MhP4n}u{?Ym@R< zNkOhy^1*u^wD}y$`o=TQjG~>>&pq|5zk{FKWe#PxkK!vEX7l!5C_qWqmzruAXU4~l z_be;BmtM6{G2>e^D_^w5;RN0&s)aLaEV9gqln;8@{SmQ5KTQTprJFHpeJ zCa(*eukNrqWg#1XJ>=Q9cvqv%=*y3C`xnV=f;TgK6W-P$l{zf zFS-1Rl^jJ~R$E%!u21LsvS^`ykwtENQEwr7WRb8#3lN;ME{!lbgmKzH1*7|+Pwb4S7VqrEp?pru_qsuL zjz{EU>Jdd&R*ylu3kp*IkE`5Z<{xOvJjM%p4hHK0#X~!6%n5ek`>$^akh-4%~qR8uPW zWeOKZBGA4rZW`kA3kMFO<{D-g`UNamwGS>*0E(Dw47J18z<2q0)q&!3G8JIj?Dr&6 z;Io>y)`b2=U5EWw(<$A7Jl#}alVHrk*9u7vV{NufzFVy&J`6E;m3HuhE2c2NHqWEd z%cmlsuCLo}R4|lgHnA4H16>`j49>RE`f-M+4IAkD`128Jw4YPHDX;L+d1LCG%@$Vg zRln^d5#~;0wSPr!^q15<&c?04;l`~i=V$g0eB6^PO*^bkP;{R~9o67$)M+k=z5rW; z+R9skr%EsGaT0FnfckyIxj6%&P*sX;*o2a!pv6JvE3O=4SxjUl5xqh_LP1P zlImj^WxzpVV13RGz zV>2yW5E~<;y?SR}tijN9mxo@}aCvS`MD&$pg?i!M!b>_zhVf6j>RE~#9L~foubi;x zh~eu(KK*`d9dk3XnljJ|%Nk%mQtHmITr`$nmpJaYTZGHVbX*ix9$!Xg+$FE>1W!h& za{VvoV)&DW$R&DUUI)M3iZ5#Uj!^tsC~3LSth$@zp*sYgVT_bQjr>Oc$@$NCD4eCl zCuY8=R+Bw==4lwP1Yu=urN@Pgh*x+BsA49^D69RiqmIB#Vl>C&9t7oey66_*Xwx48 zI_b_?>1_)WUIV8H<|&w6lFA6N5fBEk1-tCjgv>qt@vkj5l#Y7WdJLtye%^Fu*BjD; zs5qu#e>mU=IW+Dzk4rlCnCA8ETW-q4_kYH&k69V4V}IkyW#|0HUgI{};`{UI(k?OF z+dB`KKNnc?nRU3CZ|H}=VPP8;nQXS7inxy0>wFtkygxY?A)nJ+JhK`(REAj!$to?G zV{I|`N;6aceDo~+B}P_>U~6^6ULFIOqREEN)Zapc##^=MnNh(#dy&j$(fZh0cFse1*x;!Ao$tQZ< z-ip#Qfwwh(TxE>I4Sr%5u`G;e(2AHq(DHVjZM(`r8?#$#a*Eoh2yKmDhUX>deiwGfu2k&+2$!E)UDeQ@_USfWQHr^hj7TO{sPQg8ZEl<(= ze)E|9XWH6$qw@+QN8$YgFBsbG1RjZF_zJkPh)zL%l+T{@& zU&Q=eTwr}BFBcByo#_soFn7^xHwvzhh8_bl{LDB5{1a->Dmkin0I3r;oF`AZkV?=B z`Lsi&6%Dq?r1l3?sKNE(LYVbpV=*$P%wIEqcN#NLgzF-BvbJpsH)j5*OcXk{6qF&9Cc{x%)MFqUG}7OP}5M*RG&U&@~euXk~%?THuxNe zy=f4iy#Lr_e-A(K=QkuZ9mJ)GU+a`(Hki#a--R+&5{`;Q9bZVR8Ib8sp%POdC}mf| zvReGQ&$oa1UdS^It6pDz@nX->(gBzP#8P^u?BmN!c6vqlqLxH!CDvglaI^%*igh~& z8@SQ9+2FaV6g~rDdXA^Lf6}z)ZTTD9nwH=yYB1GGM@$IuK3eKaQNVA!ZuVRD7J^?# z-8kZoSe1c+T!sCQI!%DyVKjYZ+^SL(OCs-o?H;^z^p3cr#eE_de;*O`;aEZ0T zp^Fjs%_MPmksqGQ$|~z-;x?CdT+LYMU$~dVE9@izLcKqcU8Jb5RNfSO`Qq=+2P3Dv z!q+g412!zHTWK5iu1d+G?4Td%*!xwdV~)e_L~z=wse9QpZrp*s-)Iclo1~yl78~{& zsP?-9ASu5nWlqSJR|d0wI|5pqUO)6S$>expeI55enlLvWR zS_4J+!X@0;*Q*ui+5cp^Dvr=`YouE~SSl6Uq4*h=C3NDR}Mi5ggAS5d*#TFe>t4go05#{QjICTER zAHWHx-Z}$ncY>b`!e8s^u(F3`kD4#ep@MR&mk7f#-~mEDbU+}I7$WtHQQyuN@|kvf zR%ekiO^^DMU_Qem(5^i6xsKX>>}BneB`Ts#4G2lV+IqaqXe@# zsW$(bE2}dM^-_sy3LucBj&s1_l`m2;JCoxAKGAL|oeH7%ip!CicH)WH3!~wE?}KSy z4&(@|T)T?#E~olN0kYx2%qRe@=6Ud{n%Qr+atEcOyU|+X4=}@Zu8#% zmruQt5~7f`xqcDU4H$IX3qS0tv`VjBPFDN z3yDrcI+rN?X8`(VvLYEknz@+p=QdcP)2=TemWed+QkZQJ=KkcHrpv1A~gPZU4(4izlUqx}Qn*`98w zVK>4ew_<_lE-MSb!@3YGp~**242u-^nh%9WOkMI}Y+kQ$PRRI{=mAXwg^Kd23LQ#2 zNYf@?vibFqINZG<@^~&T$6%s2+g>gxIIWk{rCn%=^am*kOLIB~oPM4y?@z;Z&Iy0@ zhVhPPh63yJi^-V3&647pUknwLCMRGM<&fO#7sXur_9UJ8p^ZB+DIwy@q{TviP+48> zk*7(K^U1UHxHTCzuExL>Xj+ZZvg3|qnI3$6(Wd&K8#Gg3Sk9gJcP{O>y@!e+vos9P zbO6a*>F?`COSYdjt=N8-%wLY=&1#R-=2~G;98MZdIhs~}E?yw;`-YVP1phTJA)atI zqN=nqAP=4Gmi@GCvG;EU73S^9IzlybUqpLGOjWX(6SCYJ`7Nh@NA0}Y5yK+~zfW9k z_6-7_0^7ER5UlJy7JfZxx3NL4n?ONtoO5-xmw4_&1QhNYvJMdn=Ib*A8WxUc_ zjujPTVXHW{FS+c+c@}eKzL;oh46svqXnN6OMtuJpHEjQz83r;S#M1S$uA>RSnUFvo zvSvqSNo`^Xd#`)3fLK#*D}`-m zyNe)}hH*^8d94FmQL723y^S2u+*B28H+nWIjKh7qYIU!7#U$F^S{@xt(9$xU6c`a% zUti4|GD`|;z9S+Rj^kr9TR)YrfW(9L+Y1=K>$J02ci*)wIZko#{(X1Mw*+tM$%>9D z=@PV|Ys572%F#IX=Q=4zSG~Zh-^D9e9kb8&OEyNr(S7HbnA@tcLaN_YKE&lX_^hdT zy$3j5jgiupmLf|N*TAw1i&e-2d%vc$QA1WUQ8^R{DK`>aVcq+}&mYlBn-sB0j7w26 zgHJXVKrV`NUtjx-nc|v18VgOe&v$k`1@N6XZ8H4w3dz+^f=Uab$j2pETIw-kbcN!-9i@$4W6% zBTXKSqISm57cLR&<-|OiS3og2;X|r*`!N#LB9yw9!5TWl0^m*qwgq^b9Q; z+edBD|BJvVel9+*OVY>yZSB;j53o&l{mESd*$nG#w*;SLv%YP$xP^dzxEbnx%K8vYu~X?8wodYx30Wa5k9o2!!MM(K4)PUoS?X669UX{d$m3xUkp zDUr&Sx>2vLwWE&ip!$Zj%<Nt%>r3~ zjPfwGJbbjut*%2va?Q?K^<{`ZPY};)%R3viy_h>c*|-u#LBAzyK#{aeqZ!q7OXo|o zK+I1@em=B?Rn4I4UD%#RFVR_j>yu7aZHfs(k=h+6vP3;y$_ktItuy;_fW)-NM~od? zDOwAxLd%DcYBhRoD-@r~5RbslHSm~e!os_UoF|r+PQJ^hI=wvpLmTHBisI zj!vT18}j}_x#J1naOZQb^XW-TTY5%cjpTl#(;@vZ(qtFq=~gX5x9q*~2IiJ05Zar2 z+iMyhsCKX`DGxYa1BV%>LjyTL$q zl~jYg!59XO^UWxF5R=tNqSjma`}QvY`eHs}S|{z#poGCMbh_l~Pvm;jO#cpR8N2A- z*tq9pSMIdiBJ$N6-tGzQJw+P&*PU$S(KgrYvVkxUMWt=SQpHfUh)y%Hr&pd7TD^|{ zKQx*gK2Ci2c$hho>kNa?`sb2%PQOHRzIi-cGB=nGP884KvMsrk=WXS6Lda`Gq&~0! zzf|0zZTZ^C6L%hFa)ZIk#B%iZY0wQmOk3L$0?`1YiR@=C{qc9do;sG&F)fAIm)r;NARv#SWzy5Nqh!bRR+|O&g zU>ijqab&^Osn(;W9)Ys5mhh$AbqX^>)8fX$gJQkmq4nUyKB9a#i5CA?#2aYg$R$fc zavc9SXkx5CF4k2$YNifbln#*BMf$wJ&*H~%fvXLqY5)095rSc z3g9}!@@2A1b9H6!_+@e-<}!u8*$`F7OsN>43SYc%hJcf8)U;6_XW1ypedn!vr5-191ccG}*6K?Vx=#-z(JByZRL7{kSMCt8r*tIqJtf>sTq zFSp|=8fI-eQ?bzgr`q(n{0a+6;UrIqQ9ijWE8{2{e!d^pY(_?!I1v>|x2TQ?9cwUw5#pG5#aI z`cPtFB{bY`*-&Ug`K_xN|4tsl@_98-LOS!i;d13!1K!m%rl%iS8@3)G&G+QN!VWae z`@UX$PhVZRSlD#4`y?v56@UA@X`~zD^gNnV$Q&+tFW^-(^eIt5<4$fo8y|=r(8z_| zudW(tLSEarpEjb4cB_*rmt)O=7RcKsbk;0HGMbv%i}gL`0qs1Zowz&73kZm%j*EB3 z1wuD0fZt&4#DxyjSBq6ci-5*Tq_&lZ0$;@U3m(p{S&l6_!FsOgWouQ;ketDmDaMj_ z3zL4=M8vty-5FCpR9q26GTL#i814=~2;Utz*$_6`VJp+&_r5ZN`fX-HOHfywoZz0x zH#Ni)FE(&9VzxU-(DP{boa^XA?U4#6PrvLZ$5H&&X>Z@Y?g6PsS8@XX(RcI<%`Tao zRY(1tpxSsQnGr`0JfPd|44N2YxfjoP^!;%J9Kx9fZw)^>_cQS%pIBXCQ#$kaJ^ES{ zW#Uuw@PSO5SdC9|;x4xfFT4b*#T}a9eJs1jxJ&SA*Yv+;!H&-xe2a)0d0jP|@^1n7 zU{o?^PcW~`J=g41FD#27=f@SpAJ~PmoBBk?ci4U#lPf->*3E$lAs+zN$6xWwd9ovb zmVxq2YvHWifc@$@g6o*{0u`nb7u7^Wx{<6$wJq*nJ*si(`yF>YSskEU`a3pvlD1Kh z>~rP{mnkpba3~ypAggpltQZ>&M-dy_D|M<{#c5dl>@oa8bB}0LMIBY*O9P=Ejyns;%xh(h zcJpg41qcfa8u&k%|oE=qjX>w;&jT{4!*K8MVP5Zv+ad%%uk3xCK`v>^+>ZA9INXjLRmy?NaxltFC=kdc#cr?xu(v*+yD0H(}8|TY+B0yQg<) z10Rd_6@Lgf79Lra+L061NCb0(!fNqUMIy}!&3^5KVf!8TYh8ZQew|<72KTIspsYD) z_CglB4tU-?d%9chP+N|~)INOZz*HqJ&gsIN}v ziC3!L1L@(#8*PV$-&b@9Iop*}w0T-rc?8Qmf{H6XY52#oWVZocro%gysbIA!X{ za9N98M8We^9UFsR5 z`q7`h>J9~VcZ`@suODhWIMr-o_@+9Gy^lhW4~NQuooaBWi4L6(N}&D*ya}`UQ}cOl z=Yq}JFXhy!g63MxDcCs3APojI^wGi3I;0Q|m5XW@=98;Bi_ca%STe1zm?MYF5ShZp z)fq$$D?aC{O|NJP*g*;|*?!)=^zJlJRq;w}{{s9z#{mUzs+KO!SBtM&+XxedFSJzF zVtyUq3avJtHC;Ftbtu6hp2^E0`9{Ox6)9Rrx`@SU<$*@7eZrCOyLL#-`cq2>y6c1D z(uiKBwnX}cZPL51Y|9583Wq9!Z&-Ub)};KbPfS9^6z>L{8e8iK4iwn~wRLXeZ5f$o z?oTZw0K(=c-DHpTq6rowJ4utRemMk`#;FA64PJoswX-#S`s)>xg;xzM; zert*;6@uLPx>da=EMeUq;vh`*^B{?J}pPbGcH+|Adh9+J@*{c&gOMlj+t{i`OMSsa!1P3 zscR`ZfSdXzt=T1ORxzgYv{u}%>fU;5j`zME7CQgkT7wIqTOxz@7t{Qs#UGR}rMzUj z(vikoUqs+@sk$;bEjdAN=nQ_i?mR1HF^`?RrsbMV@ld!brHGh;b?=BbJ{iJ0Bj)}r{ z!fPS1Ay^sovh5G8W^Kc{vHmQia@ z)nEKC00Y{gyB7cAwd_AZ#Ka%gR$5P&TmkWEyb>W3BlR7ZCYM_13SVG&bjF6P%pJ~( z6?zzqPqbQOL6i$VGy`d`61VB=zbjpm2w0}`9W}R>9#Azl^Fo1uAE`$WJ4$q||kw?BSlmR7lRDfcNBYaoZA zlB)XzQC-D?fB0d!>w=NjjCKLS+GqD+pd;k79Q7;+;EbTJ=x7Pla+F3{jVT z{~0bSB*Ps8B?Pc&In7!n^@X-0bgP75(qLZbDe=a5%#qwGEI_SW%23u)y@ zVbbBB01nK*`-u-#?9y1A>iUj0_wJ51AkYX}R8*((_Uu8Dw1$eA(sHB>hG$->Z1Nqe ziRhb6q+J;%mS5?ZubZ~r(YN_>mO55`Zxc>W1|Bmvfk8i0^{)=TjA!jUJ@n*#_L+6~ p*Vq1e^Z$|A^#6qmc0+Z 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

vhcqSbKg9CB($FRv2ECc>)&*^_K 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 z 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 Y^GkDt9rLp%|J>t-&$n&g-2M6g0#t3_ng9R* diff --git a/content/pages/domains/new-domain.webp b/content/pages/domains/new-domain.webp new file mode 100644 index 0000000000000000000000000000000000000000..1f08cae237a86acf68800ea36dfe21489b8235e0 GIT binary patch literal 12082 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 literal 0 HcmV?d00001 diff --git a/content/pages/domains/provider-menu.webp b/content/pages/domains/provider-menu.webp new file mode 100644 index 0000000000000000000000000000000000000000..d8faf66205a1aae267d334b6b912a0200e0d676c GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/content/pages/domains/providers-list.webp b/content/pages/domains/providers-list.webp new file mode 100644 index 0000000000000000000000000000000000000000..d53f47e0146f63e668f9f25a4420a49a2d00ca32 GIT binary patch literal 19932 zcmaHxb9iNIw)J;xI~ChW#da#TZ5tKawr$(C&5Bd8ZRb1PeQ);$8K93xT#X8}=pf>!|Z&Y4v!l#=%JUsfc{v@CvpZm;Rv3TvJcz!wtdI{6JaTQxUYeHru>5}2Y2<5q z4f|3!wYUeIczix3;P1~|X*YbOeBQi;eIhL6jC5ywxIEe3^4<9idi>nyo9CG|sgzu`9^XToR5=lYA~vtXy@t>&}mng{wb=yUJO zr#0rD{%X_Ciwp!#WKvD1>G`270_Il_UekAd_vO7`#WeI9@9v93L1(%#8mYBimN#dL z=onSrJQjNX!tD#YZ>KnW>{rW_M3UZZ;>em0<6`l@s}+QkKOEvoTFw&VNP9F>V3#Gh z{_O(?;evYZjca7;{0s87#f?%(AYb9c2mgX|e^vf!!#QUoqFUNN)-dRQs2Qn}`sZc! z0kZYQBS?4dQB}z5qykP8e#o>RP!IEE?tVVwYRB~|+4$zsBjX}x2_RvZ2vP%&PR4R| z2B?Cggb<%?o0;#uCY#v6Z(Ah|TW6wMa)Y&;;rOn`)HEa#ekD(C#({g{V zf^LGM!O63~*FDBDEy|(v3*|Je(KO{VZFyXwz>FMEOwb@{jCo-L>{~9s;kbk5H(jbr zUTDrcqA?7_<-O5Ks{BJ5df`4gG)mwJr3Z(KgI}%lf3A{NVHoY}0g1TnKTA0R3Klx= zZD1R7#}q@a8nfte%9--RBjR9N8CSA^SBDXrB>^H`l^zQWdn{mzIwjKIArmHX4+orj za%&H|wC(@eMD^M^Y%u_i&-jZ*558|RcvIAy0^85DT^1U>B@h`P6qiO_LRkU2#DDG} zzEQGR#Q(1$PELBoTAYGQVB{mdFV_rLAD{5q#0e5^^S5_YFKKSoupkRkJ3kZ+SGHjV z^GSx#O{u%LlexvyJTlMh$>1+1#mI~A2%nytmYud|qD=4Qv9W6Yqr)_hmsLJ6I`fp8 zH!c6#Xb^2;v~dEX9LHn_R4RR!eV=d6xkHbjjrOnwQC(6ad8j#WV^ewjQX=_<5x)7c zk1exHb%vDNOR{zywqC?4XQ)<4Rhce-Z_ocJyyz;a0GAve45xt-;V7S0(YV3&1#LE_ zyRmyOo|cH-KW1S3vR?Sl6QU)H*$*0F1_dAjCYnKjy%QaS;59&x8*=db(-1MyHQjIn z5gGj%Uv+Qr!x$q?PY&{vZn_e?*@CiU+NY@8N`ct3X+46PqQny$1i7q#%k*mv^(=}*t^F)kPMclF5KsczQhO_%c2(<&JJ63eB!2zhN6 zGMqGfOxn;%jz(IC0o7~vc?HX$^09A9cDY$&0)+*U<5|wIVJHpgpthb#L-0QF;8Mgk zuP29mQ)i>eRuVw7Rxd30PhC2=C+I0JCH$=yB?2DA#)uw~b|HYZ7;pTZ!XFGpgFf{? zdW7-9uqNXn8=HZ3AM^cEu3QFfSZCeON{rBERt?sN6=oV$AX8DJdWaU?QV}WJ8#Z+Q zgOpFs{1jE&ik!s01^q+(J3bI6%hG=tuhxvU{KA?n)go9CbfP1W>EIc@iZ3*Hdbc7T zQOLh+suc9Z)#3*9+mZK=w(pTmUGT&ZEPs>A{}h40$!3yXwyR~6`FrfOTHw@cwL`>v z9<^MPhQU%NJUcbNh!>}TgqroJJqA4i5=yyz0R!p2`zX z|5dVj&o#pK&l>zMQ6vsq1E3dzUh~h#68O9p(;`RDrtVa1z?VmWUnz!+jgOA~{D+57 z$F&XG%mB?WpVFa!N?{vEVOtT&%j2!p(LjuQ%0coCwjxz>{=}Kp3T{feDN2Lxz3>*A z39tq8;1CCAj`)U}RRKivqO}jkB$50EKY$D`YQeaf1s|+iMf~g8!8rc{SkKxUA<-Jn z*Ei~O!t1~I*W_nKF9cG=FkZWP3o3&vTVi`TJPE+kvD9h+zT?jsYjP8Kik?k0Zz& zO+aVuzqzD=4mDMf$&voj0|cN#M%{+SIl8(D(t>D(f0gO8So1KS@3$8mnHvfin(J6E%}2z>1P3n+f6MLRij zqIZw{lQQDc9wh(iegC*mSd2}n@+w~n`NWfJwy116b-!=(h|mb$!yn|Og^e;V++%uP z+dxN$ynH$T_D%Rav2G?67xwADaz{L(kL#cGTbQ@cF9G!5c%^&D!ldq5RL(WMQX#Yu z2H$xeTFgca;^!{pS8;yJ5uCsTy1!!tc58O{k6NZbyHa(bmkxO4rTt%hn^~_HbbN8Fen&27Q!xMle%3AM*GhGEc36C{4=cuC>C1C3}Vo^Bl6KTbs_%` zj{RL@+EcK0FjevJzUTsv=a?jU;9sB`<$EM0+@MTGupkX}o~@`Y`te0^pb|9hfVlt3 z08PuR8vVaWqJ%SaJfmrTU7KkheE{8^a*$Ry4jYnWNMjlMKOpj7%1A0c$HXU?GxS>? zK_h=rEbC?nJ3oh9&tFGTz%NKi>mQ&x1;nl;8+NAGU%&U?q4ZzBM@d-nOP|sy=v!o` zbASxfpIllJ=EP8$j*zM9mFP_019gLjR>2J7g^BtsIMtulikj5?@|L!$^8m(bzH>h@ z^TvdY8dtjcLcN~me+l`|^Y(|prT}-Rca~b6Xj=^<7N!&BAmOrTOAlWpGC{}nw`Xf9 zVd;E(*B1^(E-cl-%Det&jkC0a`#FK=zm|s`t-MlUF%;g5VvA6;7m4nWqC-mo>q#_R z9Klmkteyvq$X@U&!P~u>8lYuH=e_`i8nuLzLBud8Hluo4w$zUn=wcY4j-tR_X zU^_~$zKW>RMjOw}Lb8;cc`2zwW6NvRX4w0UQhDy6KmCj=7V!U>Q6HNsTA zUA~bgfe>xjY~_9yjpP3{)EKt$il_wzt*n@UTllXSjlo00HlFIpZQT}P1LB{N_$MOd z80fp*6=twncdo6rA$9xPDdsz(`}INxBxtq9EPI%d3|srISzT%cLVI zIx>IKC35b`qt$ogiTM09CkzVI|Gz4MzKW98q2&%X+lF_6P2z`)MF zZcW;IAApuq9yOCpcO7PAqqUyf+h0!imznt+WD)qPr2ShkwVk~2J_pQD{eN2W?^(2c zQu<*vHvFF*{f9#u1QHQAJWo)DJ`b`ZS1TOr2Inz?337mzoGrmmu{cr@f4=M0dOKr< z7sCk|5m*bDTKwBq{yiSg&Vv4G^YDYC>NNT{4%7s?xQ2nN`+BLy6T>E_*%@Pgpyj3) zACnquX^R6V|-`}yCB#vfHmG$IEA^MO32ozT7H2x;`3}J5aq@E zH{_~KQMdC2C*%vh#Ol@4SH}3Kd1}172=n|9v_t}7gqAurpPcI&cYdca#hsGZ`BS3& zD?OaW8RIekTg)CZw9~$jOkmO~^q%_vkp~vU(|ZmoUn2RBm~j9Ae16$#Z36&6 z$s1>R=}1(*+w0jq9_#?PEE%;4VoBSxK!#|P-^<5fkS>bt*NjkWbax+fwhMH7XFRzJDPT3amzXP7h5ZgCkYVo^tLp8FiUad zdDRNl<~dEe^gbotyeN#F}0Lw-pvnF?N@M(dPmws5s5p?_V6m6@9s zZ6G34k0~!#)J06){vsDd`opgyv^8xRhC$S5aumxK^>q~SsfF&Y5la2e5oE&%m{4*l zw$0bf*%scZamIY7OE#%&><_rwlKPt3;?gI)i@WEgIx|Q@)F?k9AXzRu*zYzM(Lg(Z z_pFD6L9clIT%FB!2F>lpvoM{#ZO~$HYp?LeB~8DjoxA+;1RU8d8&}=g}k=aGcZqwR;QAqJmxf&?G&yA`lPhhSgw$bHjLBgU8>nF zuz*3|NXv2jqa7Wf1w@FBBzFUf0F>HI5*2|+*S1BqpCGvQHYkROX3?R-Cj%w)-4G}R zRygpxQiG>Pfw0j>O*%L2XH2Qvxch#N?%!mjwLV}&BUiU)i^CIb{Jw@Vi7_rhN9 z#}-x|?MDf!XF{utzYqt7^G}mtIY-5$A`EYQs_?717OHMN0SO_H5j%mXHvSJr6|3sIpX-=?#fI!C+ojDz8-20`nWd|Tp|xOJFXJvC9C|Ly;fRa zbj=<0j6OIaiJ}tY3V&@M9?*>S8PcW8W}9ZfY$3jOwBZk$aB`pqTji9Bkb2XX;WDw>lgc7K_8InoGE$EL zP$V6WCRfpUel{TFK!PW~9LXPaPV0a~b-Rfn*0N(zzRIEdJj?u-`@@__KfY21a%$}) zxo(2}zFxt4$~qz{?MHr6PqOG){CWY&TI(0JRxq;^A!!rYf}XockLMo4Gm2ppO*Nd1 zI~2Pkar@sBX~h4(6NVr}56Mpjusa^6Byr<-wd&ky+&IMiX96wGPiSh5i6x$mew`2N@d|XoO&;?C|qs= z*WjriKJEfM5xwbEr81DB()a~O zn3O?lMMLQE+(~Iv9p&znBAHeNR^p6FTy0o&8K-_Waer2h@q}&)New!YX5jpaN*{7& zT_WtQ5EJ)PgN;ZsRMcj)=mP|IA@gpM(%Ur4?^2mP12|5kVzRK6G5X4~`eAr)b;sKW zen!TB;IgA$sgi!3A3*93-7gFGhQDQ#!|w}Vh=DImL#x=di|Pmj-&^gYBs07pLW;7Z z%*&0+)-R+bfJ#zDwtY+lonU>0V8X$o7Hn}zJ-nD-!NS;yr!D}8-64bRs>}{izcwp3P|Nv}d5m76MdyMr)yz^V0%iRLqDitbfsTgo z9pzGC%S-dHg|W{ytCLHZZCvt%N#tr6DxHAyUFguJM{`ntdcQj1OTQl~br3>PtcZZ-oZ8bVtmX)Lm&EyN{OPNcKZ;wNC+^JK3=wTm zY8}7jP!5}sARlEb&bpz?*dA!PzDXAp`5tLJDLy5eutd6Nuc}S<9(q(imJgA7uXrmz z;uDM3YOWO;5(sMg9M8FSG--qnhSLQYNCa~ivTRFC97)`GXOxMVhmXY#ruej>;6sF# zWs}z*`(4ak)JvAttiQ(&t)89SS-bzJLaf|U0JhE)?YdkB!inG@r?x?dD-@8+7H=1F zM~pq*?BAiJk1pymI$~PVgqRUAS=Jb;3qhcYa_xghKi*DK=Q1VL+sIvD9S`{w!Q({KZ+C5Nr5XxfO7AIA&vfwxulLEzG_G8e+-P05#Vh7^yqZLe6Af0t@Y z`EJ}Hf&YA}3Sv(qhRj6fMA|&v48S<}A>+UZc_ZpA2x+v#q(t@Z1()DQ-*NZ8!^y!o z7ZfZ&t~GO~?`vFmtlUp|0#L;?7a!EHFU3!0D$vgBN*vuA2tMg&0_% zAzn<*gQVwdfLzkzg8O{U^K(HVn_xv3uH7?x3tE1H(KXG@F0ePyOd3(xA$@@=Y%bW^ zVRK-DTCk(?B#k0ATzV#2eKspH!lK0$15bO;08s=4{z|VeJ>6n&z$GN6utBd0HFHb7 zbKD0y6;7}<2P*P+C^>o;Xbj;s&4bpZXr^UN6N1R2zTDhyjRjV%w-$$m*A2xwubB_Z z&C%C69Z#_gno10zh!$&|h*{kjBxD7XzlULA*Vt>6p#}|GAEq%(@NTF_qw3+F(PJZ~ zCQ39Ffl~#pqsVqTh!nZ)QV@0J%v3~SmtljL^Oeg-+fnZ6q}rZF#?40jJ27oJm?sSS zXwf74#KbrdUJM~B1<`DGha=QJ~?0d zMMVM;02p>dk&C}a9$Wx|8abAfI|1cSmha##UV6EH4=dZL8qORTpcPFtqME*D*!3AG zUSd@x$3(#gil+K0jPI55HS71YJ!3FG#DA{7{eoJ4J`YIh0e)q<^yHhN#>X<3A=6Ie zy-XH%^~*)CTFDct|8S%Qg99*;a4~q49IoU!bh?)Mg{&K{5M29~u_u(D&YIf9JXh2x zgekBeu6qzr$Nf1$KkDYLS%SrG-op4BJR@si={F{tMX7WC+Z}t(BaAFd5o=@mQISl_ zsB9;lF^CigG1FV|3-D5cgo8NiY6#BjPTn;X_Fi!lg}wx#sA&w{oLo&8zO>3Baf(9X z_TVRWp+pc(puo^1KCSfIc?%-!mZ4oKgEc5zxek8VUJKY?5?fO?7&@8dTyu|L2=Rb1!-S|!mVBm5Q2N{dAbusRiq8KXnA*?asRp)*H^5->yH z2?pEq+9*-X!gX}6w$j1bP+(QL+h6Q}Byfl#t_BOKUOPo=!)7;s`2FV8pqz-+O^P$u z(ZQk{m6SGoX3N~sx}9?CYy|_`r-i>l4-iLh>Y{Sd%98aCC2`HFBdK8U2!IBVIM{bc z2@qCNlWQfHbqozt-WGFoX{uMC@RRZeh`|Lu#A&c1q^&Q1Gw`^Cfpb~3W0qy1O$~fn z+M4AuH9cLH?n0?L)n@a=&w2MQWEq1fif!oQj+3O7V8XMi9Iukmvy}D**|2-w1*c+w z04gzdfDpzU|ILdK`E#FcPx)YlN>&TO;sy+%h_zM+xjcgpp861hWkuPAvenvEUO6#Z zlg(EsARf#c4Ly{F`ADR9Shaq-@kU2HkSkwv*dYR2b5|2uq!4|I=?JmcCe2U?$-fm5 zpTq|9Vm=L+wv$lVL?+6KTP@x#Zg>2C{HWM@A0iy}2YvdBuk)uq;5P_pQTiyz%qq$( z;(EySY6)DVhE5bnht52p4K^(QXTgwwj@%KE)Q5sWW7_Tx`npbQH<-9k%5YnwwJ3(p zPS3nVnk4t7H-7vviy|smk=aSJXKzbWay2IQ!q}GzJCPBkyr>8c)h3bJ8YG zg$SnM+PW(r7rwQ4*gN$i z?6Xaejpq{b8#G$SFa)kry!bsA%TZLl72FfF1GBK@#$ZY z>~6L;+AGd|7eV-=lmaMxV29Fs^ z85G&>rQEq8`e9nIt4{vIRGFI<^bjjPFK{M)+n?ZiijT-_u+Zn1Enk<(ZzNsQMM?V> zO=j^H_7LS~6oPNxCi)!`s*At3Tw7skQUOs#ie2RcHQ|fU!A7uvvYY$zz!BPczZP_L zRFxfd1H;f$K@2k0&O&Zj*SDlY&3_W+-ck(~ojT`;=Fdz|!CHtumN;({*Pb&!Fz}l* zL^OHCao|k1Lo-J0=*K-QFiM+P&v#wKsm83OXC11gvq1n_D-ZDckoWJw8;#D&&nLtE zi~Ggy0pn0j@SK|9GPzz#I7;kuhK`t;=xfjI4(!l=uS;yNT(+|<3pEHfmx-(zq10U}J@1u#VgYyL&3xwX4rw>=b6Aq2Uviyj>BVrL;(hk%8kZxfqu z;Tk8NsO+Y%x5+0)UjYn-1rf|;wrHQJTw0Z`Cd)X>?#c}(4XN9OVsf}E7TV`_a0v9{ zw0To1WhaV-K+*=sGH)}_q7Hly*raHmcF?R>$53Ou>3-Pqm9F&JjsgZ^4ioWcvA&;M zKP1P;se&UyKsjE$h1%z{{f@l~?wdg~#9VW7@odK4s1~*P!VfHNSjZ;ofk13TR*NZs zv2k@zK9;>mp6)kTMFof-Hfo4+@Qw(KuTwJ(&Kw{7>HB{dZo>j~3!s0~r^nL9asfP# zqk^JUHB5Js~N3!z^bP)7@Fw z5QW0`s;9a)xmMXeQUB|S7Gf6^9*I1ArwlWkl70kAd8wnB5sYvJG-7)U3LVRg_+V1& z%s-;qEZ7znD{|hsfvC2TtsLz7JD=?L{sWyT^SVQ9$Ky8zs@M2DU={uhYdX0(idq0D z1yca{Cb6VoI!?utFq`7-TcvBUpVpS9)^$VNOb@C%$#dKXPNksPxaR#8oa`a%c^2R5 zL)f+12~DLu4RO+Z+e)lpg%i)a%E75Z=^H5eg{kF<-$Jo?YWDi5_wdWW`4UVur}-kl zxG(4gqmIUWzd;6x?iV2dfWj5F=!g8~Nf)qG*E(SYM2ECfKd?Fr9&Dqe8Ps!;ceB#= zu3BP}W`)d0eLYj}a*+s)a}@;c+>M%AOYV6pyoznGxE>#4&4V46%9$Pi%e&mfKi;kQ z{PKJpKrXIr2B48myfL2^NP*J09d;P~8Y-O5Q%?egmxv5-C(XQ2PH4z3r?t!}Xku&n z4GB)8f+q)K{Mw#ooD7>K8?E^eT}d)A;qt3kX4Wr(X22M4{hO~@owPO=p$9{N__$K< zlI)3tHtal}PLOCiu>BN|n)&LWJC=|*YawG!t=6Jvw0V;j{DqvC;DBQjpP~Yg)JE>j z&5f(~*oF@71Nh2QX$13pm%S0uk7XO4>Hf4|zIj(QRXK|M9ijS})MKscL5iqd7SoZv zp2UI}I^RDj#7iwxRJ+l1K(QE2#=M9V1^A$8=(4y~Aq|SPKMs@zATuWDF&#Lm*PpRJ z#s#7hF`=Ppu+Tk9Sv-HrRaQ@N4Kp6S_6U5K>q$4*f>Vr}AL@PsJC+p^irg!o^(JhO z*aGtCq*II*!?|s%UGvEpCDG*lUG`n+)kwZ*vm;Q3JldmH zZZK6EGacjjHD{CY_h?UHR?Xf!3`qV_gJXtwh7)yB9??`&+5kLtmcZDo_GhTN+e?nS z?w}0jxG)q1q~XFoW{1mtL%?vlSHchj@7B2#Fm1h<*lvXuN2VRLVWcInkBvK>=14L~ zXI2i$XDE*mTa0QN;RMKJq;d{I=#SbMcjM9dOas;;bi^z`p4lC68u1tjf7xA|wu>Ws z{zCOCgBm)Y!CTatLSF>>50p(IAz6vvf=1=~k2Z%q-f`7uoWVA2elE;MfpmJ2672Q|CPmgwdg%oq zxzWqorh&Pf7OYoeg6Mo=_{EKXZI2O#o$$ZLeqAx{m@WM*J~D67F|}&z)d}W97&kp6 z+G`bpRIWl^nSPUjgS3lXo^Amc-~J3{5I~6u?xPA!WAQ+AF)TXyB0)JQawmyIb-UHe zQ?PWqBkjr`T?Vpta!Lc?jRgP|1qkFdl>I1e0&%4GHYAG)2zMrZ%v;9c)$q>}IeVkN zx!}}#-+fhGO&9JWZ8&$nI+aCk@9eB*j$w@TfgmT@;C#9-HorQ&F$Q^iH;Y3*M36Ls zS4TCt1htaVfic2EP&T`u`$a#j`a`>ymoW$kbkXbq zCeeejf!98qg@%DbTFtqPqG<^w&vVw3ft zbgk|>m|MnkQGn!apH7}C#1AEs$2nBiNN*Q%+mrB>MRgS93CLMQdCtRy?N^Y#ZwA-d z?#*I3CSmKdzkT~od|_iBI07zj5`A}?x`P)dBFt9s0JQTnZwUl?u zdGt(F!K02NuHlNUKOU$w8IT-~$C4O7>Vx^5&|vW3CVBX$D^H(KFiV$X`RmlPOR*I= zRS{2!NA2(7+8?639p)L&H5t^135?w5{y3t=>`2Fw@%@aBnR)v~D2mIjPwBd>K;Q3asDcs1em_F4c$;;pKQ_{#NH9F^p)`!S3^Udu~IJA(>?K>Yn2|h9mYbH zBbV30t%hYBDNbKP%xI{VSc`ps>{%yu&dN~8)NQ8tA5z0lYks8H*TAu?lpWZ`WR6Xk zY=O%}2%ccg>N~)+tdqwpRIYz@75))(if9A8x7m>Wf~uRKLY_tIcsiNU1a)gI1?HHT zH;n_gV7|h*y#Q<*kV*88_*T7&wb_&D(60h1HM?n-U7SPZ)Q^}2r%dC5Me*_jKsyOb z#4JDG=QQzw9}l+Ien@0mMD>^d0-E3#0PZmShTkdu&QlYjeOY**p@L*RKb`}Nw^Dk0 zso-t;1FBJx5GSX0I!42XM3sK^^~Tn+u09n!4ye1))YEc)cgR+Gv(0sIGaU!-xkfX9 z;`YKE!3=18&+6+)!Ru%7MsY>jOCj&C>`eZQE8PT;OtaQsTtyS3`Hk=!aw!z#mm-q2 zKV-MS3#w;4%QsA=^lXUiE3^V#zP;$o1l$S@2{6pDaIymkzd%G)Z332zZz?XHJ1Od& z;17HHkieOXZ1a+@wNgd8{p-arh%6CEDoKIe(nx=(R-S%4SUiRHSwW>naBq@S|E1W6 z`UQQSyvkE-VWd=3zR-00%QqPT7yAt;^qiLXj-!Cy>mw$e<*FhQVUwm-9SQU?t&*+% zO7q@fm2xw(S;EDTHa=^m%Sxx2UK67#;@8lbfpse%0isGPX1OvFWRv!)$Qn6&Q-=vy zN#>$((Vc5{j}29%5{!0t()LbvpT{&0YWstYZ&bgNA&jl60T$5~!+nmKeU4~00~D$D23PyqmWjO}!qW>81SMuo^QX0Bp$ z#(H}ZJ|6qv-BYZ1?hlEX*K08UtVlJ$Um_kCwfW22lP*6)`~py6UC%nKglU9}=)o8}rJ=!iz++p*X;%DaPi<<(AA5cHT=6-o=Hm=?GM~S-zg{*d?VV5V%+3OMuL_fLAGUgyd7(mb%G~JH-f;Msmz(FK1 z<9!j6x+zR?nuG}HZ>X}RalaIP9u2u%t~l12AbT?qe!%L_W!(32{>W{Go^G}Fxy2d8Y0kH zsqlGmF&Vma{9M-d_b*DD=>^Eh3aD}$9Gb_Iw>5|fhJq?UpGZA9L!6j^qPup;^rR-^ z&qIu^m3@o0CpB)k#iI|4<1K;%|E_Z}DcaVkQIn_GAE|B_TC19IwvnKBwAXh(a$IO2 z%4ocvB%de7QIjza{$r>({(;#)KuTaUdEi=mbs$x*2R6G3&Zjh-HugJ9Afl7cfx#*+ zeNLsXjUI+9|5`2^u^55Uv2n7b)bwzYii2$2iAyi;*dNa|7E{YV^h3c%?wbH{&HTgM z>uE9L)>Zo-6%{jQ=)uNGd5=c(s(+*oUlbY=r@oS0tS?TfR9(Dknd!>7=3IiAJv+NO zsM{w#-^p}aWaY9hBxFsvPHuO1klo~X1~dA49$&c&_z~0VQkwqxGT^*bJFY{oX5Zfl z^!BtWG7BazgoGyp&QcdiVntyKhc}}!2`6|x4!8(dYjMm5Yrk_Jt7{l<#Ql0K3BksA z0Yo+7<3W_RTNhOmL&KYZW?Es}S-ZcegSZ+&BOb zUx4jbEyxRxl)2an^zSSC=4^2EsVRgjA_5^cUDP9(_ZxrV3LKoQZ zo?8>#$hxzB#&+<1vuLAt&7UO@yuA(Tp5ukz97fNQs;&JjzxFx#ToItq@Su915y%`$ zO33)mv3CrQ1>YRs27YrWe|(1&%gQ66k8tu5hMP*b;ZmTkHaSA+UqYIt0-vsLutR?O zUaJmz&V*j4pc+h*?h1wp*3wiR@8E=8r1Q47$@oewQrR>rtdLKQcgVg*_)PwGp2~W~ zcPD_hIM9Ks=~1@5qR3e;jgD4W{6>MaznIrk<b~M&}%qL5&B=_=TPEMV@Ymo0sY`6ZMi$dCWR8)%Zw4B3qWU>4_uxa|+7-P=h z&zqTwO>fz=mG~23u4nk^nVtEAX&>=kcrytLKP@45ISYfdilHc6Oexd5pYl4wxg zs*k??sPgN1W7n+X@19GIliincB`Ag=YWvCN-K!}Kw`nsEBIdR$#E6$(M*Ls(YUNy{ z@J_?^yYxhg1l76|YH<9DIsV}eM-lOa6Xl7~!$}$L?dRRO$S>X3rT1Pc6Gh_KVobkY z=jq(;Xd0Nrex+kiSKg&1v8q>&ir$?U7-OL}Z+3`nH5$!8o<8w2wgO6vEZ+KGIi6Dl zry8)qi3!kMi-*eP(_)(=OfRBz$Als9S7eHafJPBn_vc=gZLWFGio|`(u#A5LT$sMv z)GzKO8Hyd2FQR{Tg$3m7lO1r{GI!dRpEoSt6IqR7$3w@SH}nGdSUzKO zbZ<>o62|y?4~KgAzSzCAw6vaH8hkdmn8OVqkIAZf6o<7>U92|7h z*XXq5hPlj)+tE4iu9N-;%9A>&tWt#-j~+TIt!XtQ<)zWB&%oaQWY z75dq&$;hT^-v{}ex;gV~A4z@#BhKpt&y6$pfj10$=Ts`$8;FvqIQaWbG*4{Whhu)- z9A&|v86cQZSk#64hSnp6~tlYNbgzk(`ZLHjciwg1(H;-8+#Q{As$N+jPoUwCj|FlLxSyGA{eQ;4# zWs0(-?4XMYHpSOPjSVvpV4Wh%ms|;!tW7*WX7X%3A@JJqM*Qa4Po=4xb-;=N0O?hl$u(_W z64IP^o`?b2M6<-9azMxH!Yk86g-Xh-Hcf5rc)%`Un^2+dK9X#}~e_ z>0`MXqym=C`D?*=;=6t0r}Lq!TCu1$g!nTOV$(l>ZhqRwx5&ePgTUKe$bOI0zbw3v zlI0pwkfK3aj*bE7We8QRTJxca^Ya5>dC>?W_vLMg%4! zUyJ9Anz+(I9-fueo+ve!!j8gl*L8I%mGc?m1r15Q*RVIfWs4LjH7Nl`Sm34rbAM8x zSs_B6L868((jvko3YCbs4C99n^EwF5IkhdeZYgVrz80zNdhq&|MIJFupd(#Z!Y?E7 z%4el5iuannNH6Kn18YZN1(yiIUD4IRm_Kuh3Iz(-k^Q-_ zc4%390=QOyre(&eEvvYJ!hSRECCr8Xm#i=d2{kG{@bLcf*~WPM)SyLYZRP(R%6 zntXrN6{06;%-4%3X135bTRI#M{$Ej_1iJ=#zv0x0mi15x)W3O8b>j36-wF9*WL&rK zgTI%*2o51G9R_i~o4O_AYjfEi+K=MBIG=73W>1%}wUAAAk?s537C@NDaD?noW{?Od z%LO)M^D3bB+coy#jreqIMYK^o6F>vT zCul6C*(%;d4*j{P=k#PwftbohEW_R$yk5G&&ma)dZ$Ce|$J4_&#CWkMy`SOc1o}xa z30Sn}zZairF+eJ&%^1nvFLLYg5r37uNvXG6nx`s-6cubqA1UFm0n=OsUa84ckv0}g zoYO~S$n%vX`7p#{Suh)NM_AcrW~L7Tb$v7J36~I6yf81p%u;QJtbI-MFu&fD5Fvu= z3=1B@oHML$QcZ*~k~?|G;SefdC@Drss6NT4+OBo?LmqqeS4DIDCawO5sr%OyP2Y&# z7)1DWGdPh6`!>Cvp$!Y1(mwQdq$e?Zmjuts^N`lEHpKFfj_ywC;ben!G^3b6vGUFL z6mM_Z9K6^qiz4sm-uZThTimn{%5g9ro3O~qMYWUG`J>Wd>TzRLN2!ZXcynIV?$~>= z@NP{UZH#ht0gfv?iBt{<78p>jL8;_E*^=|IvI5A9oHm?;hs-md5S3Muej33Vt?n!{ z1*a01UIwEWqL4yvbcowLbg3ptmwWV3_gkWaG*ByiWG=wxHiOZcI3E3=UYt62VmCqM zNQjman-Xsi9kL%lsAgFA7ZcyqND1O;_P~{-FOm2DlqeW)58ZIn(~Rcrjjy9jMwc8+ zI>54Ce|3u=OWE=lBPIZVnv){QqLCrEoTHIt1fS&MN|5gn1lS<5%96$|(~WIAD)K5# ze8O%Sld`5{inkhJyPo~1^6(ze^eL-6QceJ!#8v>Ly&|E$JHn%YhwRQw9>-4ZJWXm@M{ z5TLH^x``(eVr}>WSY&Nyhn2AC07&rwKX^MXMWaw$_eoGL^!TB-PY0uA^pWSE9DCac z4&@fa?IIw(%NID<%4nZP$ipqfQ@sF9&kbGBpKbtpQTs&AB#}a2sv_%6_1M_AXBsVT za9PN3xOv^I@;rrVl<(w)~L0F!K=*dRv`l z^zp)sgim~xb6QclgvIO$-6e6lz66=sF-0y#F#}ks z8&-eF?C-p8dF*kA`}3=>9SjS9c#OKKY;aW(4)mh1O;cr9t)1&ZWY^mJMC81VNtc8q zqIEwxq}15M=JI1YB^L5tRoZWm^KJ3EaNo`Lw7EWV21T+_h6FhhFh)Gx+pWzconw=; zhPv^xHbv^@t-jf?3V`CvnFS0>p-puGn=J@F5_!fHbbw z$GV9r($)56Cg(c-%$s3m2<9i=XN1f*g=mCcwWxA8)vSsX(zp4p|3mjJw42(K8O@av za%8l)&1O!%2? z13*u=`z@V@y1Mk!CI>PY*PSmSsjK30J;D<>7dfX1 zagaF&v8eCjeW+0}cvtXJ=^NJ}Bz7QI>FM15h2a-y9qTXf5S*6djuXEoFL zj8N5RrxvnIPSzw2 zHDO}>@RWjdpv669kbF=3s;|XsBc;GV>XMtK-ggAamNW?kDXf6;K0E?qq`yn$YhNe0C-LafJpq3LbP%Vgkwyi^+g5U4~v2BnbbG3 zajpYJ&M(xNh0LK8@$p~vOax;g&4;Jta$$f}vH&vl;l1PO$=!1R5^&v;6M&DW8#C^i zeh7R(>EXudx!g%l`(5b^pgn;j_Ck;Z%EtVD+OIb{j1*XZ0a;JTFMm=BO&+jQU7xV>KLQi{8dc3f807~-$-9K~~N5EzH?3Hm!;LN7+Q#-0dB1!jZ+>7$wFX_cbr zSf{J5EB{`bX*bL80>g&!{u4;c-=t7OX==@JSub-NX7HzV$HF87?tE7F#Tnb@Ub+@ejx#dM4 z_RZmqjfh2dU{0DUOg{=^;wF*DIG$u_fq4Jk-)1gcGR=i3d1mJIX|Wm3CK@JMD8Gy) zB+BAsniB^o2$O<+KF$pvgXuMcKx`w)d*YlOH})IrAnw+$d;Y#C%Oey!FHL~m%JF>5 zAy!J}+thFEeYY4R9&7Xt1>_5|(CQpEx zaz1+>Kv}Hvg{)XHVvW(v#3WYWEo#RkWFB5(DAy4VJ;gi6&|qtu$Gtb#{P$Y}dAzKv z3&-Xu%>rXhTChn*{s_%#{3RL>(dITN#HQ%*^~?i>M-)u1pGtu5d7vvM+W8O8&*IUk z;~$1IF}b?|ABya}=~^Q4TWw|X8|uZreM}tY>uIg#G_*ua1h3W@VI~-d@V$Y3zw*O8 zo=m)&hTG-_PH_0w*#kf>dlWJ@jd05HgxNa<3DkRTwY{^5fY^Crq!`lTC`YtiQ_lgq2S!L*|o} zJ%x|_G5eYsuO#vzhx&s`nn>TJt*kqHtBN5&_g6q#00Lg6H$HhJI(hvkY+VacHpZ%# z4Q;&QZ=wS?af9dZ48%Poqv1VhS`(8TIC)O&|I-+0C)UIPa=BQKN9Ozh5_m5a%G1KK zH!Y=Mv}VP3;f-n{uwV99R#c($%eLv4U9C|?6%=rONB^w6xmR0Kwm`KUCYbK9HAB_jZMMF5Hi5MMN|I^`KZslj1$F4#3Jw5!M$OeFqHS;O7+uZKF)T)00007t_t0P z70+tSz9O>c3is0!}mTmB6Dn=%7j zJ&o*j;nNpW&+BL^8blBKCC`nqxAajSPVlfK&;ZP@5dAINk%L&JS#XZ&+0S`nCw!xN zOLvb>dB&E53V+>isyqK(jS+Fl76p-Q(N59AWVaeC`KXq*13jLGB9F0xnLSR6eaOKq zQVH>6l2d8wuYuQxA$cGKO}gnHVH#JmAZ1+fQ{=O=`?$Pr~jbNKy0(gTE5x(|6DkU(LN zP7dGvF}jgV0AHlcTfnNBDHIR`UQ&;f~RRgU+_M`SQ2Zh?jB>Xv$n) zU+19VhK=DWE-=|fOZIOiwP6J~FRny>4;2qFBR<_qS&hJxO!j-R#l3n7YVq%$(X;$Zh-$p zL->D>HMWaYCLApigWDe>w=}Rr?k%DUxiENv`sAjO&V1+pZ*1TiwirV%zoe{j53tt` zn&vQV9#JtwduwVEi#{Ipq)554JTUC5vy-m)x`ixeZCi>6mVQdZ`?5uvn!=MI8K>;Q zo_Uv#R|4ySt+c*ye>3(jW=23qKO><5HIQIG!OJkn^-{g zSRbJgoh@4`f({g0yZjSk0RQav#w+tkc+_bPCbPRrmE#>1i=Hu*hGr*RzLOff*F&(c ibX5`q#i|p5-_ARV-~pU?rk}t700000000000000+|K0rn literal 0 HcmV?d00001 diff --git a/content/pages/import-export/happydomain-export-zone.webp b/content/pages/import-export/happydomain-export-zone.webp new file mode 100644 index 0000000000000000000000000000000000000000..780aba249408ce094f03b2cce40152b7b91b7a7b GIT binary patch literal 113686 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 zⓈ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 F{{{IpFnRz0 literal 0 HcmV?d00001 diff --git a/content/pages/import-export/happydomain-modal-import-zone.webp b/content/pages/import-export/happydomain-modal-import-zone.webp new file mode 100644 index 0000000000000000000000000000000000000000..6ec969359a9beebd72aae7f543406bf3c0b0bbd2 GIT binary patch literal 7806 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 fVF}|#N-i!LlDVh&QQQ literal 0 HcmV?d00001 diff --git a/content/pages/import-export/index.en.md b/content/pages/import-export/index.en.md new file mode 100644 index 0000000..b098082 --- /dev/null +++ b/content/pages/import-export/index.en.md @@ -0,0 +1,63 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: "Importing and exporting a zone" +author: nemunaire +weight: 1600 +description: "Bring an existing zone file into happyDomain, or export your zone in standard BIND format" +--- + +happyDomain can exchange your zone with the rest of the DNS world using the standard zone file format (the well-known BIND format). You can **import** a zone file to populate your working copy, and **export** the current zone to read it, copy it, or keep it elsewhere. + +These actions are available from the gear menu at the top of the zone editor sidebar. + +## Re-importing the live zone + +Before working with files, it is worth knowing that you can always pull the **current** zone back from your provider. In the gear menu, choose **Retrieve the current zone**. + +This contacts your hosting provider, reads the zone as it stands right now, and refreshes your working copy from it. Use it when the zone may have been changed outside happyDomain, or to start again from a clean state. + +{{% notice style="warning" title="This replaces unpublished edits" icon="triangle-exclamation" %}} +Re-importing the live zone fetches the provider's version. Any local change you had not yet published may be superseded, so review your pending changes first (see {{% relref "publish-changes" %}}) if you want to keep them. +{{% /notice %}} + +## Importing a zone file + +To load a zone from a standard zone file: + +1. Open the gear menu in the sidebar and choose the **upload / import a zone** action. +2. A dialog opens with two tabs: + - **From text** -- paste the content of a zone file directly into the text area. + - **From a zone file** -- select a file from your computer. +3. Click the upload button to send it. + +![The import zone dialog, with the "From text" and "From a zone file" tabs](happydomain-modal-import-zone.webp) + +happyDomain parses the zone file, recognises the records, and groups them back into services in your working copy. As with every other edit, the imported content stays local until you publish it. + +{{% notice style="info" title="Standard format" icon="circle-info" %}} +The expected format is the standard textual zone file, the same one BIND and most DNS tools use. A line such as `@ 4269 IN SOA root ns 2042070136 ...` is a typical example of what you can paste. +{{% /notice %}} + +## Exporting / viewing the zone + +To obtain your zone as a standard zone file: + +1. Open the gear menu and choose **View my zone**. +2. happyDomain renders the current zone in standard BIND format, with syntax highlighting. +3. Use the **Copy to clipboard** button to grab the whole file in one click. + +![The zone displayed in standard BIND format, with syntax highlighting and a copy-to-clipboard button](happydomain-export-zone.webp) + +This view always reflects the zone you are currently looking at. If you are browsing a past version from the {{% relref "domain-history" %}}, the export shows that historical version, which is handy for comparing or restoring an earlier state. + +## Typical workflows + +- **Migrating from another tool**: export the zone from your previous tool as a zone file, then import it here with **From a zone file**. +- **Keeping a backup**: open **View my zone** and copy the content somewhere safe. +- **Bulk editing**: export, edit the file in your favourite editor, then re-import the result. + +## After importing + +Importing only changes your working copy. To make it effective at your provider: + +1. Review the resulting diff and publish the changes (see {{% relref "publish-changes" %}}). diff --git a/content/pages/import-export/index.fr.md b/content/pages/import-export/index.fr.md new file mode 100644 index 0000000..7884b6b --- /dev/null +++ b/content/pages/import-export/index.fr.md @@ -0,0 +1,63 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: "Importer et exporter une zone" +author: nemunaire +weight: 1600 +description: "Importer un fichier de zone existant dans happyDomain, ou exporter votre zone au format BIND standard" +--- + +happyDomain peut échanger votre zone avec le reste du monde DNS en utilisant le format de fichier de zone standard (le célèbre format BIND). Vous pouvez **importer** un fichier de zone pour alimenter votre copie de travail, et **exporter** la zone actuelle pour la lire, la copier ou la conserver ailleurs. + +Ces actions sont accessibles depuis le menu en forme d'engrenage situé en haut de la barre latérale de l'éditeur de zone. + +## Réimporter la zone en ligne + +Avant de travailler avec des fichiers, il est utile de savoir que vous pouvez toujours récupérer la zone **actuelle** auprès de votre hébergeur. Dans le menu engrenage, choisissez « Récupérer la zone actuelle ». + +Cette action contacte votre hébergeur, lit la zone telle qu'elle est en ce moment, et rafraîchit votre copie de travail à partir d'elle. Utilisez-la lorsque la zone a pu être modifiée en dehors de happyDomain, ou pour repartir d'un état propre. + +{{% notice style="warning" title="Cela remplace les modifications non publiées" icon="triangle-exclamation" %}} +Réimporter la zone en ligne récupère la version de l'hébergeur. Tout changement local que vous n'aviez pas encore publié peut être écrasé : examinez donc d'abord [vos changements en attente]({{% relref "publish-changes" %}}) si vous souhaitez les conserver. +{{% /notice %}} + +## Importer un fichier de zone + +Pour charger une zone à partir d'un fichier de zone standard : + +1. Ouvrez le menu engrenage de la barre latérale et choisissez l'action d'import de zone. +2. Une fenêtre s'ouvre avec deux onglets : + - **Depuis du texte** : collez le contenu d'un fichier de zone directement dans la zone de saisie. + - **Depuis un fichier de zone** : sélectionnez un fichier sur votre ordinateur. +3. Cliquez sur le bouton d'envoi pour le transmettre. + +![La fenêtre d'import de zone, avec les onglets « Depuis du texte » et « Depuis un fichier de zone »](happydomain-modal-import-zone.webp) + +happyDomain analyse le fichier de zone, reconnaît les enregistrements et les regroupe à nouveau en services dans votre copie de travail. Comme pour toute autre modification, le contenu importé reste local tant que vous ne l'avez pas publié. + +{{% notice style="info" title="Format standard" icon="circle-info" %}} +Le format attendu est le fichier de zone textuel standard, le même que celui qu'utilisent BIND et la plupart des outils DNS. Une ligne telle que `@ 4269 IN SOA root ns 2042070136 ...` est un exemple typique de ce que vous pouvez coller. +{{% /notice %}} + +## Exporter / visualiser la zone + +Pour obtenir votre zone sous forme de fichier de zone standard : + +1. Ouvrez le menu engrenage et choisissez « Voir ma zone ». +2. happyDomain affiche la zone actuelle au format BIND standard, avec coloration syntaxique. +3. Utilisez le bouton **Copier dans le presse-papier** pour récupérer le fichier entier en un clic. + +![La zone affichée au format BIND standard, avec coloration syntaxique et un bouton de copie dans le presse-papier](happydomain-export-zone.webp) + +Cette vue reflète toujours la zone que vous consultez actuellement. Si vous parcourez une version passée depuis l'[historique]({{% relref "domain-history" %}}), l'export montre cette version historique, ce qui est pratique pour comparer ou restaurer un état antérieur. + +## Cas d'usage typiques + +- **Migrer depuis un autre outil** : exportez la zone de votre outil précédent sous forme de fichier de zone, puis importez-la ici avec « Depuis un fichier de zone ». +- **Conserver une sauvegarde** : ouvrez « Voir ma zone » et copiez le contenu dans un endroit sûr. +- **Édition en masse** : exportez, modifiez le fichier dans votre éditeur favori, puis réimportez le résultat. + +## Après un import + +Un import ne modifie que votre copie de travail. Pour le rendre effectif chez votre hébergeur : + +1. Examinez le différentiel obtenu, puis [publiez les changements]({{% relref "publish-changes" %}}). diff --git a/content/pages/login/happydomain-forget-password-page.webp b/content/pages/login/happydomain-forget-password-page.webp new file mode 100644 index 0000000000000000000000000000000000000000..c559b3b413f42d48bc3fa937a89275dca81209e6 GIT binary patch literal 14476 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 jz)1KTVGP<^tv)M9&3gwx@b8 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 Z0000000000000000000000000001E+Av*v7 literal 0 HcmV?d00001 diff --git a/content/pages/login/index.en.md b/content/pages/login/index.en.md new file mode 100644 index 0000000..57e3b96 --- /dev/null +++ b/content/pages/login/index.en.md @@ -0,0 +1,45 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Log in +author: nemunaire +weight: 200 +description: "Sign in to happyDomain and recover a forgotten password" +--- + +Once you have [created an account]({{% relref "signup" %}}) and validated your email address, you can sign in to access your domains. + +## Signing in + +On the login page, enter the email address and password you chose at registration, then click **Go**. + +![The happyDomain login page](happydomain-login-page.webp) + +If the credentials are correct, you are taken to your dashboard. If they are not, an error message is displayed: double-check your address and password and try again. + +{{% notice style="info" title="Repeated attempts" icon="shield" %}} +For security reasons, the server may ask you to complete an anti-bot challenge (captcha) after a few failed attempts, or temporarily rate-limit further tries. Wait a moment, then retry. +{{% /notice %}} + +### Signing in with an external provider + +When the server is configured for it, an additional button lets you sign in through an external identity provider (for example Google, GitLab, GitHub, Microsoft or Apple). Click it to be redirected to that provider and authenticate there. + +## Forgotten password + +If you no longer remember your password, click **Forgotten password?** below the login form. + +![The happyDomain forgotten password page](happydomain-forget-password-page.webp) + +Enter the email address of your account and click **Send the recovery link**. If an account matches, a message containing a recovery link is sent to that address. + +Open the link from your mailbox to reach the account recovery form, where you can set a new password: + +1. Type your **new password** (it must meet the same strength requirements as at sign-up). +2. Retype it in the **confirmation** field. +3. Click **Redefine my password**. + +Once the password is redefined, you are redirected to the login page to sign in with your new credentials. + +{{% notice style="warning" title="Servers without email" icon="triangle-exclamation" %}} +On instances that run without a mail service, password recovery is not available: clicking **Forgotten password?** displays a notice inviting you to contact the server administrator to reset your password. +{{% /notice %}} diff --git a/content/pages/login/index.fr.md b/content/pages/login/index.fr.md new file mode 100644 index 0000000..7491ac7 --- /dev/null +++ b/content/pages/login/index.fr.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Se connecter +weight: 200 +description: "Connectez-vous à happyDomain et récupérez un mot de passe oublié" +--- + +Une fois votre [compte créé]({{% relref "signup" %}}) et votre adresse e-mail validée, vous pouvez vous connecter pour accéder à vos domaines. + +## Se connecter + +Sur la page de connexion, saisissez l'adresse e-mail et le mot de passe choisis lors de l'inscription, puis cliquez sur « C'est parti ». + +![La page de connexion d'happyDomain](happydomain-login-page.webp) + +Si les identifiants sont corrects, vous arrivez sur votre tableau de bord. Sinon, un message d'erreur s'affiche : vérifiez votre adresse et votre mot de passe, puis réessayez. + +{{% notice style="info" title="Tentatives répétées" icon="shield" %}} +Pour des raisons de sécurité, le serveur peut vous demander de compléter une vérification anti-robot (captcha) après plusieurs échecs, ou limiter temporairement les nouvelles tentatives. Patientez un instant, puis réessayez. +{{% /notice %}} + +### Se connecter avec un fournisseur externe + +Lorsque le serveur est configuré pour cela, un bouton supplémentaire permet de se connecter via un fournisseur d'identité externe (par exemple Google, GitLab, GitHub, Microsoft ou Apple). Cliquez dessus pour être redirigé vers ce fournisseur et vous y authentifier. + +## Mot de passe oublié + +Si vous ne vous souvenez plus de votre mot de passe, cliquez sur « Mot de passe oublié ? » sous le formulaire de connexion. + +![La page de récupération de mot de passe d'happyDomain](happydomain-forget-password-page.webp) + +Saisissez l'adresse e-mail de votre compte, puis cliquez sur « Envoyer le lien de récupération ». Si un compte correspond, un message contenant un lien de récupération est envoyé à cette adresse. + +Ouvrez le lien depuis votre messagerie pour accéder au formulaire de récupération de compte, où vous pourrez définir un nouveau mot de passe : + +1. Saisissez votre **nouveau mot de passe** (il doit respecter les mêmes exigences de robustesse qu'à l'inscription). +2. Ressaisissez-le dans le champ de **confirmation**. +3. Cliquez sur « Redéfinir mon mot de passe ». + +Une fois le mot de passe redéfini, vous êtes redirigé vers la page de connexion pour vous identifier avec vos nouveaux identifiants. + +{{% notice style="warning" title="Serveurs sans e-mail" icon="triangle-exclamation" %}} +Sur les instances fonctionnant sans service de messagerie, la récupération de mot de passe n'est pas disponible : cliquer sur « Mot de passe oublié ? » affiche un message vous invitant à contacter l'administrateur du serveur pour réinitialiser votre mot de passe. +{{% /notice %}} diff --git a/content/pages/me.en.md b/content/pages/me.en.md deleted file mode 100644 index 60d36c7..0000000 --- a/content/pages/me.en.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -date: 2021-01-12T21:38:49+02:00 -title: "Set up your profile" -author: Frederic -weight: 40 ---- - -You access this page by clicking on the top menu "My Account" link. - -## Account Settings - -The screen is divided into three parts. The first one will allow you to change the settings related to your account: such as the language of the interface or the way the contextual help is displayed. - - -## Change password - -The second part of the screen allows you to change the password. - - -## Change account email address - -It is currently not possible to change the email address of your account. We invite you to contact us if you wish to change it. - - -## Delete your account - -The last part of the page allows you to delete your happyDomain account. - -Once the deletion is validated, your account will no longer be accessible and all data belonging to you will be deleted shortly after, during a regular database cleanup. - -From the moment you delete your account, your domains will continue to respond according to the last update you made on happyDomain. The deletion will not affect the distributed data. diff --git a/content/pages/me.fr.md b/content/pages/me.fr.md deleted file mode 100644 index d5ae27f..0000000 --- a/content/pages/me.fr.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -date: 2020-12-10T10:26:54+01:00 -title: "Paramétrer son profil" -weight: 40 ---- - -Vous accédez à cette page en cliquant sur le lien « Mon compte » dans le menu en haut. - -## Paramètres du compte - -L'écran est divisé en 3 parties. La première va vous permettre de modifier les paramètres liés à votre compte : tel que la langue de l'interface ou la manière dont l'aide contextuelle est affichée. - - -## Changer de mot de passe - -La seconde partie de l'écran vous permet de changer de mot de passe. - - -## Changer l'adresse électronique de compte - -Il n'est pour l'instant pas possible de changer l'adresse électronique de votre compte. Nous vous invitons à nous contacter si vous souhaitez la changer. - - -## Supprimer son compte - -La dernière partie de la page vous permet de supprimer votre compte happyDomain. - -Une fois la suppression validée, votre compte ne sera plus accessible et l'ensemble des données vous appartenant sera supprimé peu de temps après, lors d'un nettoyage régulier de la base de données. - -À partir du moment où vous supprimez votre compte, vos domaines continueront de répondre selon la dernière mise à jour que vous avez effectué sur happyDomain. La suppression n'affectera pas les données distribuées. diff --git a/content/pages/notifications.en.md b/content/pages/notifications.en.md new file mode 100644 index 0000000..9406e8c --- /dev/null +++ b/content/pages/notifications.en.md @@ -0,0 +1,116 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Notifications +author: nemunaire +weight: 2300 +description: "Receive alerts when your monitoring checks change state, and configure where and when those alerts are delivered" +--- + +happyDomain can notify you when something changes on your domains. Notifications are driven by the [monitoring & checks]({{% relref "checks" %}}) system: whenever a checker changes status (for example from **OK** to **Warning**, or back to **OK** after a problem), happyDomain can deliver an alert to the channels you have configured. + +You manage notifications from the **Notifications** page in your account settings. It is organised into three tabs: **Channels**, **Preferences** and **History**. + + + + +## What triggers a notification + +Notifications are tied to your checkers. happyDomain watches the status reported by each check and sends a notification when: + +- a check **degrades** to (or beyond) a severity you care about, for example reaching **Warning**, **Critical** or **Error**; +- a check **recovers**, returning to a healthy state, if you have asked to be notified of recoveries. + +Each notification therefore describes a status transition (the previous status and the new status) for a given target. Which transitions reach you, and through which channels, is entirely controlled by your **preferences** (see below). + + +## Channels + +A **channel** is a destination where notifications are sent. Open the **Channels** tab to manage them. + +To add one, click **Add**, choose a **Type**, give it a **Name** (so you can recognise it later) and fill in the type-specific fields. A channel can be **enabled** or disabled with a switch without deleting it. + +happyDomain offers the following channel types out of the box: + +### Email + +Sends notifications to an email address. + +- **Email address**: the recipient. If left empty, the notification is sent to your account's email address. + +### Webhook + +Sends an HTTP request to a URL of your choice, which is useful to integrate happyDomain with chat tools, automation platforms or your own services. + +- **Webhook URL** (required): the endpoint that will receive the notification. +- **Webhook headers**: optional custom HTTP headers (name/value pairs) to add to the request, for example an authorization header. +- **Webhook secret**: an optional secret used to sign the request so the receiver can verify it really comes from happyDomain. + +### UnifiedPush + +Delivers push notifications to your devices through a [UnifiedPush](https://unifiedpush.org/) distributor. + +- **UnifiedPush endpoint** (required): the endpoint URL provided by your UnifiedPush application. + +{{% notice style="info" title="Other channel types" icon="circle-info" %}} +The list of available types depends on what the instance administrator has enabled. For types that happyDomain does not provide a dedicated form for, the editor falls back to a raw JSON configuration field. +{{% /notice %}} + +### Testing a channel + +Once a channel is created and enabled, use the **send/test** button next to it to deliver a test notification. This confirms the configuration works before relying on it for real alerts. + + + + +## Preferences + +Channels say *where* notifications go; **preferences** say *what* gets sent and *when*. Open the **Preferences** tab and click **Add** to create a rule. + +A preference combines the following settings: + +### Scope + +Choose how broadly the rule applies: + +- **Global**: applies to all your domains and services. +- **Domain**: applies to a single domain you select. +- **Service**: applies to a specific service (you select the domain and provide the service identifier). + +### Channels + +Select one or more of your configured channels to receive the notifications matching this preference. If you have no channels yet, create one first in the **Channels** tab. + +### Minimum status + +Pick the lowest severity that should trigger a notification. The available levels, in increasing severity, are **OK**, **Info**, **Warning**, **Critical** and **Error**. Only status changes that reach this level (or higher) are notified. For example, choosing **Warning** means you are alerted on Warning, Critical and Error, but not on purely informational changes. + +### Notify on recovery + +When enabled, you also receive a notification when a previously degraded check returns to a healthy state, so you know when a problem has been resolved. + +### Quiet hours + +Optionally define a period during which notifications are held back, for instance overnight. Set a **start** hour and an **end** hour (0 to 23). When quiet hours are active, alerts raised within that window are not sent immediately. + +### Enabled + +Each preference can be turned on or off with a switch, letting you temporarily suspend a rule without deleting it. + + + +{{% notice style="tip" title="Start simple" icon="lightbulb" %}} +A common setup is a single **Global** preference, pointing at one channel, with a minimum status of **Warning** and recovery notifications enabled. You can later add more specific per-domain or per-service rules as your needs grow. +{{% /notice %}} + + +## History + +The **History** tab lists the notifications happyDomain has attempted to send. For each entry you can see: + +- the target concerned; +- the status transition (previous status → new status); +- whether delivery **succeeded** or **failed** (with the error message when it failed). + +Use **Load more** to page back through older entries. This view is the place to check why an expected alert did not reach you, for example a channel misconfiguration causing repeated failures. + + diff --git a/content/pages/notifications.fr.md b/content/pages/notifications.fr.md new file mode 100644 index 0000000..6161a03 --- /dev/null +++ b/content/pages/notifications.fr.md @@ -0,0 +1,115 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Notifications +weight: 2300 +description: "Recevoir des alertes lorsque vos contrôles de supervision changent d'état, et configurer où et quand ces alertes sont délivrées" +--- + +happyDomain peut vous prévenir lorsque quelque chose change sur vos domaines. Les notifications reposent sur le système de [supervision et contrôles]({{% relref "checks" %}}) : chaque fois qu'un contrôle change de statut (par exemple de **OK** à **Avertissement**, ou un retour à **OK** après un problème), happyDomain peut envoyer une alerte vers les canaux que vous avez configurés. + +Vous gérez les notifications depuis la page **Notifications** des paramètres de votre compte. Elle s'organise en trois onglets : **Canaux**, **Préférences** et **Historique**. + + + + +## Ce qui déclenche une notification + +Les notifications sont liées à vos contrôles. happyDomain surveille le statut rapporté par chaque contrôle et envoie une notification lorsque : + +- un contrôle **se dégrade** jusqu'à (ou au-delà d') une gravité qui vous importe, par exemple en atteignant **Avertissement**, **Critique** ou **Erreur** ; +- un contrôle **se rétablit**, en revenant à un état sain, si vous avez demandé à être prévenu des rétablissements. + +Chaque notification décrit donc une transition de statut (l'ancien statut et le nouveau) pour une cible donnée. Les transitions qui vous parviennent, et par quels canaux, sont entièrement déterminées par vos **préférences** (voir ci-dessous). + + +## Canaux + +Un **canal** est une destination vers laquelle les notifications sont envoyées. Ouvrez l'onglet **Canaux** pour les gérer. + +Pour en ajouter un, cliquez sur **Ajouter**, choisissez un **Type**, donnez-lui un **Nom** (afin de le reconnaître par la suite) et renseignez les champs propres à ce type. Un canal peut être **activé** ou désactivé à l'aide d'un interrupteur, sans avoir à le supprimer. + +happyDomain propose les types de canaux suivants d'origine : + +### E-mail + +Envoie les notifications à une adresse e-mail. + +- **Adresse e-mail** : le destinataire. Si le champ est laissé vide, la notification est envoyée à l'adresse e-mail de votre compte. + +### Webhook + +Envoie une requête HTTP vers une URL de votre choix, ce qui est utile pour intégrer happyDomain à des outils de discussion, des plateformes d'automatisation ou vos propres services. + +- **URL du webhook** (obligatoire) : le point d'accès qui recevra la notification. +- **En-têtes du webhook** : des en-têtes HTTP personnalisés facultatifs (paires nom/valeur) à ajouter à la requête, par exemple un en-tête d'autorisation. +- **Secret du webhook** : un secret facultatif servant à signer la requête, afin que le destinataire puisse vérifier qu'elle provient bien de happyDomain. + +### UnifiedPush + +Délivre des notifications push sur vos appareils via un distributeur [UnifiedPush](https://unifiedpush.org/). + +- **Point d'accès UnifiedPush** (obligatoire) : l'URL du point d'accès fournie par votre application UnifiedPush. + +{{% notice style="info" title="Autres types de canaux" icon="circle-info" %}} +La liste des types disponibles dépend de ce que l'administrateur de l'instance a activé. Pour les types pour lesquels happyDomain ne propose pas de formulaire dédié, l'éditeur bascule sur un champ de configuration JSON brut. +{{% /notice %}} + +### Tester un canal + +Une fois un canal créé et activé, utilisez le bouton d'envoi/test situé à côté de lui pour délivrer une notification de test. Cela confirme que la configuration fonctionne avant de compter dessus pour de vraies alertes. + + + + +## Préférences + +Les canaux indiquent *où* vont les notifications ; les **préférences** indiquent *quoi* est envoyé et *quand*. Ouvrez l'onglet **Préférences** puis cliquez sur **Ajouter** pour créer une règle. + +Une préférence combine les réglages suivants : + +### Portée + +Choisissez l'étendue d'application de la règle : + +- **Globale** : s'applique à l'ensemble de vos domaines et services. +- **Domaine** : s'applique à un seul domaine que vous sélectionnez. +- **Service** : s'applique à un service précis (vous sélectionnez le domaine et fournissez l'identifiant du service). + +### Canaux + +Sélectionnez un ou plusieurs de vos canaux configurés pour recevoir les notifications correspondant à cette préférence. Si vous n'avez pas encore de canal, créez-en un d'abord dans l'onglet **Canaux**. + +### Statut minimum + +Choisissez la gravité la plus basse qui doit déclencher une notification. Les niveaux disponibles, par gravité croissante, sont **OK**, **Info**, **Avertissement**, **Critique** et **Erreur**. Seuls les changements de statut qui atteignent ce niveau (ou un niveau supérieur) sont notifiés. Par exemple, choisir **Avertissement** signifie que vous êtes alerté pour les états Avertissement, Critique et Erreur, mais pas pour les changements purement informatifs. + +### Notifier le rétablissement + +Lorsque cette option est activée, vous recevez également une notification quand un contrôle auparavant dégradé revient à un état sain, afin de savoir qu'un problème a été résolu. + +### Heures calmes + +Vous pouvez définir une période durant laquelle les notifications sont retenues, par exemple la nuit. Indiquez une heure de **début** et une heure de **fin** (de 0 à 23). Lorsque les heures calmes sont actives, les alertes survenant dans cette plage ne sont pas envoyées immédiatement. + +### Activée + +Chaque préférence peut être activée ou désactivée à l'aide d'un interrupteur, ce qui permet de suspendre temporairement une règle sans la supprimer. + + + +{{% notice style="tip" title="Commencez simplement" icon="lightbulb" %}} +Une configuration courante consiste en une unique préférence **Globale**, pointant vers un canal, avec un statut minimum d'**Avertissement** et les notifications de rétablissement activées. Vous pourrez ensuite ajouter des règles plus spécifiques par domaine ou par service au fur et à mesure de vos besoins. +{{% /notice %}} + + +## Historique + +L'onglet **Historique** liste les notifications que happyDomain a tenté d'envoyer. Pour chaque entrée, vous pouvez voir : + +- la cible concernée ; +- la transition de statut (ancien statut → nouveau statut) ; +- si l'envoi a **réussi** ou **échoué** (avec le message d'erreur en cas d'échec). + +Utilisez **Charger plus** pour remonter dans les entrées plus anciennes. Cette vue est l'endroit où vérifier pourquoi une alerte attendue ne vous est pas parvenue, par exemple un canal mal configuré provoquant des échecs répétés. + + diff --git a/content/pages/provider-features.en.md b/content/pages/provider-features.en.md new file mode 100644 index 0000000..bf21c0c --- /dev/null +++ b/content/pages/provider-features.en.md @@ -0,0 +1,45 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Provider features +author: nemunaire +weight: 700 +description: "Compare what each DNS provider supports with the provider feature matrix" +--- + +Not every DNS provider supports the same set of capabilities. Some can list the domains in your account automatically, others handle only the most common record types, and a few support more specialised records such as `CAA` or `TLSA`. The **Supported providers** page presents this information as a single comparison table so you can pick the right provider, or understand why a given [service]({{% relref "services" %}}) is unavailable for one of your domains. + +## Reading the feature matrix + +The page lists every provider happyDomain integrates with, one per row, with its logo and name. Each column corresponds to a capability, and the cell shows whether that provider supports it: + +- a green check mark means the capability **is supported**; +- a red cross means it **is not supported**. + + + +The table scrolls horizontally if it is wider than your screen, and the header row stays visible while you scroll, so you can always tell which capability each column refers to. + +## The capabilities + +The matrix compares the following capabilities: + +| Column | Meaning | +|--------|---------| +| **Supported providers** | The provider can automatically list the domains in your account, so you can import them without typing each name. When unsupported, you add domains manually. | +| **Common types** | The provider supports the everyday record types (such as `A`, `AAAA`, `MX`, `TXT`, `CNAME`). This is what most domains need. | +| **CAA** | Support for `CAA` records, which declare the certificate authorities allowed to issue certificates for your domain. | +| **OPENPGPKEY** | Support for `OPENPGPKEY` records, used to publish OpenPGP public keys in DNS. | +| **PTR** | Support for `PTR` records, used mainly for reverse DNS (mapping an IP address back to a name). | +| **SRV** | Support for `SRV` records, which advertise the location of a service (port and host) for protocols that rely on them. | +| **SSHFP** | Support for `SSHFP` records, which publish SSH host key fingerprints in DNS. | +| **TLSA** | Support for `TLSA` records, used by DANE to bind a certificate to a name. | + +{{% notice style="info" title="Why this matters" icon="circle-info" %}} +When you add a [service]({{% relref "services" %}}) to a subdomain, happyDomain only offers the service types your provider can actually publish. If a service you expect is greyed out, the feature matrix is the place to confirm whether the underlying record type is supported by that provider. +{{% /notice %}} + +## Choosing a provider + +If you are still deciding where to host your DNS, use this page to make sure the provider you have in mind covers the record types you need. A provider that supports the **Common types** is enough for most websites and email setups; the specialised columns matter only if you rely on the corresponding features (DANE, reverse DNS, SSH fingerprints, and so on). + +Once you have picked a provider, head over to [add it]({{% relref "provider-new-choice" %}}) to happyDomain. diff --git a/content/pages/provider-features.fr.md b/content/pages/provider-features.fr.md new file mode 100644 index 0000000..a10ffc6 --- /dev/null +++ b/content/pages/provider-features.fr.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Fonctionnalités des fournisseurs +weight: 700 +description: "Comparer ce que prend en charge chaque hébergeur DNS grâce à la matrice des fonctionnalités" +--- + +Tous les hébergeurs DNS ne prennent pas en charge les mêmes capacités. Certains savent lister automatiquement les domaines de votre compte, d'autres ne gèrent que les types d'enregistrements les plus courants, et quelques-uns prennent en charge des enregistrements plus spécialisés comme `CAA` ou `TLSA`. La page **Fournisseurs supportés** présente ces informations sous la forme d'un unique tableau comparatif, afin de vous aider à choisir le bon hébergeur, ou à comprendre pourquoi un [service]({{% relref "services" %}}) donné n'est pas disponible pour l'un de vos domaines. + +## Lire la matrice des fonctionnalités + +La page liste tous les hébergeurs avec lesquels happyDomain s'intègre, un par ligne, avec son logo et son nom. Chaque colonne correspond à une capacité, et la cellule indique si l'hébergeur la prend en charge : + +- une coche verte signifie que la capacité **est prise en charge** ; +- une croix rouge signifie qu'elle **n'est pas prise en charge**. + + + +Le tableau défile horizontalement s'il est plus large que votre écran, et la ligne d'en-tête reste visible pendant le défilement : vous savez ainsi toujours à quelle capacité se rapporte chaque colonne. + +## Les capacités + +La matrice compare les capacités suivantes : + +| Colonne | Signification | +|---------|---------------| +| **Fournisseurs supportés** | L'hébergeur sait lister automatiquement les domaines de votre compte, ce qui vous permet de les importer sans saisir chaque nom. Lorsque ce n'est pas pris en charge, vous ajoutez les domaines manuellement. | +| **Types courants** | L'hébergeur prend en charge les types d'enregistrements du quotidien (comme `A`, `AAAA`, `MX`, `TXT`, `CNAME`). C'est ce dont la plupart des domaines ont besoin. | +| **CAA** | Prise en charge des enregistrements `CAA`, qui déclarent les autorités de certification autorisées à émettre des certificats pour votre domaine. | +| **OPENPGPKEY** | Prise en charge des enregistrements `OPENPGPKEY`, utilisés pour publier des clés publiques OpenPGP dans le DNS. | +| **PTR** | Prise en charge des enregistrements `PTR`, utilisés principalement pour le DNS inverse (associer une adresse IP à un nom). | +| **SRV** | Prise en charge des enregistrements `SRV`, qui annoncent l'emplacement d'un service (port et hôte) pour les protocoles qui s'appuient dessus. | +| **SSHFP** | Prise en charge des enregistrements `SSHFP`, qui publient les empreintes des clés d'hôte SSH dans le DNS. | +| **TLSA** | Prise en charge des enregistrements `TLSA`, utilisés par DANE pour lier un certificat à un nom. | + +{{% notice style="info" title="Pourquoi c'est important" icon="circle-info" %}} +Lorsque vous ajoutez un [service]({{% relref "services" %}}) à un sous-domaine, happyDomain ne propose que les types de services que votre hébergeur peut réellement publier. Si un service que vous attendiez apparaît grisé, la matrice des fonctionnalités est l'endroit où vérifier si le type d'enregistrement sous-jacent est pris en charge par cet hébergeur. +{{% /notice %}} + +## Choisir un hébergeur + +Si vous hésitez encore sur l'endroit où héberger votre DNS, servez-vous de cette page pour vous assurer que l'hébergeur envisagé couvre les types d'enregistrements dont vous avez besoin. Un hébergeur qui prend en charge les **types courants** suffit pour la plupart des sites web et des configurations de messagerie ; les colonnes spécialisées ne comptent que si vous utilisez les fonctionnalités correspondantes (DANE, DNS inverse, empreintes SSH, etc.). + +Une fois votre hébergeur choisi, rendez-vous sur la page pour l'[ajouter]({{% relref "provider-new-choice" %}}) à happyDomain. diff --git a/content/pages/provider-list/_index.en.md b/content/pages/provider-list/_index.en.md index 09801ab..5a8ed80 100644 --- a/content/pages/provider-list/_index.en.md +++ b/content/pages/provider-list/_index.en.md @@ -5,7 +5,7 @@ title: List your name providers aliases: hosters source-list -weight: 15 +weight: 400 --- You can access this page by clicking on the the top menu link "The hosts of my domains". @@ -14,9 +14,9 @@ You can access this page by clicking on the the top menu link "The hosts of my d This page shows only the list of registries and domain hosts you have added to your account, and [allows you to add more]({{% relref "provider-new-choice" %}}). -![The hosters of your domains](hosters-list.png) +![The hosters of your domains](providers-list.webp) You can add a new host by clicking on the "+" button at the top of the page. -By clicking on a row of the table, you will access the parameters used by happyDomain to contact this host. +By clicking on a row of the table, you will access [the parameters used by happyDomain to contact this host]({{% relref "provider-update" %}}). This is where you'll be able to modify the name you gave to this host, and where you'll be able to modify the access parameters. diff --git a/content/pages/provider-list/_index.fr.md b/content/pages/provider-list/_index.fr.md index 009acb4..dadfc46 100644 --- a/content/pages/provider-list/_index.fr.md +++ b/content/pages/provider-list/_index.fr.md @@ -4,18 +4,18 @@ title: Lister vos hébergeurs de noms aliases: hosters source-list -weight: 15 +weight: 400 --- -Vous accédez à cette page en cliquant sur le lien « Les hôtes de mes domaines » dans le menu en haut. +Vous accédez à cette page en cliquant sur le lien « Les hébergeurs de mes domaines » dans le menu en haut. ## Vos registres et hébergeurs de domaines Cette page montre uniquement la liste des registres et des hébergeurs de domaines que vous avez ajouté à votre compte, et [vous permet d'en ajouter]({{% relref "provider-new-choice" %}}). -![Les hébergeurs de vos domaines](hosters-list.png) +![Les hébergeurs de vos domaines](providers-list.webp) Vous pouvez ajouter un nouvel hébergeur en cliquant sur le bouton +, présent en haut de la page. -En cliquant sur une ligne du tableau, vous accéderez aux paramètres qu'utilise happyDomain pour contacter cet hébergeur. +En cliquant sur une ligne du tableau, vous accéderez aux [paramètres qu'utilise happyDomain pour contacter cet hébergeur]({{% relref "provider-update" %}}). C'est là que vous allez pouvoir modifier le nom que vous avez donné à cet hébergeur, et que vous pourrez modifier les paramètres d'accès. diff --git a/content/pages/provider-list/hosters-list.png b/content/pages/provider-list/hosters-list.png deleted file mode 100644 index 9f12e229cb504970211212296fb940b615e4656e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61272 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 NM@}9tKXl>7zX4pxnkoPQ diff --git a/content/pages/provider-list/providers-list.webp b/content/pages/provider-list/providers-list.webp new file mode 100644 index 0000000000000000000000000000000000000000..df7d1eec81685c19f8dc44d5df3400e9243ab4d8 GIT binary patch literal 25562 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

xpqcOE z1MDXNw*q9D#7~o__Qo!KhKfQg-8cxDF@K&&bPCNQ46)8M`4$5>`)=%Q%gvi}4F}=u z!AZDlfr#>+_(VZ>0xn5U6s`k3A;`VI6L*`Z>3OjEiCXv3G%K zC%IT-Mm^+9i|SUi45?fu2ohdfapUpr+(Ug^`(gSv-osQgs{QWt`p@0(IEPqtf188x z_;z$1V?L*i5s>`%m?1IOAlF4=9p@ZTuw9=YSBOQr7hph5;r7uc<#%7MYtWwxq!)|W zIeM7+6~9g)Hl++s-9?GD<2Kb)4Q&>w--5gIbtryWg)ON9nFq_%9#!~eVQ57TNEu&hvMhrujM@@e->Q&|T&whm}j1Tv1#SaX2eB}Or& z$x;Rpto+34bHnG1*{lzq6YE%myzyy!OB_Zgw#F@7GwuyGGH9Gz-gLw@%Ing$StLiE zTZ0hpTmddJRwxD^59Y!TZr2dJo!PksZ_1%xYy4l803DISOim&Fj^Zk1bsXlr7a^W0 z8A}(zJpxeQv%`B|Y5YJDluitQs+~=refBTv4f+Dt zAhfHfL87H{;eFGxLoDQbp3sxBk>iqu=Yp2O5%H<{hvzRVtuLg!larK;9x?@gSz;wfT#WsJ zc5ZxZVrkA=jBV*;0g>{NNOYo0y;4|-VY2-pyIl(7R%9>^RTu&J&G$0T2a}!6?pr3C zVSR5*xQL&=Egn)DT(jng+X|2_I%VL*{i8R2to!Z)N6eQv4#w!*4>S~!jD!khrmrkg zr>HC2C84opc$6dhCa=Evu`@B(3p!Jm5}w!j_XQuH6<;NPNd??AsKDSMql(8Ceb+wI zd|zVz;z}6-yAB%0kBt?)w37P2?3Lm9wV791oEWBage~3NOb*W*dMr^znB>unh;QFg z2_45ls$}}7C@>frJ{9>df2uC2iaOXy-ze_7Cnd4irozBy$pP{( zM_7BpYcEFOk@&-Ax`+x!>LP+nXps>#B(QBpQK91{;S%z zp`s*H{>R>OzmzO1LB=17dRQEs)f}8%=zQ$5lg9kk^yp3 zKS}PNn)wapYn*Y1(To;S{(iFo8>>v}ivPM$JOk$S85}H2tSs0GfwB`5zqyrtu-mYU zd3?@r$I_5oQpcKhl^$%-R$a(5M*kY-E>jfv->`f;lqvosvqO0H51d>lKmdDA3f< z`jAu8+q?244(U!btq}M`7aXv%er9`C0D5G7l`d~4;GgAZiJ&x%tQLcY2)rH4grnM= z_^+7@(x-6sw3%6!DgCm5-Ku5nf}jG01IL-`1I*e0$TFcn;g^@Tdp>@WGm&sQiSpJ5 z(t#!40R^buc88`)+#`GxccwVnb9 zUJ9g{**wqEz@DJ+ZpU1g+HC7jIsPHtm&j}{jajt%&&bmu%ryqFOo-HDTDG{SAAT)w z$g2G22VFz8`F2aaSVWml>zT+MM5-7}E?y*eom~N0cQ*B>)?hp2Q2)DzR2t3|MLIk{s&AsiTD5j literal 0 HcmV?d00001 diff --git a/content/pages/provider-new-choice/_index.en.md b/content/pages/provider-new-choice/_index.en.md index 85df56f..f2d38a3 100644 --- a/content/pages/provider-new-choice/_index.en.md +++ b/content/pages/provider-new-choice/_index.en.md @@ -4,7 +4,7 @@ author: Frederic title: Add a provider aliases: source-new-choice -weight: 17 +weight: 500 --- You access this screen by clicking on the ["My domain providers"]({{% relref "provider-list" %}}) link in the top menu, then by clicking on the "+ Add a new domain host" button. diff --git a/content/pages/provider-new-choice/_index.fr.md b/content/pages/provider-new-choice/_index.fr.md index 7a01108..fc59dc4 100644 --- a/content/pages/provider-new-choice/_index.fr.md +++ b/content/pages/provider-new-choice/_index.fr.md @@ -3,7 +3,7 @@ date: 2020-12-09T18:12:45+01:00 title: Ajouter un hébergeur aliases: source-new-choice -weight: 17 +weight: 500 --- Vous accédez à cet écran en cliquant sur le lien [« Les hébergeurs de mes domaines »]({{% relref "provider-list" %}}) dans le menu en haut, puis en cliquant sur le bouton « + Ajouter un nouvel hébergeur de domaines ». diff --git a/content/pages/provider-update.en.md b/content/pages/provider-update.en.md index c1ad54f..46698ff 100644 --- a/content/pages/provider-update.en.md +++ b/content/pages/provider-update.en.md @@ -5,7 +5,7 @@ title: Hosting provider settings aliases: source-new-state source-update -weight: 19 +weight: 600 --- You access this screen either: diff --git a/content/pages/provider-update.fr.md b/content/pages/provider-update.fr.md index 8ea360b..9cd216c 100644 --- a/content/pages/provider-update.fr.md +++ b/content/pages/provider-update.fr.md @@ -4,7 +4,7 @@ title: Paramètres de l'hébergeur aliases: source-new-state source-update -weight: 19 +weight: 600 --- Vous accédez à cet écran soit : diff --git a/content/pages/publish-changes.en.md b/content/pages/publish-changes.en.md deleted file mode 100644 index f99c5a2..0000000 --- a/content/pages/publish-changes.en.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -date: 2025-06-15T11:08:00+02:00 -title: "Publish modifications" -weight: 40 ---- - -When you make a change in happyDomain, it is not directly passed on to your host or server. - -Once you've made all the changes you wish to be propagated, click on the “Distribute my changes” button. - -A window will open showing exactly which concrete changes will be passed on to your host or server. - -If at this stage you don't want to apply all the changes, you can uncheck some of them. - -Don't forget to enter a message in the appropriate field: this message will be recorded in your log. -Later, when you need to see what changes you've made, it might be simpler to read “Changing host from Wordpress to Alwaysdata” rather than trying to interpret IP changes, ... diff --git a/content/pages/publish-changes.fr.md b/content/pages/publish-changes.fr.md deleted file mode 100644 index f42830f..0000000 --- a/content/pages/publish-changes.fr.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -date: 2025-06-15T11:08:00+02:00 -title: "Publier des modifications" -weight: 40 ---- - -Lorsque vous effectuez un changement dans happyDomain, celui-ci n'est pas directement répercuté auprès de votre hébergeur ou de votre serveur. - -Une fois que vous avez fait toutes les modifications que vous souhaitez voir propagées, cliquez sur le bouton « Diffuser mes changements ». - -Une fenêtre va s'ouvrir montrant précisément quelle modifications concrètes seront répercutées auprès de votre hébergeur ou de votre serveur. - -Si à ce stade vous ne voulez pas appliquer tous les changements, vous pouvez en décocher certains. - -N'oubliez pas d'indiquer un message dans le champs prévu à cet effet : ce message sera consigné dans votre journal. -Plus tard, lorsque vous aurez besoin de voir quelles ont été vos modifications, cela pourrait s'avérer plus simple de lire « Changement d'hébergeur de Wordpress vers Alwaysdata » plutôt que de chercher à interpréter les changements d'IP, ... diff --git a/content/pages/publish-changes/happydomain-modal-diff-view.webp b/content/pages/publish-changes/happydomain-modal-diff-view.webp new file mode 100644 index 0000000000000000000000000000000000000000..c8465c356a8c6ae7338649b2f9099203fd2399e6 GIT binary patch literal 39394 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%0DtmUYOwWU@mI8zik zYz>5d1p@+^e}m50_LC2Rs?|dY$$ut!=c``=c!zrmU0_H#(FU>HSPCXoj^W5-k7<`3 zOkU)!fg~9oz5`(tb-sm6o#^FC64XAwBcbh^{Jhu2KQ>K z5EkOcn@Wpv*}l>2HHcAs>M;uTP3uNS)3qfGeWSiYgfEd{uqgUHE{IlG`NoXfwg&6) zquQr(VeCr4t~$Jzv^&EN=cZmv-zB9>C`a5NU(8y8qOYy}>GL!lwb7$|UskX^L|ow%@voWlSIIyBQQc`v6RG-s#-pMb{1w2LS$or%^?zcYJ@{zc!g3Pn{7k^*9B;}`ajQ8HWnxCo(nx3#@U1dL^)be0O79M>?Ynvp^uzcW={tvaas0=TAsDKmjlsu%ghCy z+pN+i#Qo&D(UrzE1)3a?H@nwIgr`bMBbx7CM<^WU<>?B@Sdh_F0`AM>>^Jh~8K#^0 z;EzgaDx^Fx&7fI$>2xH`SN}Ata_TjcN3Ihv9eiCXy_pQFTml=t3o`?48(g zxoOJg5R=l&cSb~Jt{(Sg+o59E%sU;mEGZP_<-{kw;c6hzSn8XfH#i6(9^8HLP>Ir? zDd72w^v;q!D)eL6#a-E;&Z|wHcQi@^7Ls!h#p_C&PUoMR?NSpT$IuB|gYhgs^7rr1 z^wm?(XEH1B)DNTV&==a=h^Z2MnE9|s?JskAyh^;{+2|@v13?=ng`_S2ROl7#R;~db zlr9}Y@=nrLSD4U`Ww>{>%CT60?36-YdYuVk(dm)%gOo06azDZ0YhmQ49ddN*l3Z#= zO5GVvo>lMG?4@rW3O8GdeZ!bU%(7fc^bhCJ5>JNgIsSk?Y1LhxDGM1sm1MF$Q11ka zz6at+)M$!688>F?dB3J1@5?q#TyFT+3kU6Pq%BpFm{c*68!j}ptqt}@IX39d4(yw% zP=(Q|5L8dZbkH+MPDFsLzV@`ixU-O9^AMUeB&1Rg$TCJ<(w4IjPZ(~Bc@{z>u=C8p z{23D_M(aGY6zpvFI^LBj5XEt|Ss^oFU@cT*lG#tW0DCcCYvM5sUij5v0w5j~CZY!f zgHJ4%k2C_t{1Pd~vkypRor3K5j1HkR2D>v=v+e%RT;Dq*4GUb?aD<(cw_ZQH} zxz@d)1l&!bqQl@pD#VtX=L#SSTvU-qSsK5`+vydjRzX#d!uxCy$qH5NysE|Xu_VQ$ zU?Mm&#T|pjnF%D7w!-HH4@&udzwJxadR*g~rf=h=k&{9LC(2nFJXKjuMR;&D59I4g z+hRs(ZED=ccAKiPrrBUD7s znE|+6T6L*XjFZx*DovhRG6i3y(bU+cM^3^{I{z4n7Gd>9Wb_J$K3;sb+QduSbU*&8 z$UAKi{}s^Lcsa2PSa;#iEVLV5vBH2H=ypO}dIRXA$?ooL2|e<3x$FzNBak|cgbqof z(9O1ai?kC`T%jcBHL7ZRk$Dlj#E|$U5q2n`UPqypt@1Q(umh0BoQ56oy2{n!WyOEh z5acz+`+LX#AP0~paTcuG1fQQ&=vW-J=r~{yA^efCyYigaueurK<^s#3Q+HZw-{SD0 zF)4^D%Pc2LQ~%m>_2_yg!(Xpfn{(K4fBltWpwW*^REw6$si1zT<&}Bozv^K%z>>I~ z^^?aDvH4o@;toh;{}n^)?^6(vFYY2l+o)1w$OPKQDB#2Njn8&|07${WjFDHnE+Mf41UqqgczJQltL zOmC~rQ=oxwmd|tVdVq>9)|c(cdyMSQq{U50G!bxoQs#YZR})uTo^14h=iS(Uc|!yd_wajjkwxGjd|=&lX&?h7 zIfd@#r=hCuTs`UwE0Y`yumRB3D4_YLBjN|*&!R(Pl2K_91C!?f00HOQ{BJE>66`QU zMY9$FRMRdcGRIKaww3Yhf?40h4p4&hSwFa*5y7aLa+(RYDtr-Sz;U5Q16>KdmfB-I!k<_{j&uK6_XYr5=3zIO*j#qaL$?AP# s@ZA6e{L2c+j?kO~#yTGVB5cT;G9rKi2iUxm%Qg~>5OkR<$F9Ht0R3I1;s5{u literal 0 HcmV?d00001 diff --git a/content/pages/publish-changes/happydomain-publish-changes-button.webp b/content/pages/publish-changes/happydomain-publish-changes-button.webp new file mode 100644 index 0000000000000000000000000000000000000000..7ac54fc25687805c9ec323c4cbd0d818f2af57c8 GIT binary patch literal 1854 zcmV-E2f_GKNk&FC2LJ$9MM6+kP&gne2LJ%DGXR|dDhmR606vjOo=c^qBO#%5YLKuJ z31e>Iap3p&^P5H|Z0DE{HgEF2us_FdjQ*zk0DilAb9*KKk;#?aK0kr}cnHPi1mcyk ze4q8FkXkMf{Q)VESimhy829iV3jZn?z%5G{_vi^sg2n-P|iamsjS`yt90092}^6KrIak(6T1}9|JrP=;w z{~5o=Z}FS+KR@nWf2Tab5C9yz%PuT#7|r?Hp6v<1>0kf>zK!2;xc^wgG_7Cll2?e^qo$zUk)PY5 zWXf(W0|x(tlv6?7)#qxy($b`SbA*+h5(A4#m{vA~kX$y|}{WWV3q0*5@<#?2O3Hi{&@k z&Uh*;qhr|BG=@In18qw)T>q%6HPJr;wH!#Xioi2pVEAKJz`?KY@LhZCwm#b(X+pH~ zma?^XRxN-N7^%WwWIP&(y2m zVW0+D7KQt`h<)hYjiU`%A@z(klazxx(hk%30kEVSd+NdoY~c?zQo6f;3Hn4odl!vk zG3UN&!0FLNwnpZi9+*u)p}1`(3Oq9DBc2lEf5=wc8okaX6ClSMqO05sTo7q{qG?0n zn9S>d#GOt^9ZGHAkM+C5FS-qPmi*dg`}J;H=?!;DtYW{M;#ujQxHee6`TxP^lbQWu z+;7&ue<6I{$A!SU?7F(y$UtI;B=CJ}O}=PhEk+0lPz_&Kt#~PR|3y#1%}i1<1Hp6@ z0uzM0m;9De9L$9f`$L`R+nghte^^}pr;&0rM}Oa_EqnTS$uX?`+@HMWcy=;Nr!RD&YWet|ZY=4K#98^PG^niPiA;o3 z$SsE6GEZf*QE1C#(rcZafKZmXwbtYsVPv7&am{~~nUh$GDLE}Yf67(e+t#|M?PVM` z>9<)MeYZ!9rj@Ac5jyvTry9=WHtHcGUM)Vp9E)>)P_C?v|EP3=!bdQp?kzX+&(d2J z@Xi16CNfHBQu{Pj%~-W_Xej~sU499${9Uz@GM0g~o@X+n@N4)QI>uV%;5bo#@FM<^yQ=WR4usYx@EG!gF6t*2xLUW`;$P s<-RYcz#t|*ht=6Klx1t-enGjLb-WLI&{N267ai!>000000000006~JB(*OVf literal 0 HcmV?d00001 diff --git a/content/pages/publish-changes/index.en.md b/content/pages/publish-changes/index.en.md new file mode 100644 index 0000000..9575dad --- /dev/null +++ b/content/pages/publish-changes/index.en.md @@ -0,0 +1,68 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: "Publishing changes" +author: nemunaire +weight: 1300 +description: "Review the diff of your pending changes, choose exactly which ones to apply, and publish them to your provider" +--- + +When you make a change in happyDomain, it is not sent to your hosting provider straight away. Your edits accumulate in a working copy, and nothing reaches your provider until you decide to publish. Before that happens, happyDomain lets you review the exact list of changes that your edits produce, fine-tune what will be applied, and record a message for your history. + +## Opening the diff + +In the zone editor, the **Publish my changes** button shows a small counter with the number of pending changes detected for your zone. Click it to open the review window. + +![The Publish my changes button with its pending-changes counter](happydomain-publish-changes-button.webp) + +happyDomain computes the difference between the zone as it currently lives at your provider and the working copy you have been editing. If everything is already in sync, you will simply see a message telling you there is nothing to apply. + +## Understanding the diff + +Each line of the diff describes one concrete correction, written in a human-readable form and colour-coded by its nature: + +| Colour | Meaning | +|--------|---------| +| **Green** | An addition (a record being created) | +| **Red** | A deletion (a record being removed) | +| **Yellow** | A modification (an existing record being changed) | +| **Blue** | Another kind of change (for example a reordering or provider-specific operation) | + +At the bottom of the window, a **summary** recaps how many additions, deletions and modifications are currently selected. + +![The diff window listing colour-coded changes with their summary](happydomain-modal-diff-view.webp) + +## Selecting which changes to apply + +Every line in the diff has a checkbox. By default the changes are listed for your review, and you decide which ones to keep: + +- **Uncheck** any change you do not want to apply right now. It stays in your working copy and will reappear next time. +- Keep checked only the changes you are confident about. + +This is useful when you have made several unrelated edits but only want to publish some of them, or when you want to roll out a sensitive change separately. + +The summary and the apply button update live to reflect your current selection. If nothing is selected, the apply button stays disabled. + +## Writing a commit message + +Before applying, enter a message in the **What's changed?** field. This message is recorded in your history alongside the changes. + +{{% notice style="tip" title="Describe the intent, not the IPs" icon="lightbulb" %}} +The diff describes the technical operations, but your message is what makes your history readable later on. When you need to look back at what you did, "Move mail to a new provider" is far easier to understand than re-deriving meaning from a list of IP changes. +{{% /notice %}} + +## A confirmation step for safety + +Depending on your [account preferences]({{% relref "settings" %}}), happyDomain may show an extra confirmation screen after you choose to apply: + +- It asks your provider to **prepare** the corrections, then shows you exactly how many operations the provider will actually run for your selection. +- If that number differs from what you selected (for instance because a change was already applied, or the provider expands one change into several), a warning is displayed so you can double-check before confirming. + +You can configure whether this confirmation appears always, never, or only when the prepared corrections do not match your selection. + + + +## After publishing + +Once you confirm, happyDomain sends the selected changes to your provider and records the operation, with your message, in the domain's log. From there you can review past deployments at any time, and roll back to an earlier state if needed; see {{% relref "domain-history" %}}. + +To inspect the resulting zone itself rather than the diff, or to keep a copy as a standard zone file, see {{% relref "import-export" %}}. diff --git a/content/pages/publish-changes/index.fr.md b/content/pages/publish-changes/index.fr.md new file mode 100644 index 0000000..0d06459 --- /dev/null +++ b/content/pages/publish-changes/index.fr.md @@ -0,0 +1,68 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: "Publier des modifications" +author: nemunaire +weight: 1300 +description: "Examiner le différentiel de vos changements en attente, choisir précisément ceux à appliquer, et les publier chez votre hébergeur" +--- + +Lorsque vous effectuez un changement dans happyDomain, celui-ci n'est pas immédiatement répercuté auprès de votre hébergeur. Vos modifications s'accumulent dans une copie de travail, et rien n'est transmis à votre hébergeur tant que vous n'avez pas décidé de publier. Avant cela, happyDomain vous permet d'examiner la liste exacte des changements produits par vos modifications, d'ajuster finement ce qui sera appliqué, et de consigner un message dans votre historique. + +## Ouvrir le différentiel + +Dans l'éditeur de zone, le bouton « Diffuser mes changements » affiche un petit compteur indiquant le nombre de changements en attente détectés pour votre zone. Cliquez dessus pour ouvrir la fenêtre de relecture. + +![Le bouton « Diffuser mes changements » avec son compteur de changements en attente](happydomain-publish-changes-button.webp) + +happyDomain calcule la différence entre la zone telle qu'elle existe actuellement chez votre hébergeur et la copie de travail que vous avez éditée. Si tout est déjà synchronisé, un message vous indiquera simplement qu'il n'y a rien à appliquer. + +## Comprendre le différentiel + +Chaque ligne du différentiel décrit une correction concrète, formulée de façon lisible et colorée selon sa nature : + +| Couleur | Signification | +|---------|---------------| +| **Vert** | Un ajout (un enregistrement créé) | +| **Rouge** | Une suppression (un enregistrement retiré) | +| **Jaune** | Une modification (un enregistrement existant modifié) | +| **Bleu** | Un autre type de changement (par exemple un réordonnancement ou une opération propre à l'hébergeur) | + +En bas de la fenêtre, un **résumé** récapitule le nombre d'ajouts, de suppressions et de modifications actuellement sélectionnés. + +![La fenêtre du différentiel listant les changements colorés avec leur résumé](happydomain-modal-diff-view.webp) + +## Choisir les changements à appliquer + +Chaque ligne du différentiel comporte une case à cocher. Par défaut, les changements sont listés pour votre relecture, et c'est vous qui décidez lesquels conserver : + +- **Décochez** tout changement que vous ne souhaitez pas appliquer maintenant. Il reste dans votre copie de travail et réapparaîtra la prochaine fois. +- Ne laissez cochés que les changements dont vous êtes sûr. + +C'est utile lorsque vous avez fait plusieurs modifications sans rapport entre elles mais ne voulez en publier qu'une partie, ou lorsque vous souhaitez déployer un changement sensible séparément. + +Le résumé et le bouton d'application se mettent à jour en direct selon votre sélection. Si rien n'est sélectionné, le bouton d'application reste désactivé. + +## Rédiger un message de validation + +Avant d'appliquer, saisissez un message dans le champ « Qu'est-ce qui a changé ? ». Ce message est consigné dans votre historique aux côtés des changements. + +{{% notice style="tip" title="Décrivez l'intention, pas les adresses IP" icon="lightbulb" %}} +Le différentiel décrit les opérations techniques, mais c'est votre message qui rendra votre historique lisible plus tard. Lorsque vous aurez besoin de revoir ce que vous avez fait, « Déplacement du courrier vers un nouvel hébergeur » est bien plus facile à comprendre que de reconstituer le sens à partir d'une liste de changements d'IP. +{{% /notice %}} + +## Une étape de confirmation par sécurité + +Selon les [préférences de votre compte]({{% relref "settings" %}}), happyDomain peut afficher un écran de confirmation supplémentaire après que vous avez choisi d'appliquer : + +- Il demande à votre hébergeur de **préparer** les corrections, puis vous montre exactement combien d'opérations l'hébergeur exécutera réellement pour votre sélection. +- Si ce nombre diffère de ce que vous avez sélectionné (par exemple parce qu'un changement était déjà appliqué, ou parce que l'hébergeur décompose un changement en plusieurs), un avertissement s'affiche pour que vous puissiez vérifier avant de confirmer. + +Vous pouvez configurer si cette confirmation apparaît toujours, jamais, ou uniquement lorsque les corrections préparées ne correspondent pas à votre sélection. + + + +## Après la publication + +Une fois que vous confirmez, happyDomain envoie les changements sélectionnés à votre hébergeur et consigne l'opération, avec votre message, dans le journal du domaine. Vous pouvez ensuite consulter les déploiements passés à tout moment, et [revenir à un état antérieur]({{% relref "domain-history" %}}) si besoin. + +Pour inspecter la zone résultante elle-même plutôt que le différentiel, ou pour en conserver une copie sous forme de fichier de zone standard, consultez la page [Importer et exporter]({{% relref "import-export" %}}). diff --git a/content/pages/quotas.en.md b/content/pages/quotas.en.md new file mode 100644 index 0000000..55ec957 --- /dev/null +++ b/content/pages/quotas.en.md @@ -0,0 +1,40 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Quotas & limits +author: nemunaire +weight: 2400 +description: "Understand the limits an administrator may set on your account, and what happens when one is reached" +--- + +A happyDomain instance can apply **quotas** to each account. Quotas are limits set by the person running the instance (the administrator), not by you. They exist mainly to keep a shared instance fair and to avoid overloading the servers, and they apply above all to the [monitoring & checks]({{% relref "checks" %}}) system. + +{{% notice style="info" title="Quotas are managed by the administrator" icon="circle-info" %}} +Quotas are **read-only** for regular users. There is no screen in your account where you can view or change your own quota: they are configured server-side and adjusted only through the administration interface. If a limit is getting in your way, the right course of action is to contact the administrator of your instance. +{{% /notice %}} + + +## What quotas can cover + +On a default happyDomain instance, quotas relate to how the monitoring scheduler works for your account. An administrator may set, per account or instance-wide: + +- **Maximum checks per day**: a cap on how many checker executions are run automatically for you each day. Once the cap is reached, further scheduled checks wait until the next day. +- **Result retention**: how long the results of your checks are kept before old executions are automatically cleaned up. +- **Inactivity pause**: after a period without logging in, the scheduler may stop running your automatic checks until you sign in again. This keeps the instance from spending resources on abandoned accounts. +- **Scheduling pause**: an administrator can entirely pause automatic scheduling for an account. + +Each of these can be left at the instance default, set to a specific value for your account, or explicitly made unlimited, at the administrator's discretion. + +{{% notice style="tip" title="No fixed limit on the number of domains" icon="lightbulb" %}} +On a standard happyDomain instance, the quota system does not impose a built-in cap on the number of domains you can manage. If a particular instance does restrict this, it is a policy of that instance; ask its administrator for the details that apply to you. +{{% /notice %}} + + +## What you see when a limit is reached + +Quotas mostly act in the background. You will not usually see a quota screen; instead you notice their effects: + +- **Automatic checks stop running**: if your daily check cap is reached, or your account is in an inactivity or scheduling pause, scheduled checks simply do not run until the condition clears. You can still trigger a check **manually** from the [checks]({{% relref "checks#running-a-check-manually" %}}) interface. +- **Older results disappear**: with a retention limit, executions older than the allowed age are removed during routine cleanup, so the history only goes back so far. +- **An action is refused**: where an operation would exceed a limit, the interface shows an error message explaining what went wrong. + +If you are unsure whether a behaviour is caused by a quota, or you need a limit raised, contact the administrator of your instance. diff --git a/content/pages/quotas.fr.md b/content/pages/quotas.fr.md new file mode 100644 index 0000000..76c7500 --- /dev/null +++ b/content/pages/quotas.fr.md @@ -0,0 +1,39 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Quotas et limites +weight: 2400 +description: "Comprendre les limites qu'un administrateur peut appliquer à votre compte, et ce qu'il se passe lorsque l'une d'elles est atteinte" +--- + +Une instance happyDomain peut appliquer des **quotas** à chaque compte. Les quotas sont des limites définies par la personne qui administre l'instance (l'administrateur), et non par vous. Ils servent principalement à préserver l'équité sur une instance partagée et à éviter de surcharger les serveurs ; ils concernent avant tout le système de [supervision et contrôles]({{% relref "checks" %}}). + +{{% notice style="info" title="Les quotas sont gérés par l'administrateur" icon="circle-info" %}} +Les quotas sont en **lecture seule** pour les utilisateurs ordinaires. Il n'existe aucun écran dans votre compte permettant de consulter ou de modifier votre propre quota : ils sont configurés côté serveur et ne sont ajustés qu'au travers de l'interface d'administration. Si une limite vous gêne, la bonne démarche consiste à contacter l'administrateur de votre instance. +{{% /notice %}} + + +## Ce que les quotas peuvent couvrir + +Sur une instance happyDomain par défaut, les quotas portent sur le fonctionnement du planificateur de supervision pour votre compte. Un administrateur peut définir, par compte ou pour l'ensemble de l'instance : + +- **Nombre maximal de contrôles par jour** : un plafond sur le nombre d'exécutions de contrôles lancées automatiquement pour vous chaque jour. Une fois ce plafond atteint, les contrôles planifiés suivants attendent le lendemain. +- **Conservation des résultats** : la durée pendant laquelle les résultats de vos contrôles sont conservés avant que les anciennes exécutions ne soient automatiquement nettoyées. +- **Pause pour inactivité** : après une période sans connexion, le planificateur peut cesser d'exécuter vos contrôles automatiques jusqu'à votre prochaine connexion. Cela évite que l'instance ne dépense des ressources pour des comptes abandonnés. +- **Pause de planification** : un administrateur peut entièrement suspendre la planification automatique d'un compte. + +Chacun de ces réglages peut rester à la valeur par défaut de l'instance, être fixé à une valeur particulière pour votre compte, ou être explicitement rendu illimité, à la discrétion de l'administrateur. + +{{% notice style="tip" title="Pas de limite fixe sur le nombre de domaines" icon="lightbulb" %}} +Sur une instance happyDomain standard, le système de quotas n'impose pas de plafond intégré sur le nombre de domaines que vous pouvez gérer. Si une instance particulière restreint ce point, il s'agit d'une politique propre à cette instance ; demandez à son administrateur les détails qui vous concernent. +{{% /notice %}} + + +## Ce que vous voyez lorsqu'une limite est atteinte + +Les quotas agissent surtout en arrière-plan. Vous ne verrez généralement pas d'écran de quota ; vous en constatez plutôt les effets : + +- **Les contrôles automatiques cessent de s'exécuter** : si votre plafond quotidien de contrôles est atteint, ou si votre compte est en pause pour inactivité ou de planification, les contrôles planifiés ne s'exécutent simplement plus tant que la condition persiste. Vous pouvez toujours déclencher un contrôle **manuellement** depuis l'interface des [contrôles]({{% relref "checks#lancer-une-vérification-manuellement" %}}). +- **Les anciens résultats disparaissent** : avec une limite de conservation, les exécutions plus anciennes que la durée autorisée sont supprimées lors du nettoyage régulier, si bien que l'historique ne remonte que jusqu'à un certain point. +- **Une action est refusée** : lorsqu'une opération dépasserait une limite, l'interface affiche un message d'erreur expliquant ce qui n'a pas fonctionné. + +Si vous ne savez pas si un comportement est dû à un quota, ou si vous avez besoin qu'une limite soit relevée, contactez l'administrateur de votre instance. diff --git a/content/pages/services/happydomain-abstract-zone-records.webp b/content/pages/services/happydomain-abstract-zone-records.webp new file mode 100644 index 0000000000000000000000000000000000000000..bdb5aa247af2b100d3fd9db929d2be63660685c2 GIT binary patch literal 76770 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%0Dyf?6(UcC?wNh71azBXWQGG>Fu<5c^SlY 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 literal 0 HcmV?d00001 diff --git a/content/pages/services/happydomain-modal-service-selector.webp b/content/pages/services/happydomain-modal-service-selector.webp new file mode 100644 index 0000000000000000000000000000000000000000..c1a6164afaa3da142d1d839411e0ac57210e8353 GIT binary patch literal 43022 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 biL}de + +Fill in the fields, then confirm to add the service to the subdomain. + +### 4. Review the generated records + +Once the form is validated, happyDomain converts your input into the corresponding DNS records and adds them to the staged zone. You can review them in the [abstract view]({{% relref "domain-abstract" %}}) before publishing your changes to your provider. + +## Trying services without an account + +happyDomain also offers a public **record generator** where you can build and preview the DNS records produced by a service without signing in. Pick a service type, enter a domain name, fill in the form, and the generated zone-file entries are displayed instantly. + +This is a handy way to discover how a given service maps to actual DNS records, or to grab a record you will paste elsewhere. + + diff --git a/content/pages/services/index.fr.md b/content/pages/services/index.fr.md new file mode 100644 index 0000000..fee647e --- /dev/null +++ b/content/pages/services/index.fr.md @@ -0,0 +1,85 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Services +weight: 1200 +description: "Comprendre comment happyDomain transforme les enregistrements DNS bruts en services de haut niveau, et comment en ajouter un à un sous-domaine" +--- + +happyDomain ne vous demande pas de raisonner en termes d'enregistrements DNS individuels. À la place, il regroupe les enregistrements qui vont ensemble au sein d'un unique **service** porteur de sens : une messagerie, un site web, une délégation, une politique CAA, etc. C'est le fondement de la [vue abstraite]({{% relref "domain-abstract" %}}) de votre zone. + +## Qu'est-ce qu'un service ? + +Un service est un objet de plus haut niveau qui masque la complexité d'un ou de plusieurs enregistrements DNS derrière un formulaire clair, orienté usage. + +Par exemple, au lieu d'éditer séparément un enregistrement `MX`, quelques enregistrements `A`/`AAAA` et un enregistrement `SPF` de type `TXT`, vous remplissez un seul service **messagerie**. happyDomain se charge de générer les bons enregistrements, avec les bons noms et la bonne syntaxe. + +Chaque service appartient à une famille : + +- **Services** (abstraits) : les objets recommandés, pensés pour les humains (messagerie, site web, CAA, délégation, etc.). Ils se traduisent automatiquement en un ou plusieurs enregistrements. +- **Fournisseurs** : des services liés à un acteur tiers précis qui publie son propre assistant (par exemple un service hébergé nécessitant un ensemble d'enregistrements prédéfini). +- **Ressources DNS brutes** : une solution de repli qui vous permet d'ajouter directement un enregistrement unique (`A`, `TXT`, `SRV`, etc.), lorsqu'aucun service abstrait ne correspond à votre besoin. + +{{% notice style="info" title="Pourquoi des services plutôt que des enregistrements ?" icon="lightbulb" %}} +Travailler avec des services vous évite d'avoir à mémoriser les types d'enregistrements exacts, leur ordre ou leur syntaxe. happyDomain valide votre saisie et génère du DNS correct à votre place, ce qui réduit fortement le risque d'erreur de configuration. +{{% /notice %}} + +## La vue par services d'un sous-domaine + +Lorsque vous ouvrez un domaine, chaque sous-domaine est présenté sous la forme d'une liste des services qui lui sont rattachés. Un sous-domaine peut accueillir plusieurs services à la fois : par exemple, la racine (`@`) d'un domaine porte souvent à la fois un service de messagerie, un service de site web et une politique CAA. + +![Un sous-domaine affichant plusieurs services dans l'éditeur de zone](happydomain-abstract-zone-records.webp) + +Depuis cette vue, vous pouvez : + +- **Ajouter** un nouveau service au sous-domaine ; +- **Modifier** un service existant pour en changer les valeurs ; +- **Supprimer** un service dont vous n'avez plus besoin. + +Toutes ces modifications sont préparées localement et ne sont appliquées chez votre hébergeur qu'au moment de leur publication. Consultez la [vue abstraite]({{% relref "domain-abstract" %}}) pour comprendre le fonctionnement de l'édition et de la propagation. + +## Ajouter un service à un sous-domaine + +Pour rattacher un nouveau service, placez-vous sur le sous-domaine où vous le souhaitez (voir [Sous-domaines]({{% relref "subdomains" %}}) pour naviguer dans la zone), puis suivez ces étapes. + +### 1. Ouvrir le sélecteur de services + +Cliquez sur l'action **Ajouter un service** du sous-domaine. Un sélecteur s'ouvre, listant tous les types de services que vous pouvez ajouter. + +![La fenêtre de sélection des services](happydomain-modal-service-selector.webp) + +Le sélecteur est organisé en onglets pour vous aider à restreindre la liste : + +- **Tous** : tous les types de services disponibles. +- **Services** : les services abstraits de haut niveau (recommandé). +- **Fournisseurs** : les services spécifiques à un fournisseur. +- **Ressources DNS brutes** : un type d'enregistrement unique, lorsque vous avez besoin d'un contrôle total. + +Vous pouvez également saisir un terme dans le champ de recherche, en haut, pour filtrer la liste par nom. Appuyer sur Entrée sélectionne le premier résultat disponible. + +{{% notice style="tip" title="Entrées grisées" icon="circle-info" %}} +Certains types de services peuvent apparaître désactivés. Cela se produit lorsque le service ne peut pas être ajouté dans le contexte actuel : par exemple parce que votre hébergeur DNS ne prend pas en charge le type d'enregistrement sous-jacent, ou parce que ce service existe déjà sur ce sous-domaine et qu'une seule instance est autorisée. Survolez une entrée désactivée pour en connaître la raison. +{{% /notice %}} + +### 2. Choisir le type de service + +Sélectionnez le service correspondant à ce que vous souhaitez publier. happyDomain connaît les types d'enregistrements pris en charge par votre hébergeur : seuls les choix pertinents vous sont donc proposés. Pour savoir ce qu'un hébergeur donné sait gérer, consultez la page [Fonctionnalités des fournisseurs]({{% relref "provider-features" %}}). + +### 3. Remplir le formulaire du service + +happyDomain présente alors un formulaire adapté au service choisi. Chaque champ correspond à une information porteuse de sens (un hôte cible, une priorité, une clé publique, une valeur de politique, etc.) plutôt qu'à de la syntaxe d'enregistrement brute. + + + +Renseignez les champs, puis validez pour ajouter le service au sous-domaine. + +### 4. Vérifier les enregistrements générés + +Une fois le formulaire validé, happyDomain convertit votre saisie en enregistrements DNS correspondants et les ajoute à la zone en préparation. Vous pouvez les vérifier dans la [vue abstraite]({{% relref "domain-abstract" %}}) avant de publier vos modifications chez votre hébergeur. + +## Essayer les services sans compte + +happyDomain propose également un **générateur d'enregistrements** public qui vous permet de construire et de prévisualiser les enregistrements DNS produits par un service sans être connecté. Choisissez un type de service, saisissez un nom de domaine, remplissez le formulaire : les entrées de fichier de zone générées s'affichent instantanément. + +C'est un moyen pratique de découvrir comment un service donné se traduit en véritables enregistrements DNS, ou de récupérer un enregistrement à coller ailleurs. + + diff --git a/content/pages/settings.en.md b/content/pages/settings.en.md new file mode 100644 index 0000000..d5e1a70 --- /dev/null +++ b/content/pages/settings.en.md @@ -0,0 +1,76 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Your account and settings +author: nemunaire +weight: 2000 +description: "Manage your happyDomain account and tailor the interface: language, field hints, confirmation, zone view, password and account deletion" +aliases: + me +--- + +happyDomain lets you manage your account and tailor how the interface behaves. Your preferences are saved with your account, so you find them again on every device you connect from. + +You reach this page from the **My Account** link in the top menu. Each option is described below. + + + +## Language + +Choose the language used throughout the interface. The list contains every language currently available in your happyDomain instance. Changing it takes effect as soon as you save. + +## Field hints + +Form fields often come with a short help text. This setting controls how that help is displayed: + +- **Hide** -- no help text is shown. +- **Tooltip near field** -- the help appears as a tooltip when you hover the field. +- **Under field when focused** -- the help appears below the field, but only while you are editing it. +- **Under field, always** -- the help is permanently displayed below each field. + +Pick the level of guidance that suits your familiarity with DNS. + +## Confirmation before applying + +When you publish changes to your DNS provider, happyDomain can show a confirmation step beforehand. This setting decides when: + +- **Ask on unexpected differences** -- the confirmation appears only when the changes differ from what was expected. +- **Always ask** -- a confirmation is always shown before applying. +- **Never ask, overwrite on publish** -- changes are applied directly, without a confirmation step. + +See [Publishing changes]({{% relref "publish-changes" %}}) for the full publication workflow. + +## Zone view layout + +Choose how a domain's zone is displayed: + +- **Grid view (easiest)** -- the most visual and approachable layout. +- **List view (fastest)** -- a compact list, quicker to scan. +- **List with records (advanced)** -- a list that also exposes the underlying DNS records, for advanced users. + +## Show DNS record types + +This switch shows the resource record type (A, MX, CNAME, etc.) associated with each service. It is meant for users who are already familiar with DNS and want to see the technical record types behind the friendly service names. + +## Newsletter + +The option to receive news about future improvements is proposed when you [create your account]({{% relref "signup" %}}). To change your subscription afterwards, refer to the unsubscribe link included in the messages you receive. + +## Saving + +When your preferences are set, click **Save settings**. A confirmation message appears and the new settings take effect immediately, including a language change if you made one. + +## Change password + +A dedicated part of the page lets you change the password of your account. + +## Change account email address + +It is currently not possible to change the email address of your account. We invite you to contact us if you wish to change it. + +## Delete your account + +The last part of the page allows you to delete your happyDomain account. + +Once the deletion is validated, your account will no longer be accessible and all data belonging to you will be deleted shortly after, during a regular database cleanup. + +From the moment you delete your account, your domains will continue to respond according to the last update you made on happyDomain. The deletion will not affect the distributed data. diff --git a/content/pages/settings.fr.md b/content/pages/settings.fr.md new file mode 100644 index 0000000..08b0c91 --- /dev/null +++ b/content/pages/settings.fr.md @@ -0,0 +1,75 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Votre compte et vos réglages +weight: 2000 +description: "Gérez votre compte happyDomain et personnalisez l'interface : langue, aide des champs, confirmation, affichage des zones, mot de passe et suppression du compte" +aliases: + me +--- + +happyDomain vous permet de gérer votre compte et d'ajuster le comportement de l'interface. Vos préférences sont enregistrées avec votre compte ; vous les retrouvez ainsi sur chaque appareil depuis lequel vous vous connectez. + +Vous accédez à cette page en cliquant sur le lien « Mon compte » dans le menu en haut. Chaque option est décrite ci-dessous. + + + +## Langue + +Choisissez la langue utilisée dans toute l'interface. La liste contient toutes les langues actuellement disponibles sur votre instance happyDomain. Le changement prend effet dès l'enregistrement. + +## Aide des champs + +Les champs des formulaires sont souvent accompagnés d'un court texte d'aide. Ce réglage détermine la façon dont cette aide s'affiche : + +- **Masquer** : aucun texte d'aide n'est affiché. +- **Infobulle près du champ** : l'aide apparaît sous forme d'infobulle au survol du champ. +- **Sous le champ lors de la saisie** : l'aide apparaît sous le champ, mais uniquement pendant que vous le modifiez. +- **Sous le champ, en permanence** : l'aide reste affichée sous chaque champ. + +Choisissez le niveau d'accompagnement adapté à votre aisance avec le DNS. + +## Confirmation avant application + +Lorsque vous publiez des modifications chez votre fournisseur DNS, happyDomain peut afficher une étape de confirmation au préalable. Ce réglage décide du moment : + +- **Demander en cas de différences inattendues** : la confirmation n'apparaît que lorsque les modifications diffèrent de ce qui était attendu. +- **Toujours demander** : une confirmation est systématiquement affichée avant l'application. +- **Ne jamais demander, écraser à la publication** : les modifications sont appliquées directement, sans étape de confirmation. + +Consultez [Publier ses modifications]({{% relref "publish-changes" %}}) pour le déroulé complet de la publication. + +## Affichage des zones + +Choisissez la façon dont la zone d'un domaine est présentée : + +- **Vue en grille (le plus simple)** : la présentation la plus visuelle et la plus accessible. +- **Vue en liste (le plus rapide)** : une liste compacte, plus rapide à parcourir. +- **Liste avec enregistrements (avancé)** : une liste qui expose également les enregistrements DNS sous-jacents, pour les utilisateurs avancés. + +## Afficher les types d'enregistrements DNS + +Cet interrupteur affiche le type d'enregistrement (A, MX, CNAME, etc.) associé à chaque service. Il s'adresse aux personnes déjà familières du DNS qui souhaitent voir les types techniques derrière les noms de services simplifiés. + +## Lettre d'information + +L'option permettant de recevoir les nouvelles des prochaines améliorations vous est proposée lors de la [création de votre compte]({{% relref "signup" %}}). Pour modifier ensuite votre abonnement, référez-vous au lien de désinscription présent dans les messages que vous recevez. + +## Enregistrement + +Une fois vos préférences définies, cliquez sur « Enregistrer les réglages ». Un message de confirmation apparaît et les nouveaux réglages prennent effet immédiatement, y compris un changement de langue si vous en avez effectué un. + +## Changer de mot de passe + +Une partie dédiée de la page vous permet de changer le mot de passe de votre compte. + +## Changer l'adresse électronique de compte + +Il n'est pour l'instant pas possible de changer l'adresse électronique de votre compte. Nous vous invitons à nous contacter si vous souhaitez la changer. + +## Supprimer son compte + +La dernière partie de la page vous permet de supprimer votre compte happyDomain. + +Une fois la suppression validée, votre compte ne sera plus accessible et l'ensemble des données vous appartenant sera supprimé peu de temps après, lors d'un nettoyage régulier de la base de données. + +À partir du moment où vous supprimez votre compte, vos domaines continueront de répondre selon la dernière mise à jour que vous avez effectué sur happyDomain. La suppression n'affectera pas les données distribuées. diff --git a/content/pages/signup.en.md b/content/pages/signup.en.md new file mode 100644 index 0000000..4989b52 --- /dev/null +++ b/content/pages/signup.en.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Create an account +author: nemunaire +weight: 100 +description: "Sign up for a happyDomain account and validate your email address" +--- + +Before you can manage your domains, you need a happyDomain account. Creating one takes less than two minutes and only requires an email address and a password. + +## Filling in the sign-up form + +From the home page, follow the link to register, then fill in the form: + + + +- **Email address** -- this address identifies you on the platform and is used to contact you for security-related operations (password recovery, important notices). It must contain a valid `@`. +- **Password** -- choose a strong password (see below). +- **Password confirmation** -- retype the exact same password to avoid typos. +- **Keep me informed of future big improvements** -- an optional checkbox to subscribe to the project newsletter. Leave it unchecked if you do not wish to receive these updates. + +The interface language you are currently using is automatically recorded with your account, so the emails you receive will be in that language. + +{{% notice style="tip" title="Password requirements" icon="key" %}} +A password is accepted only if it contains at least 8 characters, including at least one uppercase letter, one lowercase letter and one digit. It must also contain a special character, or be at least 11 characters long. +{{% /notice %}} + +Some servers display an anti-bot challenge (captcha) below the form. If so, complete it before submitting. + +When everything is filled in correctly, click **Sign up!**. + +## Validating your email address + +On most servers, an email is sent to the address you provided right after registration. Open your mailbox and click the validation link it contains to activate your account. + + + +If you did not receive the message (check your spam folder first), you can request a new one from the email validation page by entering your address again and clicking **Send again**. + +{{% notice style="info" title="Servers without email" icon="circle-info" %}} +Some happyDomain instances run without an email service. On these servers, no validation message is sent: your account is usable immediately and you can [log in]({{% relref "login" %}}) right away. +{{% /notice %}} + +Once your address is validated, you are redirected to the [login page]({{% relref "login" %}}) where you can sign in with your new credentials. diff --git a/content/pages/signup.fr.md b/content/pages/signup.fr.md new file mode 100644 index 0000000..7cbc804 --- /dev/null +++ b/content/pages/signup.fr.md @@ -0,0 +1,43 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Créer un compte +weight: 100 +description: "Inscrivez-vous sur happyDomain et validez votre adresse e-mail" +--- + +Avant de pouvoir gérer vos domaines, il vous faut un compte happyDomain. Sa création prend moins de deux minutes et ne demande qu'une adresse e-mail et un mot de passe. + +## Remplir le formulaire d'inscription + +Depuis la page d'accueil, suivez le lien d'inscription, puis remplissez le formulaire : + + + +- **Adresse e-mail** : cette adresse vous identifie sur la plateforme et sert à vous contacter pour les opérations liées à la sécurité (récupération de mot de passe, informations importantes). Elle doit contenir un `@` valide. +- **Mot de passe** : choisissez un mot de passe robuste (voir ci-dessous). +- **Confirmation du mot de passe** : ressaisissez exactement le même mot de passe afin d'éviter toute faute de frappe. +- **Tenez-moi informé des prochaines grandes améliorations** : une case à cocher facultative pour vous abonner à la lettre d'information du projet. Laissez-la décochée si vous ne souhaitez pas recevoir ces nouvelles. + +La langue de l'interface que vous utilisez est automatiquement enregistrée avec votre compte ; les e-mails que vous recevrez seront ainsi dans cette langue. + +{{% notice style="tip" title="Exigences du mot de passe" icon="key" %}} +Un mot de passe n'est accepté que s'il contient au moins 8 caractères, dont au moins une majuscule, une minuscule et un chiffre. Il doit en outre contenir un caractère spécial, ou bien faire au moins 11 caractères. +{{% /notice %}} + +Certains serveurs affichent une vérification anti-robot (captcha) sous le formulaire. Le cas échéant, complétez-la avant de valider. + +Lorsque tout est correctement renseigné, cliquez sur « Inscrivez-vous ! ». + +## Valider votre adresse e-mail + +Sur la plupart des serveurs, un e-mail est envoyé à l'adresse indiquée juste après l'inscription. Ouvrez votre messagerie et cliquez sur le lien de validation qu'il contient pour activer votre compte. + + + +Si vous n'avez pas reçu le message (vérifiez d'abord votre dossier de courrier indésirable), vous pouvez en demander un nouveau depuis la page de validation : saisissez à nouveau votre adresse, puis cliquez sur « Renvoyer ». + +{{% notice style="info" title="Serveurs sans e-mail" icon="circle-info" %}} +Certaines instances happyDomain fonctionnent sans service de messagerie. Sur ces serveurs, aucun message de validation n'est envoyé : votre compte est utilisable immédiatement et vous pouvez [vous connecter]({{% relref "login" %}}) sans attendre. +{{% /notice %}} + +Une fois votre adresse validée, vous êtes redirigé vers la [page de connexion]({{% relref "login" %}}) où vous pourrez vous identifier avec vos nouveaux identifiants. diff --git a/content/pages/subdomains/happydomain-abstract-zone-records.webp b/content/pages/subdomains/happydomain-abstract-zone-records.webp new file mode 100644 index 0000000000000000000000000000000000000000..bdb5aa247af2b100d3fd9db929d2be63660685c2 GIT binary patch literal 76770 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%0Dyf?6(UcC?wNh71azBXWQGG>Fu<5c^SlY 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 literal 0 HcmV?d00001 diff --git a/content/pages/subdomains/happydomain-modal-new-subdomain.webp b/content/pages/subdomains/happydomain-modal-new-subdomain.webp new file mode 100644 index 0000000000000000000000000000000000000000..4541b7596ca04e046fb78bdbe5fbee91f823b6a9 GIT binary patch literal 8244 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 + +### 1. Enter the subdomain name + +A dialog opens asking for the new subdomain to create under your domain. Type the name **relative to the domain**: for example, enter `www` to create `www.example.com`, or `blog.staging` to create a nested path in one step. + +![The new-subdomain creation dialog](happydomain-modal-new-subdomain.webp) + +The name is validated as you type. You only need to provide the part to the left of your domain name; happyDomain appends the domain for you. + +{{% notice style="tip" title="Apex and nested paths" icon="sitemap" %}} +Leave the field empty (or use `@`) to target the domain apex itself. You can also create several levels at once by typing a dotted path such as `a.b.c`: the intermediate levels are created as needed. +{{% /notice %}} + +### 2. Add a first service + +Creating a subdomain only makes sense if it carries at least one service, so happyDomain chains directly into the service selector once you confirm the name. Pick the service type and fill in its form exactly as described in [Services]({{% relref "services" %}}). + +The new subdomain then appears in the sidebar and in the main panel, with the service you just added. + +{{% notice style="info" title="Changes are staged" icon="circle-info" %}} +Creating a subdomain and its service does not contact your DNS provider immediately. Like every other change, it is staged locally and only sent to your provider when you publish the zone. See the [abstract view]({{% relref "domain-abstract" %}}) for how to review and apply your changes. +{{% /notice %}} + +## Other domain actions + +Next to the **Add a subdomain** button, a menu gives access to domain-wide actions, including: + +- viewing the [history]({{% relref "domain-history" %}}) of zone versions; +- consulting the audit log of changes; +- configuring [checks]({{% relref "checks" %}}) for the domain; +- running a WHOIS lookup; +- viewing or re-importing the zone, or uploading a zone file; +- removing the domain from happyDomain. diff --git a/content/pages/subdomains/index.fr.md b/content/pages/subdomains/index.fr.md new file mode 100644 index 0000000..df2a608 --- /dev/null +++ b/content/pages/subdomains/index.fr.md @@ -0,0 +1,65 @@ +--- +date: 2026-06-10T12:00:00+02:00 +title: Sous-domaines +weight: 1100 +description: "Naviguer et gérer les sous-domaines d'un domaine : la liste des sous-domaines, la vue en arbre et la création d'un nouveau sous-domaine" +--- + +Un domaine est rarement plat : il se compose d'une racine (l'apex, noté `@`) et d'une hiérarchie de sous-domaines tels que `www`, `mail` ou `blog.staging`. happyDomain présente cette hiérarchie de façon claire et navigable, afin que vous puissiez retrouver et gérer rapidement chaque partie de votre zone. + +## La liste des sous-domaines + +Lorsque vous ouvrez un domaine, la barre latérale de gauche affiche la liste des sous-domaines pour la version de zone sélectionnée. Chaque entrée est présentée sous la forme d'un chemin relatif au domaine, l'apex étant affiché sous la forme du nom de domaine lui-même. + +![La barre latérale listant les sous-domaines du domaine](happydomain-abstract-zone-records.webp) + +Cette liste se comporte comme une table des matières : + +- elle est **indentée** pour refléter la hiérarchie : un sous-domaine est décalé vers la droite en fonction de sa profondeur dans l'arbre, si bien que `blog.staging` apparaît imbriqué sous `staging` ; +- cliquer sur une entrée **fait défiler** le panneau principal jusqu'au sous-domaine correspondant ; +- au fil de votre défilement dans la zone, la barre latérale **met en évidence** le sous-domaine que vous consultez et suit automatiquement votre position. + +Les niveaux intermédiaires qui ne portent aucun service propre restent affichés, de sorte que l'arbre demeure cohérent et facile à lire. (Pour les zones inverses, seules les entrées réelles sont listées.) + +## Gérer un sous-domaine + +Dans le panneau principal, chaque sous-domaine regroupe les [services]({{% relref "services" %}}) qui lui sont rattachés. Vous pouvez y ajouter, modifier ou supprimer des services. L'ajout d'un service à un sous-domaine existant est détaillé dans la page [Services]({{% relref "services#ajouter-un-service-à-un-sous-domaine" %}}). + +## Créer un nouveau sous-domaine + +Pour créer un sous-domaine entièrement nouveau (qui n'existe pas encore dans votre zone), utilisez l'action **Ajouter un sous-domaine**, en haut de la barre latérale. + + + +### 1. Saisir le nom du sous-domaine + +Une fenêtre s'ouvre et vous demande le nouveau sous-domaine à créer sous votre domaine. Saisissez le nom **relatif au domaine** : par exemple, entrez `www` pour créer `www.example.com`, ou `blog.staging` pour créer un chemin imbriqué en une seule fois. + +![La fenêtre de création d'un sous-domaine](happydomain-modal-new-subdomain.webp) + +Le nom est validé au fur et à mesure de la saisie. Vous n'avez besoin de fournir que la partie située à gauche de votre nom de domaine ; happyDomain ajoute le domaine pour vous. + +{{% notice style="tip" title="Apex et chemins imbriqués" icon="sitemap" %}} +Laissez le champ vide (ou utilisez `@`) pour viser la racine du domaine elle-même. Vous pouvez aussi créer plusieurs niveaux d'un coup en saisissant un chemin avec des points, comme `a.b.c` : les niveaux intermédiaires sont créés au besoin. +{{% /notice %}} + +### 2. Ajouter un premier service + +Créer un sous-domaine n'a de sens que s'il porte au moins un service : happyDomain enchaîne donc directement avec le sélecteur de services dès que vous confirmez le nom. Choisissez le type de service et remplissez son formulaire exactement comme décrit dans la page [Services]({{% relref "services" %}}). + +Le nouveau sous-domaine apparaît alors dans la barre latérale et dans le panneau principal, avec le service que vous venez d'ajouter. + +{{% notice style="info" title="Les modifications sont préparées" icon="circle-info" %}} +Créer un sous-domaine et son service ne contacte pas immédiatement votre hébergeur DNS. Comme toute autre modification, l'opération est préparée localement et n'est envoyée à votre hébergeur qu'au moment de la publication de la zone. Consultez la [vue abstraite]({{% relref "domain-abstract" %}}) pour savoir comment vérifier et appliquer vos modifications. +{{% /notice %}} + +## Autres actions sur le domaine + +À côté du bouton **Ajouter un sous-domaine**, un menu donne accès aux actions concernant l'ensemble du domaine, notamment : + +- consulter l'[historique]({{% relref "domain-history" %}}) des versions de la zone ; +- consulter le journal d'audit des modifications ; +- configurer les [vérifications]({{% relref "checks" %}}) du domaine ; +- effectuer une recherche WHOIS ; +- afficher ou réimporter la zone, ou téléverser un fichier de zone ; +- retirer le domaine de happyDomain. diff --git a/content/pages/tools-client.en.md b/content/pages/tools-client.en.md index 2ed133d..5bdffab 100644 --- a/content/pages/tools-client.en.md +++ b/content/pages/tools-client.en.md @@ -2,7 +2,7 @@ date: 2021-01-12T21:38:49+02:00 author: Frederic title: Test a domain -weight: 50 +weight: 1900 --- Please, help us to write this Documentation page diff --git a/content/pages/tools-client.fr.md b/content/pages/tools-client.fr.md index 146ecf4..0be1d6a 100644 --- a/content/pages/tools-client.fr.md +++ b/content/pages/tools-client.fr.md @@ -1,7 +1,7 @@ --- date: 2020-12-10T10:26:54+01:00 title: Tester un domaine -weight: 50 +weight: 1900 --- Documentation à faire From 5ccdd8892fa9747cb112a5a55d4d9306ee5ff3fe Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 11 Jun 2026 17:27:00 +0900 Subject: [PATCH 3/3] docs: add checker reference pages and update homepage feature list Add individual reference pages for all domain health checkers (EN/FR), update the homepage feature descriptions in both languages to highlight monitoring, notifications, and domain availability checks. --- content/_index.en.md | 14 +-- content/_index.fr.md | 14 +-- content/reference/checkers/_index.en.md | 36 ++++++++ content/reference/checkers/_index.fr.md | 36 ++++++++ content/reference/checkers/alias.en.md | 49 +++++++++++ content/reference/checkers/alias.fr.md | 49 +++++++++++ .../checkers/authoritative-consistency.en.md | 51 +++++++++++ .../checkers/authoritative-consistency.fr.md | 51 +++++++++++ content/reference/checkers/blacklist.en.md | 35 ++++++++ content/reference/checkers/blacklist.fr.md | 35 ++++++++ content/reference/checkers/caa.en.md | 42 +++++++++ content/reference/checkers/caa.fr.md | 42 +++++++++ content/reference/checkers/dane.en.md | 48 +++++++++++ content/reference/checkers/dane.fr.md | 48 +++++++++++ content/reference/checkers/dangling.en.md | 42 +++++++++ content/reference/checkers/dangling.fr.md | 42 +++++++++ content/reference/checkers/dav.en.md | 48 +++++++++++ content/reference/checkers/dav.fr.md | 48 +++++++++++ content/reference/checkers/delegation.en.md | 69 +++++++++++++++ content/reference/checkers/delegation.fr.md | 69 +++++++++++++++ content/reference/checkers/dnssec.en.md | 80 +++++++++++++++++ content/reference/checkers/dnssec.fr.md | 80 +++++++++++++++++ content/reference/checkers/dnsviz.en.md | 54 ++++++++++++ content/reference/checkers/dnsviz.fr.md | 54 ++++++++++++ .../checkers/domain-availability.en.md | 33 +++++++ .../checkers/domain-availability.fr.md | 33 +++++++ .../reference/checkers/domain-contact.en.md | 44 ++++++++++ .../reference/checkers/domain-contact.fr.md | 44 ++++++++++ .../reference/checkers/domain-expiry.en.md | 43 ++++++++++ .../reference/checkers/domain-expiry.fr.md | 43 ++++++++++ content/reference/checkers/domain-lock.en.md | 36 ++++++++ content/reference/checkers/domain-lock.fr.md | 36 ++++++++ .../reference/checkers/email-autoconfig.en.md | 57 ++++++++++++ .../reference/checkers/email-autoconfig.fr.md | 57 ++++++++++++ content/reference/checkers/email-keys.en.md | 86 +++++++++++++++++++ content/reference/checkers/email-keys.fr.md | 86 +++++++++++++++++++ .../reference/checkers/external-expiry.en.md | 38 ++++++++ .../reference/checkers/external-expiry.fr.md | 38 ++++++++ content/reference/checkers/happydeliver.en.md | 85 ++++++++++++++++++ content/reference/checkers/happydeliver.fr.md | 85 ++++++++++++++++++ content/reference/checkers/http.en.md | 54 ++++++++++++ content/reference/checkers/http.fr.md | 54 ++++++++++++ content/reference/checkers/kerberos.en.md | 49 +++++++++++ content/reference/checkers/kerberos.fr.md | 49 +++++++++++ content/reference/checkers/ldap.en.md | 51 +++++++++++ content/reference/checkers/ldap.fr.md | 51 +++++++++++ .../reference/checkers/legacy-records.en.md | 35 ++++++++ .../reference/checkers/legacy-records.fr.md | 35 ++++++++ .../checkers/matrix-federation.en.md | 34 ++++++++ .../checkers/matrix-federation.fr.md | 34 ++++++++ .../reference/checkers/ns-restrictions.en.md | 36 ++++++++ .../reference/checkers/ns-restrictions.fr.md | 36 ++++++++ content/reference/checkers/ping.en.md | 34 ++++++++ content/reference/checkers/ping.fr.md | 34 ++++++++ content/reference/checkers/ptr.en.md | 52 +++++++++++ content/reference/checkers/ptr.fr.md | 52 +++++++++++ .../checkers/resolver-propagation.en.md | 45 ++++++++++ .../checkers/resolver-propagation.fr.md | 45 ++++++++++ content/reference/checkers/reverse-zone.en.md | 43 ++++++++++ content/reference/checkers/reverse-zone.fr.md | 43 ++++++++++ content/reference/checkers/sip.en.md | 44 ++++++++++ content/reference/checkers/sip.fr.md | 44 ++++++++++ content/reference/checkers/smtp.en.md | 52 +++++++++++ content/reference/checkers/smtp.fr.md | 52 +++++++++++ content/reference/checkers/ssh.en.md | 45 ++++++++++ content/reference/checkers/ssh.fr.md | 45 ++++++++++ content/reference/checkers/stun-turn.en.md | 55 ++++++++++++ content/reference/checkers/stun-turn.fr.md | 55 ++++++++++++ content/reference/checkers/tls.en.md | 50 +++++++++++ content/reference/checkers/tls.fr.md | 50 +++++++++++ content/reference/checkers/xmpp.en.md | 44 ++++++++++ content/reference/checkers/xmpp.fr.md | 44 ++++++++++ content/reference/checkers/zonemaster.en.md | 52 +++++++++++ content/reference/checkers/zonemaster.fr.md | 52 +++++++++++ 74 files changed, 3518 insertions(+), 12 deletions(-) create mode 100644 content/reference/checkers/_index.en.md create mode 100644 content/reference/checkers/_index.fr.md create mode 100644 content/reference/checkers/alias.en.md create mode 100644 content/reference/checkers/alias.fr.md create mode 100644 content/reference/checkers/authoritative-consistency.en.md create mode 100644 content/reference/checkers/authoritative-consistency.fr.md create mode 100644 content/reference/checkers/blacklist.en.md create mode 100644 content/reference/checkers/blacklist.fr.md create mode 100644 content/reference/checkers/caa.en.md create mode 100644 content/reference/checkers/caa.fr.md create mode 100644 content/reference/checkers/dane.en.md create mode 100644 content/reference/checkers/dane.fr.md create mode 100644 content/reference/checkers/dangling.en.md create mode 100644 content/reference/checkers/dangling.fr.md create mode 100644 content/reference/checkers/dav.en.md create mode 100644 content/reference/checkers/dav.fr.md create mode 100644 content/reference/checkers/delegation.en.md create mode 100644 content/reference/checkers/delegation.fr.md create mode 100644 content/reference/checkers/dnssec.en.md create mode 100644 content/reference/checkers/dnssec.fr.md create mode 100644 content/reference/checkers/dnsviz.en.md create mode 100644 content/reference/checkers/dnsviz.fr.md create mode 100644 content/reference/checkers/domain-availability.en.md create mode 100644 content/reference/checkers/domain-availability.fr.md create mode 100644 content/reference/checkers/domain-contact.en.md create mode 100644 content/reference/checkers/domain-contact.fr.md create mode 100644 content/reference/checkers/domain-expiry.en.md create mode 100644 content/reference/checkers/domain-expiry.fr.md create mode 100644 content/reference/checkers/domain-lock.en.md create mode 100644 content/reference/checkers/domain-lock.fr.md create mode 100644 content/reference/checkers/email-autoconfig.en.md create mode 100644 content/reference/checkers/email-autoconfig.fr.md create mode 100644 content/reference/checkers/email-keys.en.md create mode 100644 content/reference/checkers/email-keys.fr.md create mode 100644 content/reference/checkers/external-expiry.en.md create mode 100644 content/reference/checkers/external-expiry.fr.md create mode 100644 content/reference/checkers/happydeliver.en.md create mode 100644 content/reference/checkers/happydeliver.fr.md create mode 100644 content/reference/checkers/http.en.md create mode 100644 content/reference/checkers/http.fr.md create mode 100644 content/reference/checkers/kerberos.en.md create mode 100644 content/reference/checkers/kerberos.fr.md create mode 100644 content/reference/checkers/ldap.en.md create mode 100644 content/reference/checkers/ldap.fr.md create mode 100644 content/reference/checkers/legacy-records.en.md create mode 100644 content/reference/checkers/legacy-records.fr.md create mode 100644 content/reference/checkers/matrix-federation.en.md create mode 100644 content/reference/checkers/matrix-federation.fr.md create mode 100644 content/reference/checkers/ns-restrictions.en.md create mode 100644 content/reference/checkers/ns-restrictions.fr.md create mode 100644 content/reference/checkers/ping.en.md create mode 100644 content/reference/checkers/ping.fr.md create mode 100644 content/reference/checkers/ptr.en.md create mode 100644 content/reference/checkers/ptr.fr.md create mode 100644 content/reference/checkers/resolver-propagation.en.md create mode 100644 content/reference/checkers/resolver-propagation.fr.md create mode 100644 content/reference/checkers/reverse-zone.en.md create mode 100644 content/reference/checkers/reverse-zone.fr.md create mode 100644 content/reference/checkers/sip.en.md create mode 100644 content/reference/checkers/sip.fr.md create mode 100644 content/reference/checkers/smtp.en.md create mode 100644 content/reference/checkers/smtp.fr.md create mode 100644 content/reference/checkers/ssh.en.md create mode 100644 content/reference/checkers/ssh.fr.md create mode 100644 content/reference/checkers/stun-turn.en.md create mode 100644 content/reference/checkers/stun-turn.fr.md create mode 100644 content/reference/checkers/tls.en.md create mode 100644 content/reference/checkers/tls.fr.md create mode 100644 content/reference/checkers/xmpp.en.md create mode 100644 content/reference/checkers/xmpp.fr.md create mode 100644 content/reference/checkers/zonemaster.en.md create mode 100644 content/reference/checkers/zonemaster.fr.md diff --git a/content/_index.en.md b/content/_index.en.md index ceb0bd0..476e4f1 100644 --- a/content/_index.en.md +++ b/content/_index.en.md @@ -15,13 +15,15 @@ to have all the power of domain names, without having to read and learn all the Here's an overview of happyDomain's main features: - consolidate domain names from over 45 domain name providers or authoritative servers, -- guide administrators with clear forms, -- clearly visualize the changes that will be propagated, -- keep a history of changes made to the zone, -- return to a previous zone status with a single click, -- group records by services/needs: email, delegation, server, load balancing, etc. - abstract all technical complexity into a logical view, -- import/export the zone as a standard file, +- group records by services/needs: email, website, delegation, load balancing, etc. +- guide administrators with clear forms, +- review the details of your changes before publishing, and pick exactly which ones to apply, +- keep a history of changes and roll back to a previous zone state with a single click, +- monitor your domains and services with automatic checks (expiration, DNSSEC, response time, etc.), +- get notified as soon as a check changes state, +- check whether a domain is available for registration and inspect any domain (WHOIS, DNS resolver), +- import/export the zone as a standard file (BIND format), - keep track of actions for later auditing, - automate tasks via a REST API. diff --git a/content/_index.fr.md b/content/_index.fr.md index 739b8c5..12a1200 100644 --- a/content/_index.fr.md +++ b/content/_index.fr.md @@ -15,13 +15,15 @@ avoir toute la puissances des noms de domaines, sans devoir lire et apprendre to Voici un aperçu des principales fonctionnalités d'happyDomain : - regrouper les noms de domaines de plus de 45 prestataires de nom de domaine ou serveurs faisant autorité, -- guider l'administrateur au moyen de formulaires clairs, -- visualiser clairement les changements qui seront propagés, -- garder un historique des changements effectués sur la zone, -- pouvoir revenir à un état antérieur de la zone en un clic, -- regrouper les enregistrements par services/besoins : emails, délégation, serveur, répartition de charge, ... - abstraire toute la complexité technique en une vue logique, -- importer/exporter la zone sous forme d'un fichier standard, +- regrouper les enregistrements par services/besoins : e-mails, site web, délégation, répartition de charge, ... +- guider l'administrateur au moyen de formulaires clairs, +- visualiser le détail des changements avant de les publier, et choisir précisément ceux à appliquer, +- garder un historique des changements et revenir à un état antérieur de la zone en un clic, +- surveiller vos domaines et services grâce à des vérifications automatiques (expiration, DNSSEC, temps de réponse, ...), +- être alerté par notifications dès qu'une vérification change d'état, +- vérifier la disponibilité d'un domaine à l'enregistrement et inspecter n'importe quel domaine (WHOIS, résolveur DNS), +- importer/exporter la zone sous forme d'un fichier standard (format BIND), - garder une trace des actions pour les auditer plus tard, - automatiser des tâches via une API REST. diff --git a/content/reference/checkers/_index.en.md b/content/reference/checkers/_index.en.md new file mode 100644 index 0000000..d79534f --- /dev/null +++ b/content/reference/checkers/_index.en.md @@ -0,0 +1,36 @@ +--- +date: 2026-06-11T09:00:00+02:00 +title: Checkers +author: nemunaire +archetype: chapter +weight: 35 +aliases: + checkers +--- + +Checkers are the building blocks of happyDomain's monitoring system. Each one collects data about a domain, a zone or a service, evaluates it against a set of rules, and reports a clear status (OK, Warning, Critical or Error). + +This chapter documents every checker shipped with happyDomain: what it verifies, the scope it applies to, the options you can tune, and the rules it evaluates. For the day-to-day workflow of configuring, scheduling and reading checks in the interface, see {{< relref "/pages/checks" >}}. + +## Scopes + +Every checker declares the scope it operates on: + +- **Domain-level** — concerns the domain itself, independent of its DNS records (registration status, expiry, transfer lock…). +- **Zone-level** — needs the full zone content (DNSSEC validation, delegation consistency…). +- **Service-level** — targets a specific service published on a subdomain (HTTP, TLS, ping…), and is configured from that service's own **Checks** tab. + +## Statuses + +Checkers report one of the following statuses, in order of severity: + +| Status | Meaning | +|--------|---------| +| **OK** | Everything is within acceptable parameters | +| **Info** | Informational finding, no action needed | +| **Warning** | A threshold is approaching; attention recommended | +| **Critical** | A threshold has been exceeded; action required | +| **Error** | The check itself failed (collection error, bad configuration) | +| **Unknown** | The check could not determine a result | + +{{% children %}} diff --git a/content/reference/checkers/_index.fr.md b/content/reference/checkers/_index.fr.md new file mode 100644 index 0000000..ce12857 --- /dev/null +++ b/content/reference/checkers/_index.fr.md @@ -0,0 +1,36 @@ +--- +date: 2026-06-11T09:00:00+02:00 +title: Vérificateurs +author: nemunaire +archetype: chapter +weight: 35 +aliases: + checkers +--- + +Les vérificateurs sont les briques de base du système de surveillance de happyDomain. Chacun collecte des données sur un domaine, une zone ou un service, les évalue selon un ensemble de règles, puis rapporte un état clair (OK, Avertissement, Critique ou Erreur). + +Ce chapitre documente chaque vérificateur fourni avec happyDomain : ce qu'il contrôle, la portée à laquelle il s'applique, les options que vous pouvez régler et les règles qu'il évalue. Pour le fonctionnement au quotidien (configuration, planification et lecture des résultats dans l'interface), consultez {{< relref "/pages/checks" >}}. + +## Portées + +Chaque vérificateur déclare la portée sur laquelle il opère : + +- **Niveau domaine** : concerne le domaine lui-même, indépendamment de ses enregistrements DNS (statut d'enregistrement, expiration, verrou de transfert...). +- **Niveau zone** : nécessite le contenu complet de la zone (validation DNSSEC, cohérence de la délégation...). +- **Niveau service** : cible un service précis publié sur un sous-domaine (HTTP, TLS, ping...), et se configure depuis l'onglet **Vérifications** de ce service. + +## États + +Les vérificateurs rapportent l'un des états suivants, par ordre de gravité : + +| État | Signification | +|------|---------------| +| **OK** | Tout se situe dans les paramètres acceptables | +| **Info** | Information utile, aucune action requise | +| **Avertissement** | Un seuil est sur le point d'être atteint ; attention recommandée | +| **Critique** | Un seuil a été dépassé ; action requise | +| **Erreur** | La vérification elle-même a échoué (erreur de collecte, mauvaise configuration) | +| **Inconnu** | La vérification n'a pas pu déterminer de résultat | + +{{% children %}} diff --git a/content/reference/checkers/alias.en.md b/content/reference/checkers/alias.en.md new file mode 100644 index 0000000..7d83b00 --- /dev/null +++ b/content/reference/checkers/alias.en.md @@ -0,0 +1,49 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Alias chain +description: "Walks a CNAME/DNAME/ALIAS chain and validates hop count, TTLs, target resolvability, apex coexistence and DNSSEC signing." +weight: 130 +--- + +The **CNAME / DNAME / ALIAS chain** checker follows the alias chain of a name and verifies that it resolves cleanly: no loops, not too many hops, sane TTLs, a resolvable final target, no forbidden record coexistence, and a properly signed CNAME RRset when the zone uses DNSSEC. + +This is a **service-level** checker: it runs on a `CNAME` (or special CNAME) service and is configured from that service's own **Checks** tab. Starting from the queried name it locates the zone apex, walks each CNAME/DNAME hop, and finally resolves the chain's target to A/AAAA records. + +## What it checks + +Each rule emits a finding code. Some severities are softened by the options below. + +| Rule | What it verifies / flags | Severity | +|------|--------------------------|----------| +| `apex_lookup` | The zone apex (SOA) for the queried name can be located. | Critical | +| `chain_loop` | A CNAME/DNAME cycle in the resolution chain. | Critical | +| `chain_length` | The chain exceeds **Maximum chain length** hops. | Critical | +| `chain_query_error` | A DNS query fails while walking the chain (network error, timeout). | Warning | +| `chain_rcode` | A non-NOERROR response code mid-chain or on the final A/AAAA lookup. | Critical (mid-chain) / Warning (final) | +| `hop_ttl` | A CNAME/DNAME hop has a TTL below **Minimum target TTL**. | Warning | +| `cname_at_apex` | A CNAME exists at the zone apex, conflicting with SOA/NS (RFC 1912 §2.4). | Critical / Warning | +| `apex_flattening` | A/AAAA coexist with SOA/NS at the apex without a CNAME (provider-side ALIAS/ANAME flattening). | Info | +| `cname_coexistence` | Other RRsets (beyond A/AAAA) coexist at a CNAME owner, violating RFC 1034 §3.6.2 / RFC 2181 §10.1. | Critical / Warning at apex | +| `cname_dnssec` | The zone is DNSSEC-signed but the CNAME RRset lacks an RRSIG. | Critical | +| `target_resolvable` | The final target of the chain has no A or AAAA record. | Critical | +| `multiple_records` | An owner in the chain carries more than one CNAME/DNAME record (malformed). | Critical | + +{{% notice style="info" title="Why a CNAME at the apex is a problem" %}} +A CNAME owner may carry no other record type, but the zone apex must always hold SOA and NS records. The two requirements are mutually exclusive, so a CNAME at the apex is invalid (RFC 1912 §2.4). Some providers work around this with server-side ALIAS/ANAME "flattening" that publishes plain A/AAAA at the apex; the `apex_flattening` rule recognises that pattern as intentional when **Recognize ALIAS/ANAME flattening** is enabled. +{{% /notice %}} + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Maximum chain length | Above this number of hops the chain is reported as critical. | `8` | +| Minimum target TTL | Hops with a TTL below this threshold (seconds) are flagged as a warning. | `60` | +| Allow CNAME at apex | When enabled, a CNAME at a zone apex and its coexistence violations are downgraded to warnings. RFC 1912 forbids this, so leaving it off is strongly recommended. | `false` | +| Recognize ALIAS/ANAME flattening | When enabled, providers serving A/AAAA at the apex (ALIAS/ANAME pseudo-records) are recognised as intentional and excused from coexistence violations. | `true` | + +## In happyDomain + +Add the CNAME service to the subdomain, then enable this checker from that service's **Checks** tab. See {{< relref "/pages/checks" >}} for configuring and scheduling checks. The parent domain and subdomain are filled in automatically. + +Related checkers: {{< relref "/reference/checkers/dangling" >}} watches for alias targets that have become unregistered or NXDOMAIN, and {{< relref "/reference/checkers/ptr" >}} covers the reverse-DNS side. diff --git a/content/reference/checkers/alias.fr.md b/content/reference/checkers/alias.fr.md new file mode 100644 index 0000000..2613785 --- /dev/null +++ b/content/reference/checkers/alias.fr.md @@ -0,0 +1,49 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Chaîne d'alias +description: "Parcourt une chaîne CNAME/DNAME/ALIAS et valide le nombre de sauts, les TTL, la résolvabilité de la cible, la coexistence à l'apex et la signature DNSSEC." +weight: 130 +--- + +Le vérificateur **Chaîne CNAME / DNAME / ALIAS** suit la chaîne d'alias d'un nom et vérifie qu'elle se résout proprement : pas de boucle, pas trop de sauts, des TTL raisonnables, une cible finale résolvable, aucune coexistence d'enregistrements interdite et un RRset CNAME correctement signé lorsque la zone utilise DNSSEC. + +Il s'agit d'un vérificateur de **niveau service** : il s'exécute sur un service `CNAME` (ou CNAME spécial) et se configure depuis l'onglet **Vérifications** de ce service. À partir du nom interrogé, il localise l'apex de la zone, parcourt chaque saut CNAME/DNAME, puis résout la cible de la chaîne vers des enregistrements A/AAAA. + +## Ce qui est vérifié + +Chaque règle émet un code de constat. Certaines sévérités sont atténuées par les options ci-dessous. + +| Règle | Ce qui est vérifié ou signalé | Sévérité | +|-------|-------------------------------|----------| +| `apex_lookup` | L'apex de la zone (SOA) du nom interrogé peut être localisé. | Critique | +| `chain_loop` | Un cycle CNAME/DNAME dans la chaîne de résolution. | Critique | +| `chain_length` | La chaîne dépasse le nombre de sauts de **Longueur maximale de chaîne**. | Critique | +| `chain_query_error` | Une requête DNS échoue pendant le parcours de la chaîne (erreur réseau, délai dépassé). | Avertissement | +| `chain_rcode` | Un code de réponse autre que NOERROR en milieu de chaîne ou sur la résolution A/AAAA finale. | Critique (milieu) / Avertissement (final) | +| `hop_ttl` | Un saut CNAME/DNAME a un TTL inférieur à **TTL minimal de la cible**. | Avertissement | +| `cname_at_apex` | Un CNAME existe à l'apex de la zone, en conflit avec SOA/NS (RFC 1912 §2.4). | Critique / Avertissement | +| `apex_flattening` | Des A/AAAA coexistent avec SOA/NS à l'apex sans CNAME (aplatissement ALIAS/ANAME côté hébergeur). | Info | +| `cname_coexistence` | D'autres RRset (au-delà de A/AAAA) coexistent chez un propriétaire CNAME, en violation des RFC 1034 §3.6.2 / RFC 2181 §10.1. | Critique / Avertissement à l'apex | +| `cname_dnssec` | La zone est signée DNSSEC mais le RRset CNAME ne possède pas de RRSIG. | Critique | +| `target_resolvable` | La cible finale de la chaîne n'a aucun enregistrement A ni AAAA. | Critique | +| `multiple_records` | Un propriétaire de la chaîne porte plus d'un enregistrement CNAME/DNAME (malformé). | Critique | + +{{% notice style="info" title="Pourquoi un CNAME à l'apex pose problème" %}} +Un propriétaire de CNAME ne peut porter aucun autre type d'enregistrement, mais l'apex de la zone doit toujours contenir des enregistrements SOA et NS. Ces deux exigences sont incompatibles : un CNAME à l'apex est donc invalide (RFC 1912 §2.4). Certains hébergeurs contournent cela par un aplatissement ALIAS/ANAME côté serveur qui publie de simples A/AAAA à l'apex ; la règle `apex_flattening` reconnaît ce motif comme intentionnel lorsque l'option **Reconnaître l'aplatissement ALIAS/ANAME** est activée. +{{% /notice %}} + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Longueur maximale de chaîne | Au-delà de ce nombre de sauts, la chaîne est rapportée comme critique. | `8` | +| TTL minimal de la cible | Les sauts dont le TTL est inférieur à ce seuil (en secondes) sont signalés comme avertissement. | `60` | +| Autoriser un CNAME à l'apex | Lorsqu'activée, un CNAME à l'apex d'une zone et ses violations de coexistence sont rétrogradés en avertissements. La RFC 1912 l'interdit : il est fortement recommandé de laisser cette option désactivée. | `false` | +| Reconnaître l'aplatissement ALIAS/ANAME | Lorsqu'activée, les hébergeurs servant des A/AAAA à l'apex (pseudo-enregistrements ALIAS/ANAME) sont reconnus comme intentionnels et dispensés des violations de coexistence. | `true` | + +## Dans happyDomain + +Ajoutez le service CNAME au sous-domaine, puis activez ce vérificateur depuis l'onglet **Vérifications** de ce service. Consultez {{< relref "/pages/checks" >}} pour configurer et planifier les vérifications. Le domaine parent et le sous-domaine sont renseignés automatiquement. + +Vérificateurs apparentés : {{< relref "/reference/checkers/dangling" >}} surveille les cibles d'alias devenues non enregistrées ou NXDOMAIN, et {{< relref "/reference/checkers/ptr" >}} couvre le versant DNS inverse. diff --git a/content/reference/checkers/authoritative-consistency.en.md b/content/reference/checkers/authoritative-consistency.en.md new file mode 100644 index 0000000..e17684f --- /dev/null +++ b/content/reference/checkers/authoritative-consistency.en.md @@ -0,0 +1,51 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Authoritative consistency +description: "Probes every authoritative name server of a zone and verifies they agree with each other and with the parent on NS, SOA, reachability, EDNS0 and authoritativeness." +weight: 80 +--- + +The **Authoritative consistency** checker probes every authoritative name server of a zone and verifies that they agree — with one another and with the parent delegation. Where the {{< relref "/reference/checkers/delegation" >}} checker focuses on the parent/child hand-off, this checker concentrates on the *apex itself*: do all the servers serve the same `NS` and `SOA`, are they all reachable over UDP and TCP, do they support EDNS0, do they answer authoritatively, and how fast do they respond? + +This checker is **service-level**: it targets an *Origin* or *NS-only Origin* service (`abstract.Origin`, `abstract.NSOnlyOrigin`) and is configured from that service's **Checks** tab. + +## What it checks + +Each rule emits a finding code. Several severities depend on the options below. + +| Finding code | Default severity | Condition | +|---|---|---| +| `authoritative_consistency_no_ns` | Critical | No name servers could be discovered (declared list empty and parent query returned nothing). | +| `authoritative_consistency_too_few_ns` | Warning | Fewer name servers declared than `minNameServers` (RFC 1034 recommends at least 2). | +| `authoritative_consistency_parent_query_failed` | Warning | The parent delegation query failed (network error, REFUSED…). | +| `authoritative_consistency_parent_drift` | Warning | The parent's `NS` RRset does not match the `NS` declared in the service. | +| `authoritative_consistency_ns_unresolvable` | Critical | A declared name server has no `A` or `AAAA` record. | +| `authoritative_consistency_ns_udp_failed` | Critical | A name server did not answer any SOA query over UDP/53. | +| `authoritative_consistency_ns_tcp_failed` | Critical with `requireTCP`, else Warning | A name server did not answer over TCP/53 (required by RFC 7766 and DNSSEC). | +| `authoritative_consistency_lame` | Critical | A name server answered without the AA bit for the zone (lame delegation). | +| `authoritative_consistency_no_soa` | Critical | A name server is authoritative but returned no `SOA`. | +| `authoritative_consistency_edns_unsupported` | Warning | A name server drops or mishandles EDNS0 queries (RFC 6891). | +| `authoritative_consistency_slow_ns` | Info | A name server's response time exceeded `latencyThresholdMs`. | +| `authoritative_consistency_serial_drift` | Warning | Authoritative servers disagree on the `SOA` serial (zone not fully propagated). | +| `authoritative_consistency_serial_stale_vs_saved` | Warning | The serial saved in happyDomain is newer than what the servers publish (likely un-pushed change). | +| `authoritative_consistency_serial_ahead_of_saved` | Info | The servers publish a serial newer than the saved one (out-of-band change). | +| `authoritative_consistency_soa_fields_drift` | Warning | Servers disagree on `SOA` fields (MNAME, RNAME, refresh, retry, expire, minimum). | +| `authoritative_consistency_ns_rrset_drift` | Warning | Servers disagree on the `NS` RRset they publish at the apex. | +| `authoritative_consistency_ns_rrset_mismatch_config` | Warning | The published `NS` RRset does not match the `NS` declared in the service. | + +## Options + +| Option | Meaning | Default | +|---|---|---| +| `requireTCP` | When enabled, a server that fails over TCP is critical (otherwise warning). TCP/53 is required by RFC 7766 and DNSSEC. | `true` | +| `checkEDNS` | Probe each name server for EDNS0 (RFC 6891). Servers that mishandle EDNS0 break DNSSEC and large answers. | `true` | +| `checkLatency` | Measure response time of every name server and warn on slow responders. | `true` | +| `latencyThresholdMs` | Response times above this value trigger a slow-server warning. | `500` | +| `useParentNS` | Query the parent for the delegation `NS` RRset and compare it to the service's declared name servers. | `true` | +| `warnOnStaleSaved` | Warn when the saved `SOA` serial is newer than what authoritative servers publish. | `true` | +| `minNameServers` | Below this count, a warning is emitted (RFC 1034 recommends at least 2). | `2` | + +## In happyDomain + +Enable the Authoritative consistency checker from the **Checks** tab of an Origin service. See {{< relref "/pages/checks" >}} for the full workflow. To compare what *recursive resolvers around the world* see against the authoritative answer, pair it with {{< relref "/reference/checkers/resolver-propagation" >}}. diff --git a/content/reference/checkers/authoritative-consistency.fr.md b/content/reference/checkers/authoritative-consistency.fr.md new file mode 100644 index 0000000..c5d186e --- /dev/null +++ b/content/reference/checkers/authoritative-consistency.fr.md @@ -0,0 +1,51 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Cohérence des serveurs faisant autorité +description: "Sonde chaque serveur faisant autorité d'une zone et vérifie qu'ils s'accordent entre eux et avec le parent sur les NS, le SOA, la joignabilité, EDNS0 et l'autorité." +weight: 80 +--- + +Le vérificateur **Cohérence des serveurs faisant autorité** sonde chaque serveur faisant autorité d'une zone et vérifie qu'ils s'accordent, entre eux et avec la délégation parente. Là où le vérificateur {{< relref "/reference/checkers/delegation" >}} se concentre sur le passage de relais parent/enfant, celui-ci porte sur l'*apex lui-même* : tous les serveurs servent-ils les mêmes `NS` et `SOA`, sont-ils tous joignables en UDP et en TCP, prennent-ils en charge EDNS0, répondent-ils de façon autoritaire, et à quelle vitesse répondent-ils ? + +Ce vérificateur s'applique au niveau du **service** : il cible un service d'origine ou d'origine NS-seule (`abstract.Origin`, `abstract.NSOnlyOrigin`) et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qu'il vérifie + +Chaque règle émet un code de constat. Plusieurs sévérités dépendent des options ci-dessous. + +| Code de constat | Sévérité par défaut | Condition | +|---|---|---| +| `authoritative_consistency_no_ns` | Critique | Aucun serveur de noms n'a pu être découvert (liste déclarée vide et requête parente sans réponse). | +| `authoritative_consistency_too_few_ns` | Avertissement | Moins de serveurs déclarés que `minNameServers` (la RFC 1034 recommande au moins 2). | +| `authoritative_consistency_parent_query_failed` | Avertissement | La requête de délégation parente a échoué (erreur réseau, REFUSED, etc.). | +| `authoritative_consistency_parent_drift` | Avertissement | Le RRset `NS` du parent ne correspond pas aux `NS` déclarés dans le service. | +| `authoritative_consistency_ns_unresolvable` | Critique | Un serveur de noms déclaré n'a aucun enregistrement `A` ni `AAAA`. | +| `authoritative_consistency_ns_udp_failed` | Critique | Un serveur de noms n'a répondu à aucune requête SOA en UDP/53. | +| `authoritative_consistency_ns_tcp_failed` | Critique avec `requireTCP`, sinon avertissement | Un serveur de noms n'a pas répondu en TCP/53 (exigé par la RFC 7766 et par DNSSEC). | +| `authoritative_consistency_lame` | Critique | Un serveur de noms a répondu sans le bit AA pour la zone (délégation boiteuse). | +| `authoritative_consistency_no_soa` | Critique | Un serveur fait autorité mais n'a renvoyé aucun `SOA`. | +| `authoritative_consistency_edns_unsupported` | Avertissement | Un serveur ignore ou gère mal les requêtes EDNS0 (RFC 6891). | +| `authoritative_consistency_slow_ns` | Info | Le temps de réponse d'un serveur a dépassé `latencyThresholdMs`. | +| `authoritative_consistency_serial_drift` | Avertissement | Les serveurs divergent sur le numéro de série `SOA` (zone non entièrement propagée). | +| `authoritative_consistency_serial_stale_vs_saved` | Avertissement | Le numéro de série enregistré dans happyDomain est plus récent que celui publié (changement probablement non poussé). | +| `authoritative_consistency_serial_ahead_of_saved` | Info | Les serveurs publient un numéro de série plus récent que celui enregistré (changement hors bande). | +| `authoritative_consistency_soa_fields_drift` | Avertissement | Les serveurs divergent sur les champs `SOA` (MNAME, RNAME, refresh, retry, expire, minimum). | +| `authoritative_consistency_ns_rrset_drift` | Avertissement | Les serveurs divergent sur le RRset `NS` qu'ils publient à l'apex. | +| `authoritative_consistency_ns_rrset_mismatch_config` | Avertissement | Le RRset `NS` publié ne correspond pas aux `NS` déclarés dans le service. | + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| `requireTCP` | Si activé, un serveur défaillant en TCP est critique (sinon avertissement). TCP/53 est exigé par la RFC 7766 et par DNSSEC. | `true` | +| `checkEDNS` | Sonde chaque serveur de noms pour EDNS0 (RFC 6891). Les serveurs qui gèrent mal EDNS0 cassent DNSSEC et les grandes réponses. | `true` | +| `checkLatency` | Mesure le temps de réponse de chaque serveur et avertit en cas de lenteur. | `true` | +| `latencyThresholdMs` | Les temps de réponse au-delà de cette valeur déclenchent un avertissement de lenteur. | `500` | +| `useParentNS` | Interroge le parent pour le RRset `NS` de délégation et le compare aux serveurs de noms déclarés dans le service. | `true` | +| `warnOnStaleSaved` | Avertit lorsque le numéro de série `SOA` enregistré est plus récent que celui publié par les serveurs faisant autorité. | `true` | +| `minNameServers` | En dessous de ce nombre, un avertissement est émis (la RFC 1034 recommande au moins 2). | `2` | + +## Dans happyDomain + +Activez le vérificateur Cohérence des serveurs faisant autorité depuis l'onglet **Vérifications** d'un service d'origine. Consultez {{< relref "/pages/checks" >}} pour le déroulé complet. Pour comparer ce que voient les *résolveurs récursifs à travers le monde* à la réponse faisant autorité, associez-le à {{< relref "/reference/checkers/resolver-propagation" >}}. diff --git a/content/reference/checkers/blacklist.en.md b/content/reference/checkers/blacklist.en.md new file mode 100644 index 0000000..52bc277 --- /dev/null +++ b/content/reference/checkers/blacklist.en.md @@ -0,0 +1,35 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Blacklist (DNSBL) +description: "Checks whether a domain is currently listed on widely-used reputation systems: DNS-based domain blocklists, downloaded phishing/malware feeds, and threat-intelligence APIs." +weight: 320 +--- + +The **Blacklist & reputation** checker flags whether a domain is currently listed on widely-used reputation systems. It queries a range of sources in parallel and produces a diagnosis-first HTML report whose "Action required" section lists the most impactful listings with a per-operator removal procedure. + +**Scope:** domain-level. The check targets the domain name itself, independent of its DNS records, and is enabled from the domain's checks view. + +## What it checks + +Each configured source contributes its own per-source rule; a listing on any of them raises the domain's status. The sources fall into three families: + +- **DNS-based domain blocklists (DBL/RHSBL)** — queried over DNS, no API key required: Spamhaus DBL, SURBL multi, URIBL multi, NordSpam DBL, SpamEatingMonkey Fresh, Tiopan DBL, SORBS RHSBL, plus any extra DNSBL zones an administrator adds. +- **Downloaded phishing/malware feeds** — fetched and cached in memory: OpenPhish public feed, PhishTank, Botvrij.eu, Disconnect.me, OISD, and a Quad9 secure-DNS comparison. +- **Threat-intelligence HTTPS lookups** — requiring an API key configured by an administrator: Google Safe Browsing, abuse.ch URLhaus / ThreatFox / MalwareBazaar, VirusTotal v3, AlienVault OTX, Pulsedive, Criminal IP. + +When a DNSBL query is refused (many public resolvers are blocked by DBL operators) or an API quota is exhausted, the source is surfaced as a Warning so it does not pollute the OK status. A multi-vendor source such as VirusTotal reports Critical when at least one vendor flags the domain as malicious, and Warning when it is only suspicious. + +## Options + +The only domain-level option is the target itself: + +| Option | Meaning | Default | +|--------|---------|---------| +| Domain name (`domain_name`) | The domain to look up. Auto-filled from the domain. | (from domain) | + +All source selection and credentials are configured per source. Most sources are toggled on or off (and API keys supplied) at the **administrator** level; a subset of the downloaded-feed sources default to on and can be toggled by the user. See the source's own documentation for which sources need an API key and how to obtain one. + +## In happyDomain + +This is a domain-level checker: enable it from the domain's checks view. Listings often reflect a compromise; treat a positive result as a signal to audit the host and rotate credentials, then follow the per-operator delisting links shown in the report. For the general workflow of configuring and reading checks, see {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/blacklist.fr.md b/content/reference/checkers/blacklist.fr.md new file mode 100644 index 0000000..bc9e176 --- /dev/null +++ b/content/reference/checkers/blacklist.fr.md @@ -0,0 +1,35 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Liste noire (DNSBL) +description: "Vérifie si un domaine est actuellement listé sur des systèmes de réputation répandus : listes noires de domaines basées sur le DNS, flux de phishing/malware téléchargés et API de renseignement sur les menaces." +weight: 320 +--- + +Le vérificateur **Liste noire et réputation** signale si un domaine est actuellement listé sur des systèmes de réputation répandus. Il interroge en parallèle une série de sources et produit un rapport HTML orienté diagnostic dont la section « Action requise » liste les inscriptions les plus impactantes avec une procédure de retrait propre à chaque opérateur. + +**Portée** : niveau domaine. La vérification cible le nom de domaine lui-même, indépendamment de ses enregistrements DNS, et s'active depuis la vue des vérifications du domaine. + +## Ce qu'il vérifie + +Chaque source configurée contribue à sa propre règle ; une inscription sur l'une d'elles élève le statut du domaine. Les sources se répartissent en trois familles : + +- **Listes noires de domaines basées sur le DNS (DBL/RHSBL)** : interrogées via DNS, sans clé d'API : Spamhaus DBL, SURBL multi, URIBL multi, NordSpam DBL, SpamEatingMonkey Fresh, Tiopan DBL, SORBS RHSBL, ainsi que toute zone DNSBL supplémentaire ajoutée par un administrateur. +- **Flux de phishing/malware téléchargés** : récupérés et mis en cache en mémoire : flux public OpenPhish, PhishTank, Botvrij.eu, Disconnect.me, OISD et une comparaison avec le DNS sécurisé Quad9. +- **Recherches HTTPS de renseignement sur les menaces** : nécessitant une clé d'API configurée par un administrateur : Google Safe Browsing, abuse.ch URLhaus / ThreatFox / MalwareBazaar, VirusTotal v3, AlienVault OTX, Pulsedive, Criminal IP. + +Lorsqu'une requête DNSBL est refusée (de nombreux résolveurs publics sont bloqués par les opérateurs de DBL) ou qu'un quota d'API est épuisé, la source est rapportée comme avertissement afin de ne pas polluer le statut OK. Une source multi-fournisseurs comme VirusTotal rapporte « critique » lorsqu'au moins un fournisseur signale le domaine comme malveillant, et « avertissement » lorsqu'il est seulement suspect. + +## Options + +La seule option de niveau domaine est la cible elle-même : + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Nom de domaine (`domain_name`) | Le domaine à rechercher. Rempli automatiquement depuis le domaine. | (depuis le domaine) | + +La sélection des sources et les identifiants se configurent source par source. La plupart des sources s'activent ou se désactivent (et leurs clés d'API se renseignent) au niveau **administrateur** ; un sous-ensemble des flux téléchargés est activé par défaut et peut être basculé par l'utilisateur. Voir la documentation de chaque source pour savoir lesquelles nécessitent une clé d'API et comment l'obtenir. + +## Dans happyDomain + +C'est un vérificateur de niveau domaine : activez-le depuis la vue des vérifications du domaine. Les inscriptions reflètent souvent une compromission ; traitez un résultat positif comme un signal pour auditer l'hôte et renouveler les identifiants, puis suivez les liens de retrait propres à chaque opérateur indiqués dans le rapport. Pour le fonctionnement général de la configuration et de la lecture des vérifications, voir {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/caa.en.md b/content/reference/checkers/caa.en.md new file mode 100644 index 0000000..03b9ff2 --- /dev/null +++ b/content/reference/checkers/caa.en.md @@ -0,0 +1,42 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: CAA +description: "Cross-references the TLS certificates observed on a domain against its CAA issue/issuewild policy to detect unauthorized issuance." +weight: 150 +--- + +The **CAA Compliance** checker verifies that the TLS certificates actually deployed on a domain were issued by a Certification Authority that the domain's `CAA` records authorize. A `CAA` (Certification Authority Authorization) record lets a domain declare which CAs may issue certificates for it; this checker confirms reality matches that policy. + +This is a **service-level** checker: it runs on a `CAA` policy service. It performs **no network probes of its own** — it reads the parsed CAA policy from the service body and the TLS certificates observed by the {{< relref "/reference/checkers/dane" >}} / `checker-tls` family, then maps each observed issuer to its CAA identifier domain using the Common CA Database (CCADB). + +## What it checks + +A single rule, `caa_compliance`, loads the zone's CAA `issue` / `issuewild` policy, gathers every TLS probe observed on the target, resolves each certificate's issuer (by Authority Key Identifier, falling back to the issuer Distinguished Name) against the embedded CCADB "CAA Identifiers" mapping, and compares the result against the allow list. + +| Outcome | Meaning | Status | +|---------|---------|--------| +| `caa_ok` | Every observed issuer is authorized by the CAA policy. | OK | +| `caa_no_tls` | No TLS probes related to this target have been published yet. | Unknown | +| `caa_not_authorized` | CCADB mapped an observed issuer to a domain the policy does not list. | Critical | +| `caa_issuance_disallowed` | The policy contains `CAA 0 issue ";"` (issuance explicitly forbidden) but a certificate was still observed. | Critical | +| `caa_issuer_unknown` | CCADB has no mapping for the observed issuer (AKI + DN). | Info | + +{{% notice style="info" title="Eventual consistency with TLS probes" %}} +The `caa_no_tls` state is a normal steady state, not an error: until `checker-tls` has probed an endpoint on the target and published a certificate, the CAA checker has nothing to compare against and reports **Unknown**. Once probes arrive, the check resolves on its next run. The `caa_issuer_unknown` outcome means the CA simply isn't in the current CCADB snapshot; the fix is to file a CCADB update, not to change your zone. +{{% /notice %}} + +The issuer-to-CAA-domain mapping comes from an embedded snapshot of CCADB's "CAA Identifiers (V2)" report. Refreshing it only requires re-embedding a newer CSV and recompiling — no code change and no network dependency at build time. + +## Options + +This checker has no user-tunable options. Both inputs are filled in automatically: + +| Option | Meaning | +|--------|---------| +| Domain | The domain being checked (auto-filled, required). | +| Service | The CAA policy service body (auto-filled). | + +## In happyDomain + +Add the CAA policy service to the relevant subdomain (usually the apex), then enable this checker from that service's **Checks** tab. See {{< relref "/pages/checks" >}} for configuring and scheduling checks. For the comparison to produce a verdict, a TLS-probing checker such as {{< relref "/reference/checkers/dane" >}} (or the standalone `checker-tls`) must have observed certificates on the target. diff --git a/content/reference/checkers/caa.fr.md b/content/reference/checkers/caa.fr.md new file mode 100644 index 0000000..a0b51d3 --- /dev/null +++ b/content/reference/checkers/caa.fr.md @@ -0,0 +1,42 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: CAA +description: "Recoupe les certificats TLS observés sur un domaine avec sa politique CAA issue/issuewild pour détecter les émissions non autorisées." +weight: 150 +--- + +Le vérificateur **Conformité CAA** vérifie que les certificats TLS réellement déployés sur un domaine ont été émis par une autorité de certification que les enregistrements `CAA` du domaine autorisent. Un enregistrement `CAA` (Certification Authority Authorization) permet à un domaine de déclarer quelles autorités de certification peuvent émettre des certificats pour lui ; ce vérificateur confirme que la réalité correspond à cette politique. + +Il s'agit d'un vérificateur de **niveau service** : il s'exécute sur un service de politique `CAA`. Il n'effectue **aucune sonde réseau** : il lit la politique CAA déjà analysée dans le corps du service et les certificats TLS observés par la famille {{< relref "/reference/checkers/dane" >}} / `checker-tls`, puis associe chaque émetteur observé à son domaine d'identifiant CAA à l'aide de la base de données Common CA Database (CCADB). + +## Ce qui est vérifié + +Une seule règle, `caa_compliance`, charge la politique CAA `issue` / `issuewild` de la zone, rassemble chaque sonde TLS observée sur la cible, résout l'émetteur de chaque certificat (par Authority Key Identifier, avec repli sur le Distinguished Name de l'émetteur) à l'aide du mappage « CAA Identifiers » embarqué de CCADB, puis compare le résultat à la liste d'autorisations. + +| Résultat | Signification | Statut | +|----------|---------------|--------| +| `caa_ok` | Chaque émetteur observé est autorisé par la politique CAA. | OK | +| `caa_no_tls` | Aucune sonde TLS liée à cette cible n'a encore été publiée. | Inconnu | +| `caa_not_authorized` | CCADB a associé un émetteur observé à un domaine que la politique ne liste pas. | Critique | +| `caa_issuance_disallowed` | La politique contient `CAA 0 issue ";"` (émission explicitement interdite) mais un certificat a tout de même été observé. | Critique | +| `caa_issuer_unknown` | CCADB n'a aucun mappage pour l'émetteur observé (AKI + DN). | Info | + +{{% notice style="info" title="Cohérence à terme avec les sondes TLS" %}} +L'état `caa_no_tls` est un état stable normal, pas une erreur : tant que `checker-tls` n'a pas sondé un point d'accès sur la cible ni publié de certificat, le vérificateur CAA n'a rien à comparer et rapporte **Inconnu**. Dès que les sondes arrivent, la vérification se résout à son exécution suivante. Le résultat `caa_issuer_unknown` signifie simplement que l'autorité n'est pas dans l'instantané CCADB courant ; le correctif consiste à soumettre une mise à jour à CCADB, pas à modifier votre zone. +{{% /notice %}} + +Le mappage émetteur vers domaine CAA provient d'un instantané embarqué du rapport « CAA Identifiers (V2) » de CCADB. Le rafraîchir ne demande que de ré-embarquer un CSV plus récent et de recompiler : aucun changement de code ni dépendance réseau à la compilation. + +## Options + +Ce vérificateur n'a aucune option réglable par l'utilisateur. Ses deux entrées sont renseignées automatiquement : + +| Option | Signification | +|--------|---------------| +| Domaine | Le domaine vérifié (renseigné automatiquement, requis). | +| Service | Le corps du service de politique CAA (renseigné automatiquement). | + +## Dans happyDomain + +Ajoutez le service de politique CAA au sous-domaine concerné (généralement l'apex), puis activez ce vérificateur depuis l'onglet **Vérifications** de ce service. Consultez {{< relref "/pages/checks" >}} pour configurer et planifier les vérifications. Pour que la comparaison produise un verdict, un vérificateur de sonde TLS comme {{< relref "/reference/checkers/dane" >}} (ou le `checker-tls` autonome) doit avoir observé des certificats sur la cible. diff --git a/content/reference/checkers/dane.en.md b/content/reference/checkers/dane.en.md new file mode 100644 index 0000000..b175912 --- /dev/null +++ b/content/reference/checkers/dane.en.md @@ -0,0 +1,48 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: DANE / TLSA +description: "Matches a service's TLSA records against the certificate chain actually presented by each endpoint, per RFC 6698." +weight: 160 +--- + +The **DANE / TLSA** checker verifies that the `TLSA` records published for a service correctly pin the TLS certificate that the matching endpoint actually presents. DANE (DNS-based Authentication of Named Entities) lets a domain bind a certificate or public key to a name through DNS, secured by DNSSEC; this checker confirms the binding holds. + +This is a **service-level** checker: it runs on a `TLSAs` service. It groups the declared TLSA records by `(port, proto, base)`, publishes one TLS endpoint discovery entry per endpoint so `checker-tls` probes it, then matches each TLSA against the observed certificate chain following RFC 6698. + +## What it checks + +| Rule | What it verifies / flags | Severity | +|------|--------------------------|----------| +| `dane.has_records` | At least one TLSA record is declared on the service. | — | +| `dane.dnssec_validated` | The TLSA records were fetched via a DNSSEC-validating resolver (AD bit set). | — | +| `dane.probe_available` | A TLS probe is available for every DANE endpoint so the chain can be compared. | — | +| `dane.handshake_ok` | The TLS handshake succeeds on every DANE endpoint. | — | +| `dane.records_match_chain` | At least one TLSA record matches the certificate chain presented by each endpoint. | — | +| `dane.pkix_chain_valid` | When usages 0 or 1 are published, the chain also validates against system trust roots. | — | +| `dane.usage_coherent` | Flags TLSA records whose declared usage does not match the chain slot they actually hash (e.g. usage 3 matching an intermediate). | — | + +### How the TLSA fields are interpreted + +- **Usage 0 (PKIX-TA) / 1 (PKIX-EE)** — the TLSA must match *and* the chain must validate against the public PKIX trust roots. +- **Usage 2 (DANE-TA) / 3 (DANE-EE)** — the TLSA itself acts as the trust anchor; PKIX validity is informational. +- **Selector** 0 (full certificate) or 1 (Subject Public Key Info), and **matching type** 0 (full) / 1 (SHA-256) / 2 (SHA-512), are matched against the chain slot implied by the usage. + +{{% notice style="info" title="DANE relies on DNSSEC" %}} +DANE is only trustworthy when the TLSA records are served from a DNSSEC-signed zone and validated by the resolver. The `dane.dnssec_validated` rule checks that the records arrived with the AD (Authenticated Data) bit set; without DNSSEC, a TLSA record could be forged and the whole binding is meaningless. +{{% /notice %}} + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Probe timeout (ms) | Forwarded to `checker-tls` as the per-endpoint TLS probe timeout. | `checker-tls` default | +| STARTTLS override | A map keyed by `"/"` overriding the STARTTLS application used when probing. Common STARTTLS ports (25, 110, 143, 389, 587, 5222, 5269) are auto-mapped; set this only for non-standard ports. | (auto) | + +The domain, subdomain and TLSAs service are filled in automatically. + +## In happyDomain + +Add the TLSA service to the subdomain, then enable this checker from that service's **Checks** tab. See {{< relref "/pages/checks" >}} for configuring and scheduling checks. The checker publishes its endpoints for `checker-tls` to probe, so allow a probe cycle before the first match result appears. + +Related checker: {{< relref "/reference/checkers/caa" >}} verifies, on the same certificates, that the issuing CA was authorized by the domain's CAA policy. diff --git a/content/reference/checkers/dane.fr.md b/content/reference/checkers/dane.fr.md new file mode 100644 index 0000000..0f5b8bd --- /dev/null +++ b/content/reference/checkers/dane.fr.md @@ -0,0 +1,48 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: DANE / TLSA +description: "Compare les enregistrements TLSA d'un service à la chaîne de certificats réellement présentée par chaque point d'accès, selon la RFC 6698." +weight: 160 +--- + +Le vérificateur **DANE / TLSA** vérifie que les enregistrements `TLSA` publiés pour un service épinglent correctement le certificat TLS que le point d'accès correspondant présente réellement. DANE (DNS-based Authentication of Named Entities) permet à un domaine de lier un certificat ou une clé publique à un nom via le DNS, sécurisé par DNSSEC ; ce vérificateur confirme que la liaison tient. + +Il s'agit d'un vérificateur de **niveau service** : il s'exécute sur un service `TLSAs`. Il regroupe les enregistrements TLSA déclarés par `(port, proto, base)`, publie une entrée de découverte de point d'accès TLS par point d'accès afin que `checker-tls` le sonde, puis compare chaque TLSA à la chaîne de certificats observée selon la RFC 6698. + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié ou signalé | Sévérité | +|-------|-------------------------------|----------| +| `dane.has_records` | Au moins un enregistrement TLSA est déclaré sur le service. | variable | +| `dane.dnssec_validated` | Les enregistrements TLSA ont été récupérés via un résolveur validant DNSSEC (bit AD positionné). | variable | +| `dane.probe_available` | Une sonde TLS est disponible pour chaque point d'accès DANE afin de comparer la chaîne. | variable | +| `dane.handshake_ok` | La poignée de main TLS réussit sur chaque point d'accès DANE. | variable | +| `dane.records_match_chain` | Au moins un enregistrement TLSA correspond à la chaîne de certificats présentée par chaque point d'accès. | variable | +| `dane.pkix_chain_valid` | Lorsque les usages 0 ou 1 sont publiés, la chaîne se valide aussi face aux racines de confiance du système. | variable | +| `dane.usage_coherent` | Signale les TLSA dont l'usage déclaré ne correspond pas à l'emplacement de chaîne qu'ils hachent réellement (par exemple un usage 3 correspondant à un intermédiaire). | variable | + +### Interprétation des champs TLSA + +- **Usage 0 (PKIX-TA) / 1 (PKIX-EE)** : le TLSA doit correspondre *et* la chaîne doit se valider face aux racines de confiance PKIX publiques. +- **Usage 2 (DANE-TA) / 3 (DANE-EE)** : le TLSA fait lui-même office d'ancre de confiance ; la validité PKIX est informative. +- Le **sélecteur** 0 (certificat complet) ou 1 (Subject Public Key Info), et le **type de correspondance** 0 (complet) / 1 (SHA-256) / 2 (SHA-512), sont comparés à l'emplacement de chaîne impliqué par l'usage. + +{{% notice style="info" title="DANE repose sur DNSSEC" %}} +DANE n'est digne de confiance que si les enregistrements TLSA proviennent d'une zone signée DNSSEC et sont validés par le résolveur. La règle `dane.dnssec_validated` vérifie que les enregistrements sont arrivés avec le bit AD (Authenticated Data) positionné ; sans DNSSEC, un enregistrement TLSA pourrait être falsifié et toute la liaison perd son sens. +{{% /notice %}} + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Délai de sonde (ms) | Transmis à `checker-tls` comme délai d'expiration de la sonde TLS par point d'accès. | défaut de `checker-tls` | +| Surcharge STARTTLS | Une table indexée par `"/"` surchargeant l'application STARTTLS utilisée lors de la sonde. Les ports STARTTLS courants (25, 110, 143, 389, 587, 5222, 5269) sont associés automatiquement ; ne renseignez ceci que pour des ports non standard. | (auto) | + +Le domaine, le sous-domaine et le service TLSAs sont renseignés automatiquement. + +## Dans happyDomain + +Ajoutez le service TLSA au sous-domaine, puis activez ce vérificateur depuis l'onglet **Vérifications** de ce service. Consultez {{< relref "/pages/checks" >}} pour configurer et planifier les vérifications. Le vérificateur publie ses points d'accès pour que `checker-tls` les sonde : laissez donc passer un cycle de sonde avant l'apparition du premier résultat de correspondance. + +Vérificateur apparenté : {{< relref "/reference/checkers/caa" >}} vérifie, sur les mêmes certificats, que l'autorité émettrice était bien autorisée par la politique CAA du domaine. diff --git a/content/reference/checkers/dangling.en.md b/content/reference/checkers/dangling.en.md new file mode 100644 index 0000000..b05ca15 --- /dev/null +++ b/content/reference/checkers/dangling.en.md @@ -0,0 +1,42 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Dangling records +description: "Scans a zone for CNAME/MX/SRV/NS records whose targets resolve to NXDOMAIN or whose external domain has expired and could be re-registered." +weight: 140 +--- + +The **Dangling subdomains** checker scans a zone for pointer records (`CNAME`, `MX`, `SRV`, `NS`) whose targets have gone stale: they resolve to NXDOMAIN, or their external registrable domain has expired, is in `pendingDelete`, or was recently re-registered. This is the subdomain-takeover attack class popularised in 2017, where institutions ended up serving hostile content from CNAMEs pointing at decommissioned third-party services after attackers re-registered the lapsed targets. + +This is a **zone-level** checker: it needs the full zone content and runs a single pass over it, consolidating findings by owner rather than producing one result per record. + +## What it checks + +The checker walks every service in the working zone and extracts pointer records from `CNAME`, special CNAME, `MX`, unknown `SRV` and orphan (bare `NS`/`CNAME`/`MX`) bodies. For each `(owner, type, target)` triple it classifies the target as in-zone or external (relative to the zone's registrable domain), performs a single time-bounded DNS resolution to detect immediate breakage, and publishes a discovery entry so a companion `domain_expiry` checker can run RDAP/WHOIS on external targets. + +It emits one finding per impacted owner, ranked by descending severity: + +| Signal | Severity | Source | +|--------|----------|--------| +| Target NXDOMAIN | Critical | Local DNS resolution | +| Target SERVFAIL | Warning | Local DNS resolution | +| Target NOERROR with empty answer | Info | Local DNS resolution | +| Registrable domain expired | Critical | `whois` related observation | +| Registrable status `pendingDelete` / `redemptionPeriod` | Critical | `whois` related observation | +| Registrable domain registered within the last 90 days | Warning | `whois` related observation | + +{{% notice style="info" title="WHOIS signals need a companion checker" %}} +The DNS-resolution signals (NXDOMAIN, SERVFAIL, empty answer) work on their own. The WHOIS-driven signals (expired, `pendingDelete`, recently registered) only fire when the host's `domain_expiry` checker subscribes to this checker's external-target discovery entries and publishes a per-target `whois` observation. Without that wiring, the checker still works as a DNS-only dangling detector. +{{% /notice %}} + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Skip live DNS resolution | When set, the checker only reports the static structure of pointer records (offline analysis), without resolving targets. | `false` | + +## In happyDomain + +Enable this checker on the domain from the {{< relref "/pages/checks" >}} view; the domain name and zone content are filled in automatically. Because it is zone-scoped, it runs over the whole zone in a single pass. + +Related checkers: {{< relref "/reference/checkers/alias" >}} validates the structure of individual alias chains, and {{< relref "/reference/checkers/domain-expiry" >}} watches your own domains' expiry — the same WHOIS machinery that powers this checker's external-target signals. diff --git a/content/reference/checkers/dangling.fr.md b/content/reference/checkers/dangling.fr.md new file mode 100644 index 0000000..17ea1db --- /dev/null +++ b/content/reference/checkers/dangling.fr.md @@ -0,0 +1,42 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Enregistrements orphelins +description: "Analyse une zone à la recherche d'enregistrements CNAME/MX/SRV/NS dont la cible renvoie NXDOMAIN ou dont le domaine externe a expiré et pourrait être ré-enregistré." +weight: 140 +--- + +Le vérificateur **Sous-domaines orphelins** analyse une zone à la recherche d'enregistrements pointeurs (`CNAME`, `MX`, `SRV`, `NS`) dont les cibles sont devenues obsolètes : elles renvoient NXDOMAIN, ou leur domaine enregistrable externe a expiré, est en `pendingDelete`, ou a été ré-enregistré récemment. C'est la classe d'attaques par prise de contrôle de sous-domaine popularisée en 2017, où des institutions ont fini par servir du contenu hostile depuis des CNAME pointant vers des services tiers désaffectés, après que des attaquants eurent ré-enregistré les cibles libérées. + +Il s'agit d'un vérificateur de **niveau zone** : il nécessite le contenu complet de la zone et la parcourt en une seule passe, consolidant les constats par propriétaire plutôt que de produire un résultat par enregistrement. + +## Ce qui est vérifié + +Le vérificateur parcourt chaque service de la zone de travail et extrait les enregistrements pointeurs des corps `CNAME`, CNAME spécial, `MX`, `SRV` inconnu et orphelin (enregistrements `NS`/`CNAME`/`MX` nus). Pour chaque triplet `(propriétaire, type, cible)`, il classe la cible comme interne ou externe à la zone (par rapport au domaine enregistrable de la zone), effectue une résolution DNS unique et bornée dans le temps pour détecter une rupture immédiate, et publie une entrée de découverte afin qu'un vérificateur `domain_expiry` compagnon puisse lancer une requête RDAP/WHOIS sur les cibles externes. + +Il émet un constat par propriétaire concerné, classé par sévérité décroissante : + +| Signal | Sévérité | Source | +|--------|----------|--------| +| Cible NXDOMAIN | Critique | Résolution DNS locale | +| Cible SERVFAIL | Avertissement | Résolution DNS locale | +| Cible NOERROR avec réponse vide | Info | Résolution DNS locale | +| Domaine enregistrable expiré | Critique | Observation `whois` apparentée | +| Statut enregistrable `pendingDelete` / `redemptionPeriod` | Critique | Observation `whois` apparentée | +| Domaine enregistrable créé au cours des 90 derniers jours | Avertissement | Observation `whois` apparentée | + +{{% notice style="info" title="Les signaux WHOIS nécessitent un vérificateur compagnon" %}} +Les signaux issus de la résolution DNS (NXDOMAIN, SERVFAIL, réponse vide) fonctionnent seuls. Les signaux issus du WHOIS (expiré, `pendingDelete`, créé récemment) ne se déclenchent que lorsque le vérificateur `domain_expiry` de l'hôte s'abonne aux entrées de découverte de cibles externes de ce vérificateur et publie une observation `whois` par cible. Sans ce câblage, le vérificateur fonctionne tout de même comme un détecteur d'orphelins basé uniquement sur le DNS. +{{% /notice %}} + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Ignorer la résolution DNS en direct | Lorsqu'elle est activée, le vérificateur ne rapporte que la structure statique des enregistrements pointeurs (analyse hors ligne), sans résoudre les cibles. | `false` | + +## Dans happyDomain + +Activez ce vérificateur sur le domaine depuis la vue {{< relref "/pages/checks" >}} ; le nom de domaine et le contenu de la zone sont renseignés automatiquement. Étant de niveau zone, il s'exécute sur l'ensemble de la zone en une seule passe. + +Vérificateurs apparentés : {{< relref "/reference/checkers/alias" >}} valide la structure des chaînes d'alias individuelles, et {{< relref "/reference/checkers/domain-expiry" >}} surveille l'expiration de vos propres domaines, avec la même mécanique WHOIS qui alimente les signaux de cibles externes de ce vérificateur. diff --git a/content/reference/checkers/dav.en.md b/content/reference/checkers/dav.en.md new file mode 100644 index 0000000..6760a7e --- /dev/null +++ b/content/reference/checkers/dav.en.md @@ -0,0 +1,48 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: CalDAV / CardDAV +description: "Discovers and probes a domain's CalDAV and CardDAV servers: well-known/SRV discovery, HTTPS reachability, advertised DAV capabilities, and (with credentials) the authenticated principal, home-set, collections and REPORT flow." +weight: 240 +--- + +The **CalDAV** and **CardDAV** checkers verify that a domain's calendar (RFC 4791) and contacts (RFC 6352) servers are discoverable, reachable, and correctly advertise the WebDAV extensions that clients rely on. They are two distinct checkers sharing the same logic: `caldav` attaches to a *CalDAV* service (`abstract.CalDAV`), `carddav` to a *CardDAV* service (`abstract.CardDAV`). The only behavioural difference is the required DAV capability (`calendar-access` vs `addressbook`) and a CalDAV-only scheduling check. + +Both checkers are **service-level**: they target the corresponding service published on a subdomain and are configured from that service's own **Checks** tab. Discovery follows RFC 6764: the checker resolves a context URL from `/.well-known/{caldav,carddav}` and from `_caldavs._tcp` / `_carddavs._tcp` SRV records (with an optional `path=` TXT hint), then probes that endpoint. + +When no credentials are supplied, only the anonymous phase runs (discovery, transport, OPTIONS). Supplying a username and password unlocks the authenticated phase: principal discovery, home-set, collection enumeration and the REPORT probe. + +{{% notice style="info" title="TLS posture is out of scope" %}} +These checkers confirm only that an HTTPS session can be established to the context URL. Certificate validation (chain, hostname, expiry, ciphers) is deliberately left to the dedicated TLS checker. See {{< relref "/reference/checkers/tls" >}}. +{{% /notice %}} + +## What it checks + +| Rule | What it verifies | Conditions | +|---|---|---| +| `dav_discovery` | A context URL resolves via `/.well-known` or SRV. | **Critical** if no context URL can be resolved. **Warning** when `/.well-known` returns `200` instead of a `301`/`302` redirect (legal but many clients won't follow it). **Info** when the URL was resolved via SRV but `/.well-known` is broken. | +| `dav_transport` | The HTTPS connection to the context URL is reachable. | **Critical** if the connection fails. | +| `dav_options` | An HTTP `OPTIONS` request advertises the required DAV capability (`calendar-access` for CalDAV, `addressbook` for CardDAV) and the `PROPFIND`/`REPORT` methods. | **Critical** if OPTIONS fails or the capability is missing. **Warning** if the `Allow` header lacks `PROPFIND` or `REPORT`. | +| `dav_principal` | The current-user principal URL is discovered via authenticated `PROPFIND`. | **Critical** on failure. **Unknown** when no credentials are supplied (phase skipped). | +| `dav_home_set` | The calendar/addressbook home-set is discovered from the principal. | **Critical** on failure. **Unknown** when skipped. | +| `dav_collections` | Calendar/addressbook collections enumerate and expose their properties (supported component set, supported address data, display name…). | **Critical** on failure. **Warning** if the home-set is empty. **Unknown** when skipped. | +| `dav_report` | The server accepts a minimal `calendar-query` / `addressbook-query` `REPORT` against the first collection. | **Critical** on failure. **Warning** if the query returns an unexpected response. **Unknown** when skipped. | +| `caldav_scheduling` | *(CalDAV only)* When `calendar-schedule` is advertised, the principal exposes `schedule-inbox-URL` and `schedule-outbox-URL`. | **Warning** if advertised but the URLs are missing or the probe fails. **Info** when scheduling is not advertised. **Unknown** when skipped. | + +The HTML report surfaces the most common misconfigurations as callouts: `/.well-known` returning `200`, no SRV and no well-known (service unreachable), a plaintext SRV record without a secure counterpart, a server not advertising the required DAV class, and the authenticated phase being skipped for lack of credentials. + +## Options + +Both checkers accept the same options. + +| Option | Meaning | Default | +|---|---|---| +| Username | Optional. Supplying credentials unlocks the authenticated checks (principal, home-set, collections, REPORT probe). | *(empty)* | +| Password or token | Optional. Paired with the username for HTTP Basic authentication. | *(empty)* | +| Explicit context URL | Optional. Bypasses `/.well-known` and SRV discovery; use for servers with a non-standard layout. | *(empty)* | +| Domain name | The domain to probe (auto-filled from the service scope). | *(auto)* | +| Timeout (seconds) | Per-request HTTP timeout. | `10` | + +## In happyDomain + +Enable the CalDAV or CardDAV checker from the **Checks** tab of a CalDAV or CardDAV service. The domain name is filled in automatically; add credentials only if you want the authenticated collection and REPORT checks to run. See {{< relref "/pages/checks" >}} for the full workflow, and {{< relref "/reference/checkers/tls" >}} for the certificate posture of the same endpoints. diff --git a/content/reference/checkers/dav.fr.md b/content/reference/checkers/dav.fr.md new file mode 100644 index 0000000..51cf53d --- /dev/null +++ b/content/reference/checkers/dav.fr.md @@ -0,0 +1,48 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: CalDAV / CardDAV +description: "Découvre et sonde les serveurs CalDAV et CardDAV d'un domaine : découverte via well-known/SRV, accessibilité HTTPS, capacités DAV annoncées et (avec des identifiants) le parcours authentifié principal, home-set, collections et REPORT." +weight: 240 +--- + +Les vérificateurs **CalDAV** et **CardDAV** vérifient que les serveurs de calendrier (RFC 4791) et de contacts (RFC 6352) d'un domaine sont découvrables, accessibles, et annoncent correctement les extensions WebDAV sur lesquelles s'appuient les clients. Il s'agit de deux vérificateurs distincts partageant la même logique : `caldav` s'attache à un service *CalDAV* (`abstract.CalDAV`), `carddav` à un service *CardDAV* (`abstract.CardDAV`). La seule différence de comportement porte sur la capacité DAV requise (`calendar-access` contre `addressbook`) et sur une vérification de planification propre à CalDAV. + +Les deux vérificateurs sont de **niveau service** : ils ciblent le service correspondant publié sur un sous-domaine et se configurent depuis l'onglet **Vérifications** de ce service. La découverte suit la RFC 6764 : le vérificateur résout une URL de contexte à partir de `/.well-known/{caldav,carddav}` et des enregistrements SRV `_caldavs._tcp` / `_carddavs._tcp` (avec un indice TXT `path=` facultatif), puis sonde ce point d'accès. + +Lorsqu'aucun identifiant n'est fourni, seule la phase anonyme s'exécute (découverte, transport, OPTIONS). Fournir un nom d'utilisateur et un mot de passe déverrouille la phase authentifiée : découverte du principal, home-set, énumération des collections et sonde REPORT. + +{{% notice style="info" title="La posture TLS est hors périmètre" %}} +Ces vérificateurs confirment uniquement qu'une session HTTPS peut être établie vers l'URL de contexte. La validation du certificat (chaîne, nom d'hôte, expiration, algorithmes) est volontairement laissée au vérificateur TLS dédié. Consultez {{< relref "/reference/checkers/tls" >}}. +{{% /notice %}} + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié | Conditions | +|---|---|---| +| `dav_discovery` | Une URL de contexte se résout via `/.well-known` ou SRV. | **Critique** si aucune URL de contexte ne peut être résolue. **Avertissement** quand `/.well-known` renvoie `200` au lieu d'une redirection `301`/`302` (légal mais beaucoup de clients ne la suivent pas). **Info** quand l'URL a été résolue via SRV mais que `/.well-known` est cassé. | +| `dav_transport` | La connexion HTTPS vers l'URL de contexte est accessible. | **Critique** si la connexion échoue. | +| `dav_options` | Une requête HTTP `OPTIONS` annonce la capacité DAV requise (`calendar-access` pour CalDAV, `addressbook` pour CardDAV) et les méthodes `PROPFIND`/`REPORT`. | **Critique** si OPTIONS échoue ou si la capacité manque. **Avertissement** si l'en-tête `Allow` ne contient pas `PROPFIND` ou `REPORT`. | +| `dav_principal` | L'URL du principal de l'utilisateur courant est découverte via un `PROPFIND` authentifié. | **Critique** en cas d'échec. **Inconnu** si aucun identifiant n'est fourni (phase ignorée). | +| `dav_home_set` | Le home-set calendrier/carnet d'adresses est découvert depuis le principal. | **Critique** en cas d'échec. **Inconnu** si ignoré. | +| `dav_collections` | Les collections calendrier/carnet d'adresses s'énumèrent et exposent leurs propriétés (jeu de composants pris en charge, données d'adresse prises en charge, nom affiché...). | **Critique** en cas d'échec. **Avertissement** si le home-set est vide. **Inconnu** si ignoré. | +| `dav_report` | Le serveur accepte une requête `REPORT` minimale (`calendar-query` / `addressbook-query`) sur la première collection. | **Critique** en cas d'échec. **Avertissement** si la requête renvoie une réponse inattendue. **Inconnu** si ignoré. | +| `caldav_scheduling` | *(CalDAV uniquement)* Lorsque `calendar-schedule` est annoncé, le principal expose `schedule-inbox-URL` et `schedule-outbox-URL`. | **Avertissement** si annoncé mais que les URL manquent ou que la sonde échoue. **Info** quand la planification n'est pas annoncée. **Inconnu** si ignoré. | + +Le rapport HTML met en avant les erreurs de configuration les plus courantes sous forme d'encarts : `/.well-known` renvoyant `200`, absence de SRV et de well-known (service inaccessible), un enregistrement SRV en clair sans équivalent sécurisé, un serveur n'annonçant pas la classe DAV requise, et la phase authentifiée ignorée faute d'identifiants. + +## Options + +Les deux vérificateurs acceptent les mêmes options. + +| Option | Signification | Défaut | +|---|---|---| +| Nom d'utilisateur | Facultatif. Fournir des identifiants déverrouille les vérifications authentifiées (principal, home-set, collections, sonde REPORT). | *(vide)* | +| Mot de passe ou jeton | Facultatif. Associé au nom d'utilisateur pour l'authentification HTTP Basic. | *(vide)* | +| URL de contexte explicite | Facultatif. Contourne la découverte `/.well-known` et SRV ; à utiliser pour les serveurs à la disposition non standard. | *(vide)* | +| Nom de domaine | Le domaine à sonder (renseigné automatiquement depuis la portée du service). | *(auto)* | +| Délai d'attente (secondes) | Délai d'attente HTTP par requête. | `10` | + +## Dans happyDomain + +Activez le vérificateur CalDAV ou CardDAV depuis l'onglet **Vérifications** d'un service CalDAV ou CardDAV. Le nom de domaine est renseigné automatiquement ; ajoutez des identifiants uniquement si vous souhaitez exécuter les vérifications authentifiées des collections et de REPORT. Consultez {{< relref "/pages/checks" >}} pour le fonctionnement complet, et {{< relref "/reference/checkers/tls" >}} pour la posture des certificats de ces mêmes points d'accès. diff --git a/content/reference/checkers/delegation.en.md b/content/reference/checkers/delegation.en.md new file mode 100644 index 0000000..abb098d --- /dev/null +++ b/content/reference/checkers/delegation.en.md @@ -0,0 +1,69 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Delegation +description: "Audits a zone's delegation: NS consistency between parent and child, glue correctness, DS/DNSKEY hand-off, reachability and authoritativeness of each delegated server." +weight: 70 +--- + +The **Delegation** checker audits how a zone is delegated from its parent. It cross-examines the parent zone and the child name servers to confirm that the hand-off is coherent: that the parent and child agree on the `NS` set, that glue records are correct, that the DNSSEC `DS`/`DNSKEY` chain lines up, and that every delegated server is reachable and actually authoritative for the zone. + +This checker is **service-level**: it targets a *Delegation* service (`abstract.Delegation`) published on a subdomain, and is configured from that service's own **Checks** tab. + +## What it checks + +Each rule emits a stable finding `code` so results can be matched deterministically. + +### Name-server count and parent discovery + +| Finding code | What it verifies | +|---|---| +| `delegation_too_few_ns` | The zone declares at least `minNameServers` `NS` records (RFC 1034 recommends ≥ 2). | +| `delegation_no_parent_ns` | The parent zone and its authoritative name servers can be discovered. | +| `delegation_parent_query_failed` | Each parent name server answers the `NS` query for the delegated zone. | +| `delegation_parent_tcp_failed` | Each parent name server is reachable over TCP (RFC 7766). | + +### NS and glue at the parent + +| Finding code | What it verifies | +|---|---| +| `delegation_ns_mismatch` | The `NS` RRset at the parent matches the `NS` set declared by the service. | +| `delegation_missing_glue` | In-bailiwick name servers have glue (`A`/`AAAA`) at the parent. | +| `delegation_unnecessary_glue` | Out-of-bailiwick name servers do not carry unnecessary glue. | + +### DNSSEC hand-off + +| Finding code | What it verifies | +|---|---| +| `delegation_ds_query_failed` | The `DS` RRset can be queried from the parent name servers. | +| `delegation_ds_mismatch` | The `DS` RRset at the parent matches the `DS` set declared by the service. | +| `delegation_ds_missing` | `DS` records are present at the parent when DNSSEC is expected (gated by `requireDS`). | +| `delegation_ds_rrsig_invalid` | The `DS` RRset is covered by a valid `RRSIG` at the parent. | +| `delegation_dnskey_query_failed` | The `DNSKEY` RRset can be queried from each child name server. | +| `delegation_dnskey_no_match` | At least one child `DNSKEY` matches a `DS` digest published at the parent. | + +### Child reachability and authoritativeness + +| Finding code | What it verifies | +|---|---| +| `delegation_ns_unresolvable` | Each declared name server name resolves to at least one address. | +| `delegation_unreachable` | Each child name server answers DNS queries on its advertised addresses. | +| `delegation_lame` | Each child name server is authoritative for the zone (no lame delegation). | +| `delegation_no_authoritative_answer` | Each child name server sets the AA flag in its answers for the zone. | +| `delegation_tcp_failed` | Each child name server answers over TCP (gated by `requireTCP`). | +| `delegation_soa_serial_drift` | The `SOA` serial is consistent across all child name servers. | +| `delegation_ns_drift` | The `NS` RRset returned by each child matches the `NS` RRset at the parent. | +| `delegation_glue_mismatch` | Glue addresses at the child match those at the parent (gated by `allowGlueMismatch`). | + +## Options + +| Option | Meaning | Default | +|---|---|---| +| `requireDS` | When enabled, missing `DS` records at the parent are treated as critical (otherwise informational). | `false` | +| `requireTCP` | When enabled, name servers that fail to answer over TCP are reported as critical (otherwise warning). | `true` | +| `minNameServers` | Below this count, the delegation is reported as a warning (RFC 1034 recommends at least 2). | `2` | +| `allowGlueMismatch` | When disabled, glue/address mismatches between parent and child are reported as critical. | `false` | + +## In happyDomain + +Enable the Delegation checker from the **Checks** tab of a Delegation service. See {{< relref "/pages/checks" >}} for the full workflow. For consistency *between* the authoritative servers of the apex itself (rather than the parent/child hand-off), see {{< relref "/reference/checkers/authoritative-consistency" >}}; for the DNSSEC hygiene of the signed zone, see {{< relref "/reference/checkers/dnssec" >}}. diff --git a/content/reference/checkers/delegation.fr.md b/content/reference/checkers/delegation.fr.md new file mode 100644 index 0000000..4760002 --- /dev/null +++ b/content/reference/checkers/delegation.fr.md @@ -0,0 +1,69 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Délégation +description: "Audite la délégation d'une zone : cohérence des NS entre parent et enfant, exactitude des glue, passage de relais DS/DNSKEY, joignabilité et autorité de chaque serveur délégué." +weight: 70 +--- + +Le vérificateur **Délégation** audite la façon dont une zone est déléguée depuis son parent. Il confronte la zone parente et les serveurs de noms enfants pour confirmer la cohérence du passage de relais : le parent et l'enfant s'accordent sur l'ensemble des `NS`, les enregistrements de glue sont corrects, la chaîne DNSSEC `DS`/`DNSKEY` est alignée, et chaque serveur délégué est joignable et réellement faisant autorité pour la zone. + +Ce vérificateur s'applique au niveau du **service** : il cible un service de délégation (`abstract.Delegation`) publié sur un sous-domaine, et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qu'il vérifie + +Chaque règle émet un `code` de constat stable, afin que les résultats puissent être appariés de façon déterministe. + +### Nombre de serveurs de noms et découverte du parent + +| Code de constat | Ce qui est vérifié | +|---|---| +| `delegation_too_few_ns` | La zone déclare au moins `minNameServers` enregistrements `NS` (la RFC 1034 recommande ≥ 2). | +| `delegation_no_parent_ns` | La zone parente et ses serveurs faisant autorité peuvent être découverts. | +| `delegation_parent_query_failed` | Chaque serveur de noms parent répond à la requête `NS` pour la zone déléguée. | +| `delegation_parent_tcp_failed` | Chaque serveur de noms parent est joignable en TCP (RFC 7766). | + +### NS et glue au parent + +| Code de constat | Ce qui est vérifié | +|---|---| +| `delegation_ns_mismatch` | Le RRset `NS` au parent correspond à l'ensemble `NS` déclaré par le service. | +| `delegation_missing_glue` | Les serveurs de noms dans le bailliage disposent de glue (`A`/`AAAA`) au parent. | +| `delegation_unnecessary_glue` | Les serveurs de noms hors bailliage ne portent pas de glue superflue. | + +### Passage de relais DNSSEC + +| Code de constat | Ce qui est vérifié | +|---|---| +| `delegation_ds_query_failed` | Le RRset `DS` peut être interrogé auprès des serveurs de noms parents. | +| `delegation_ds_mismatch` | Le RRset `DS` au parent correspond à l'ensemble `DS` déclaré par le service. | +| `delegation_ds_missing` | Des enregistrements `DS` sont présents au parent lorsque DNSSEC est attendu (conditionné par `requireDS`). | +| `delegation_ds_rrsig_invalid` | Le RRset `DS` est couvert par un `RRSIG` valide au parent. | +| `delegation_dnskey_query_failed` | Le RRset `DNSKEY` peut être interrogé auprès de chaque serveur de noms enfant. | +| `delegation_dnskey_no_match` | Au moins un `DNSKEY` enfant correspond à un condensat `DS` publié au parent. | + +### Joignabilité et autorité des serveurs enfants + +| Code de constat | Ce qui est vérifié | +|---|---| +| `delegation_ns_unresolvable` | Chaque nom de serveur déclaré se résout en au moins une adresse. | +| `delegation_unreachable` | Chaque serveur de noms enfant répond aux requêtes DNS sur ses adresses annoncées. | +| `delegation_lame` | Chaque serveur de noms enfant fait autorité pour la zone (pas de délégation boiteuse). | +| `delegation_no_authoritative_answer` | Chaque serveur de noms enfant positionne le drapeau AA dans ses réponses pour la zone. | +| `delegation_tcp_failed` | Chaque serveur de noms enfant répond en TCP (conditionné par `requireTCP`). | +| `delegation_soa_serial_drift` | Le numéro de série `SOA` est cohérent entre tous les serveurs de noms enfants. | +| `delegation_ns_drift` | Le RRset `NS` renvoyé par chaque enfant correspond au RRset `NS` au parent. | +| `delegation_glue_mismatch` | Les adresses de glue chez l'enfant correspondent à celles du parent (conditionné par `allowGlueMismatch`). | + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| `requireDS` | Si activé, l'absence de `DS` au parent est traitée comme critique (sinon informative). | `false` | +| `requireTCP` | Si activé, les serveurs de noms qui ne répondent pas en TCP sont signalés comme critiques (sinon en avertissement). | `true` | +| `minNameServers` | En dessous de ce nombre, la délégation est signalée en avertissement (la RFC 1034 recommande au moins 2). | `2` | +| `allowGlueMismatch` | Si désactivé, les divergences de glue/adresses entre parent et enfant sont signalées comme critiques. | `false` | + +## Dans happyDomain + +Activez le vérificateur Délégation depuis l'onglet **Vérifications** d'un service de délégation. Consultez {{< relref "/pages/checks" >}} pour le déroulé complet. Pour la cohérence *entre* les serveurs faisant autorité de l'apex lui-même (plutôt que le passage de relais parent/enfant), voyez {{< relref "/reference/checkers/authoritative-consistency" >}} ; pour l'hygiène DNSSEC de la zone signée, voyez {{< relref "/reference/checkers/dnssec" >}}. diff --git a/content/reference/checkers/dnssec.en.md b/content/reference/checkers/dnssec.en.md new file mode 100644 index 0000000..8c29c65 --- /dev/null +++ b/content/reference/checkers/dnssec.en.md @@ -0,0 +1,80 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: DNSSEC validation +description: "Audits the operational hygiene of a signed zone: algorithms, key sizes, signature freshness, NSEC/NSEC3 parameters and per-name-server consistency." +weight: 60 +--- + +The **DNSSEC** checker audits the *operational hygiene* of a signed zone. It does not re-validate the cryptographic chain of trust end to end (that work is delegated to a dedicated DNSViz-based checker); instead it focuses on the policy and day-to-day operational aspects of signing: which algorithms and key sizes are in use, whether signatures are fresh and valid, how negative answers are denied (NSEC vs NSEC3), and whether every authoritative server serves a consistent view. + +This checker is **domain-level**: it operates on the zone apex. From a bootstrap recursive resolver it discovers the apex name servers and looks up the parent `DS`, then queries each authoritative server directly. + +## What it checks + +The checker evaluates the following rules. Several of them are governed by the options described further down. + +### Chain and key material + +| Rule | Verifies | Severity | +|---|---|---| +| `dnssec_zone_signed` | The parent advertises a `DS` but the apex serves no `DNSKEY` (a broken signed zone). | Critical | +| `dnssec_dnskey_consistent` | Every authoritative server returns the same `DNSKEY` RRset. | Critical | +| `dnssec_dnskey_query_ok` | Every authoritative server answered the `DNSKEY` query. | Critical | +| `dnssec_ksk_present` | At least one `DNSKEY` carries the SEP bit (a Key Signing Key). | Critical | +| `dnssec_dnskey_count` | Warns when too many `DNSKEY`s are published, inflating responses and amplification potential. | Warning | + +### Algorithms and key strength + +| Rule | Verifies | Severity | +|---|---|---| +| `dnssec_algorithm_allowed` | No `DNSKEY` uses a forbidden algorithm or one outside the allowed list. | Critical | +| `dnssec_algorithm_modern` | Recommends ECDSAP256SHA256 (13) or Ed25519 (15) over RSA. | Warning | +| `dnssec_rsa_keysize` | RSA `DNSKEY`s reach the minimum modulus size. | Critical | + +### Signatures + +| Rule | Verifies | Severity | +|---|---|---| +| `dnssec_rrsig_present_dnskey` | The `DNSKEY` RRset is signed. | Critical | +| `dnssec_rrsig_present_soa` | The `SOA` RRset is signed. | Critical | +| `dnssec_rrsig_validity_window` | Every observed `RRSIG` is currently within its inception/expiration window. | Critical | +| `dnssec_rrsig_freshness` | Pre-emptive alert when `RRSIG`s are close to expiring (catches stuck signers). | Critical | + +### Denial of existence (NSEC / NSEC3) + +| Rule | Verifies | Severity | +|---|---|---| +| `dnssec_denial_uses_nsec3` | Warns when the zone uses bare NSEC, which makes the zone walkable (RFC 5155 / RFC 7129). | Warning | +| `dnssec_nsec3_iterations` | `NSEC3PARAM.Iterations` is at most the configured ceiling (RFC 9276 §3.1 recommends 0). | Critical | +| `dnssec_nsec3_salt_empty` | `NSEC3PARAM.SaltLength` is 0 (RFC 9276 §3.1: a salt buys no measurable protection). | Warning | +| `dnssec_nsec3_optout_only_when_signed_delegations` | Informational note when the OPT-OUT flag is set in a leaf zone. | Info | +| `dnssec_denial_consistent` | Every authoritative server uses the same denial-of-existence scheme. | Warning | + +### TTL hygiene + +| Rule | Verifies | Severity | +|---|---|---| +| `dnssec_dnskey_ttl_min` | Warns when the `DNSKEY` TTL is too short to be useful for caching. | Warning | + +## Options + +| Option | Meaning | Default | +|---|---|---| +| `nsec3IterationsMax` | RFC 9276 §3.1 ceiling on `NSEC3PARAM.Iterations`. Raise only if your signer cannot publish 0 yet. | `0` | +| `nsec3IterationsSeverity` | Severity when iterations exceed the ceiling. Set `crit` to enforce RFC 9276 strictly. | `warn` | +| `signatureFreshness` | Warn when the closest `RRSIG` expires in fewer than this many days. | `7` | +| `signatureFreshnessCrit` | Critical when the closest `RRSIG` expires in fewer than this many days. | `1` | +| `minRSAKeySize` | Minimum acceptable RSA modulus size, in bits. | `2048` | +| `requireSEP` | Require at least one `DNSKEY` with the SEP bit (KSK). | `true` | +| `dnskeyTTLMin` | Minimum `DNSKEY` TTL, in seconds; shorter TTLs hurt cacheability. | `3600` | + +The administrator can also set a bootstrap `resolver` (`host:port`) used to discover the apex name servers and look up the parent `DS`; it defaults to `/etc/resolv.conf`. + +{{% notice style="info" title="What this checker does not do" %}} +The DNSSEC checker does not verify the full cryptographic chain of trust from the root. For that end-to-end validation, use the DNSViz-based checker. This checker complements it by catching policy and operational problems (weak algorithms, expiring signatures, NSEC walkability) that a chain validation alone would not surface. +{{% /notice %}} + +## In happyDomain + +Enable the DNSSEC checker on a domain from its **Checks** view. See {{< relref "/pages/checks" >}} for the full workflow of adding, scheduling and reading checks. For delegation-side `DS`/`DNSKEY` hand-off, see the {{< relref "/reference/checkers/delegation" >}} checker. diff --git a/content/reference/checkers/dnssec.fr.md b/content/reference/checkers/dnssec.fr.md new file mode 100644 index 0000000..933acfd --- /dev/null +++ b/content/reference/checkers/dnssec.fr.md @@ -0,0 +1,80 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Validation DNSSEC +description: "Audite l'hygiène opérationnelle d'une zone signée : algorithmes, taille des clés, fraîcheur des signatures, paramètres NSEC/NSEC3 et cohérence entre serveurs." +weight: 60 +--- + +Le vérificateur **DNSSEC** audite l'*hygiène opérationnelle* d'une zone signée. Il ne revalide pas de bout en bout la chaîne de confiance cryptographique (cette tâche est confiée à un vérificateur dédié fondé sur DNSViz) : il se concentre sur les aspects de politique et d'exploitation au quotidien de la signature, à savoir les algorithmes et tailles de clés utilisés, la validité et la fraîcheur des signatures, le mode de déni d'existence (NSEC ou NSEC3) et la cohérence de la vue servie par chaque serveur faisant autorité. + +Ce vérificateur s'applique au niveau du **domaine** : il opère sur l'apex de la zone. À partir d'un résolveur récursif d'amorçage, il découvre les serveurs de noms de l'apex et interroge le `DS` parent, puis questionne directement chaque serveur faisant autorité. + +## Ce qu'il vérifie + +Le vérificateur évalue les règles suivantes. Plusieurs d'entre elles sont pilotées par les options décrites plus bas. + +### Chaîne et matériel de clés + +| Règle | Vérifie | Sévérité | +|---|---|---| +| `dnssec_zone_signed` | Le parent annonce un `DS` mais l'apex ne sert aucun `DNSKEY` (zone signée cassée). | Critique | +| `dnssec_dnskey_consistent` | Tous les serveurs faisant autorité renvoient le même RRset `DNSKEY`. | Critique | +| `dnssec_dnskey_query_ok` | Tous les serveurs faisant autorité ont répondu à la requête `DNSKEY`. | Critique | +| `dnssec_ksk_present` | Au moins un `DNSKEY` porte le bit SEP (clé de signature de clé, KSK). | Critique | +| `dnssec_dnskey_count` | Avertit lorsque trop de `DNSKEY` sont publiés, ce qui gonfle les réponses et le potentiel d'amplification. | Avertissement | + +### Algorithmes et robustesse des clés + +| Règle | Vérifie | Sévérité | +|---|---|---| +| `dnssec_algorithm_allowed` | Aucun `DNSKEY` n'utilise un algorithme interdit ou hors de la liste autorisée. | Critique | +| `dnssec_algorithm_modern` | Recommande ECDSAP256SHA256 (13) ou Ed25519 (15) plutôt que RSA. | Avertissement | +| `dnssec_rsa_keysize` | Les `DNSKEY` RSA atteignent la taille de module minimale. | Critique | + +### Signatures + +| Règle | Vérifie | Sévérité | +|---|---|---| +| `dnssec_rrsig_present_dnskey` | Le RRset `DNSKEY` est signé. | Critique | +| `dnssec_rrsig_present_soa` | Le RRset `SOA` est signé. | Critique | +| `dnssec_rrsig_validity_window` | Chaque `RRSIG` observé est dans sa fenêtre d'inception/expiration. | Critique | +| `dnssec_rrsig_freshness` | Alerte anticipée lorsque les `RRSIG` approchent de l'expiration (détecte les signeurs bloqués). | Critique | + +### Déni d'existence (NSEC / NSEC3) + +| Règle | Vérifie | Sévérité | +|---|---|---| +| `dnssec_denial_uses_nsec3` | Avertit lorsque la zone utilise NSEC nu, ce qui la rend parcourable (RFC 5155 / RFC 7129). | Avertissement | +| `dnssec_nsec3_iterations` | `NSEC3PARAM.Iterations` ne dépasse pas le plafond configuré (la RFC 9276 §3.1 recommande 0). | Critique | +| `dnssec_nsec3_salt_empty` | `NSEC3PARAM.SaltLength` vaut 0 (RFC 9276 §3.1 : un sel n'apporte aucune protection mesurable). | Avertissement | +| `dnssec_nsec3_optout_only_when_signed_delegations` | Note informative lorsque le drapeau OPT-OUT est positionné dans une zone feuille. | Info | +| `dnssec_denial_consistent` | Tous les serveurs faisant autorité utilisent le même schéma de déni d'existence. | Avertissement | + +### Hygiène des TTL + +| Règle | Vérifie | Sévérité | +|---|---|---| +| `dnssec_dnskey_ttl_min` | Avertit lorsque le TTL des `DNSKEY` est trop court pour être utile au cache. | Avertissement | + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| `nsec3IterationsMax` | Plafond RFC 9276 §3.1 sur `NSEC3PARAM.Iterations`. À relever uniquement si votre signeur ne sait pas encore publier 0. | `0` | +| `nsec3IterationsSeverity` | Sévérité lorsque les itérations dépassent le plafond. Mettre `crit` pour appliquer strictement la RFC 9276. | `warn` | +| `signatureFreshness` | Avertit lorsque le `RRSIG` le plus proche expire dans moins de ce nombre de jours. | `7` | +| `signatureFreshnessCrit` | Critique lorsque le `RRSIG` le plus proche expire dans moins de ce nombre de jours. | `1` | +| `minRSAKeySize` | Taille de module RSA minimale acceptable, en bits. | `2048` | +| `requireSEP` | Exige au moins un `DNSKEY` portant le bit SEP (KSK). | `true` | +| `dnskeyTTLMin` | TTL minimal des `DNSKEY`, en secondes ; des TTL plus courts nuisent à la mise en cache. | `3600` | + +L'administrateur peut également définir un résolveur d'amorçage (`resolver`, au format `host:port`) servant à découvrir les serveurs de noms de l'apex et à interroger le `DS` parent ; sa valeur par défaut est `/etc/resolv.conf`. + +{{% notice style="info" title="Ce que ce vérificateur ne fait pas" %}} +Le vérificateur DNSSEC ne vérifie pas l'intégralité de la chaîne de confiance cryptographique depuis la racine. Pour cette validation de bout en bout, utilisez le vérificateur fondé sur DNSViz. Le présent vérificateur le complète en détectant les problèmes de politique et d'exploitation (algorithmes faibles, signatures expirantes, NSEC parcourable) qu'une validation de chaîne seule ne révélerait pas. +{{% /notice %}} + +## Dans happyDomain + +Activez le vérificateur DNSSEC sur un domaine depuis sa vue **Vérifications**. Consultez {{< relref "/pages/checks" >}} pour le déroulé complet de l'ajout, de la planification et de la lecture des vérifications. Pour le passage de relais `DS`/`DNSKEY` côté délégation, voyez le vérificateur {{< relref "/reference/checkers/delegation" >}}. diff --git a/content/reference/checkers/dnsviz.en.md b/content/reference/checkers/dnsviz.en.md new file mode 100644 index 0000000..2aeef53 --- /dev/null +++ b/content/reference/checkers/dnsviz.en.md @@ -0,0 +1,54 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: DNSViz +description: "Run DNSViz against a domain and walk the whole DNSSEC chain from the root down to the leaf, surfacing every error and warning at the exact zone where it occurs." +weight: 340 +--- + +The **DNSViz** checker (named *DNSSEC (DNSViz)* in happyDomain) assesses a domain's DNSSEC validation chain by driving [DNSViz](https://github.com/dnsviz/dnsviz). It analyses the queried name **and every ancestor up to the root**, so a recursive DNSSEC failure can be located at the exact level, and the exact record, where it broke. + +This checker is **domain-level**: it concerns the domain and its delegation chain rather than a single service. + +## How it works + +DNSViz is run externally (a Python tool packaged alongside the checker), and happyDomain delegates collection to that endpoint. For each run it effectively performs: + +``` +dnsviz probe -A . | dnsviz grok -t +``` + +Every link of the chain (root → TLD → intermediates → leaf) is listed explicitly so the full analysis appears in the report. `dnsviz grok` is given a BIND-format DNSKEY trust anchor for the root zone; without it, the root has no parent to chain against and stays classified at the DNS level (`NOERROR`) instead of DNSSEC `SECURE`. + +The output is parsed: per-zone errors and warnings are walked out of the nested record tree and turned into individual states tagged with the JSON path where they were found. A curated catalog of common DNSSEC failures (broken chain, expired RRSIG, DS digest mismatch, deprecated algorithm…) is matched against the findings to drive a "Fix these first" section in the HTML report. + +{{% notice style="info" title="Scope" %}} +This checker reports exactly what DNSViz reports. NSEC/NSEC3 zone-walk hardening and NSEC3PARAM iteration policy (RFC 9276) are out of scope here and handled by the dedicated DNSSEC checker — see {{< relref "/reference/checkers/dnssec" >}}. +{{% /notice %}} + +## What it checks + +| Rule | What it verifies | +|---|---| +| `dnsviz_overall_status` | DNSViz status of the queried domain (SECURE / INSECURE / BOGUS / INDETERMINATE). | +| `dnsviz_per_zone_status` | One state per zone in the chain (root, TLD, intermediates, leaf). | +| `dnsviz_zone_errors` | Every error reported by DNSViz, scoped to the zone where it was found. | +| `dnsviz_zone_warnings` | Every warning reported by DNSViz, scoped to the zone where it was found. | +| `dnsviz_common_failures` | Pattern-matches the findings against a catalog of common DNSSEC failures. | + +Statuses map as follows: `SECURE` → OK; `BOGUS` → Critical; `INDETERMINATE` → Warning; `INSECURE`, `NON_EXISTENT` and a plain `NOERROR` (resolves but unsigned) → Info. + +## Options + +| Option | Meaning | Default | +|---|---|---| +| Probe timeout (`probeTimeoutSeconds`, admin) | Hard timeout for the `dnsviz probe` invocation; the recursive walk can be slow on some zones. | 120 | +| Domain name (`domain_name`) | Domain to analyse. | auto-filled | + +The DNSViz runtime itself requires `dnsviz` on the host's `PATH` and a BIND-format root DNSKEY trust anchor file (auto-detected from the system's `dnssec-root` / `dns-root-data` package, or pointed at explicitly). The packaged container image bundles these so the trust anchor is in place out of the box. + +## In happyDomain + +Enable this checker for the domain from the **Checks** view. See {{< relref "/pages/checks" >}} for scheduling and reading checks. + +DNSViz and {{< relref "/reference/checkers/dnssec" >}} are complementary: DNSViz validates the end-to-end chain, while the DNSSEC checker covers NSEC/NSEC3 hardening. A second opinion on the same chain is available from {{< relref "/reference/checkers/zonemaster" >}}. diff --git a/content/reference/checkers/dnsviz.fr.md b/content/reference/checkers/dnsviz.fr.md new file mode 100644 index 0000000..e2dec18 --- /dev/null +++ b/content/reference/checkers/dnsviz.fr.md @@ -0,0 +1,54 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: DNSViz +description: "Lance DNSViz sur un domaine et parcourt toute la chaîne DNSSEC, de la racine jusqu'à la feuille, en faisant remonter chaque erreur et avertissement à la zone exacte où il survient." +weight: 340 +--- + +Le vérificateur **DNSViz** (nommé *DNSSEC (DNSViz)* dans happyDomain) évalue la chaîne de validation DNSSEC d'un domaine en pilotant [DNSViz](https://github.com/dnsviz/dnsviz). Il analyse le nom interrogé **et chacun de ses ancêtres jusqu'à la racine**, de sorte qu'un échec DNSSEC récursif peut être localisé au niveau exact, et à l'enregistrement exact, où il s'est produit. + +Ce vérificateur s'applique au **niveau domaine** : il concerne le domaine et sa chaîne de délégation plutôt qu'un service isolé. + +## Fonctionnement + +DNSViz est exécuté en externe (un outil Python empaqueté avec le vérificateur), et happyDomain délègue la collecte à ce point d'accès. Chaque exécution revient à effectuer : + +``` +dnsviz probe -A . | dnsviz grok -t +``` + +Chaque maillon de la chaîne (racine, TLD, intermédiaires, feuille) est listé explicitement afin que l'analyse complète apparaisse dans le rapport. `dnsviz grok` reçoit une ancre de confiance DNSKEY au format BIND pour la zone racine ; sans elle, la racine n'a pas de parent auquel se rattacher et reste classée au niveau DNS (`NOERROR`) au lieu de `SECURE` au sens DNSSEC. + +La sortie est analysée : les erreurs et avertissements par zone sont extraits de l'arbre d'enregistrements imbriqués et transformés en états individuels, étiquetés du chemin JSON où ils ont été trouvés. Un catalogue d'échecs DNSSEC courants (chaîne rompue, RRSIG expirée, condensat DS incohérent, algorithme déprécié) est confronté aux constats pour alimenter une section « Fix these first » du rapport HTML. + +{{% notice style="info" title="Périmètre" %}} +Ce vérificateur rapporte exactement ce que DNSViz rapporte. Le durcissement contre le parcours de zone NSEC/NSEC3 et la politique d'itérations NSEC3PARAM (RFC 9276) sont hors périmètre ici et traités par le vérificateur DNSSEC dédié : voir {{< relref "/reference/checkers/dnssec" >}}. +{{% /notice %}} + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié | +|---|---| +| `dnsviz_overall_status` | Statut DNSViz du domaine interrogé (SECURE / INSECURE / BOGUS / INDETERMINATE). | +| `dnsviz_per_zone_status` | Un état par zone de la chaîne (racine, TLD, intermédiaires, feuille). | +| `dnsviz_zone_errors` | Chaque erreur rapportée par DNSViz, rattachée à la zone où elle a été trouvée. | +| `dnsviz_zone_warnings` | Chaque avertissement rapporté par DNSViz, rattaché à la zone où il a été trouvé. | +| `dnsviz_common_failures` | Confronte les constats à un catalogue d'échecs DNSSEC courants. | + +Les statuts sont projetés ainsi : `SECURE` vers OK ; `BOGUS` vers Critique ; `INDETERMINATE` vers Avertissement ; `INSECURE`, `NON_EXISTENT` et un simple `NOERROR` (résout mais non signé) vers Info. + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| Délai de sondage (`probeTimeoutSeconds`, admin) | Délai maximal pour l'appel à `dnsviz probe` ; le parcours récursif peut être lent sur certaines zones. | 120 | +| Nom de domaine (`domain_name`) | Domaine à analyser. | prérempli | + +L'environnement d'exécution de DNSViz nécessite quant à lui la présence de `dnsviz` dans le `PATH` de l'hôte et un fichier d'ancre de confiance DNSKEY racine au format BIND (détecté automatiquement à partir du paquet système `dnssec-root` / `dns-root-data`, ou indiqué explicitement). L'image conteneur fournie embarque ces éléments, de sorte que l'ancre de confiance est en place d'emblée. + +## Dans happyDomain + +Activez ce vérificateur pour le domaine depuis la vue **Vérifications**. Voir {{< relref "/pages/checks" >}} pour la planification et la lecture des vérifications. + +DNSViz et {{< relref "/reference/checkers/dnssec" >}} sont complémentaires : DNSViz valide la chaîne de bout en bout, tandis que le vérificateur DNSSEC couvre le durcissement NSEC/NSEC3. Un second avis sur la même chaîne est disponible auprès de {{< relref "/reference/checkers/zonemaster" >}}. diff --git a/content/reference/checkers/domain-availability.en.md b/content/reference/checkers/domain-availability.en.md new file mode 100644 index 0000000..ef7c1e7 --- /dev/null +++ b/content/reference/checkers/domain-availability.en.md @@ -0,0 +1,33 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Domain availability +description: "Notifies you when a watched domain name becomes available for registration." +weight: 40 +--- + +The **Domain availability** checker watches a domain name you do *not* own and notifies you the moment it becomes available for registration. It is the counterpart of {{< relref "/reference/checkers/domain-expiry" >}}: instead of protecting a domain you hold, it lets you grab one as soon as it lapses. + +This is a **domain-level** checker: registration status is determined from the registry through a WHOIS/RDAP lookup. A domain is considered available when the registry reports that it does not exist. + +## What it checks + +A single rule, `domain_availability_check`, reports whether the watched domain is still registered or has become free. + +| Status | Condition | +|--------|-----------| +| **Critical** | The domain is now available for registration | +| **OK** | The domain is still registered (the registrar and expiry date are reported when known) | +| **Error** | The availability lookup failed | + +{{% notice style="info" title="Why available is reported as Critical" %}} +The status is intentionally inverted compared with the usual convention. Reporting *Critical* when the domain becomes available makes the registered → available transition cross the notification threshold, so you are alerted exactly once when the domain frees up. +{{% /notice %}} + +## Options + +This checker has no user-tunable options. The watched domain name is supplied automatically. + +## In happyDomain + +Unlike the other domain-level checkers, **Domain availability** is not scheduled on the domains you manage. It is driven by the dedicated availability-watch list. See {{< relref "/pages/domain-availability" >}} for how to add a domain to watch, and {{< relref "/pages/checks" >}} for the general checks workflow. diff --git a/content/reference/checkers/domain-availability.fr.md b/content/reference/checkers/domain-availability.fr.md new file mode 100644 index 0000000..35977d3 --- /dev/null +++ b/content/reference/checkers/domain-availability.fr.md @@ -0,0 +1,33 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Disponibilité du domaine +description: "Vous notifie lorsqu'un nom de domaine surveillé devient disponible à l'enregistrement." +weight: 40 +--- + +Le vérificateur **Disponibilité du domaine** surveille un nom de domaine que vous ne possédez pas et vous notifie dès qu'il devient disponible à l'enregistrement. C'est le pendant de {{< relref "/reference/checkers/domain-expiry" >}} : au lieu de protéger un domaine que vous détenez, il vous permet d'en saisir un dès qu'il se libère. + +Il s'agit d'un vérificateur de **niveau domaine** : l'état d'enregistrement est déterminé auprès du registre via une requête WHOIS/RDAP. Un domaine est considéré comme disponible lorsque le registre indique qu'il n'existe pas. + +## Ce qui est vérifié + +Une seule règle, `domain_availability_check`, indique si le domaine surveillé est toujours enregistré ou s'il s'est libéré. + +| Statut | Condition | +|--------|-----------| +| **Critique** | Le domaine est désormais disponible à l'enregistrement | +| **OK** | Le domaine est toujours enregistré (le bureau d'enregistrement et la date d'expiration sont rapportés lorsqu'ils sont connus) | +| **Erreur** | La requête de disponibilité a échoué | + +{{% notice style="info" title="Pourquoi la disponibilité est rapportée comme Critique" %}} +Le statut est volontairement inversé par rapport à la convention habituelle. Rapporter *Critique* lorsque le domaine devient disponible fait franchir le seuil de notification à la transition enregistré → disponible, de sorte que vous êtes alerté exactement une fois lorsque le domaine se libère. +{{% /notice %}} + +## Options + +Ce vérificateur ne propose aucune option configurable. Le nom de domaine surveillé est fourni automatiquement. + +## Dans happyDomain + +Contrairement aux autres vérificateurs de niveau domaine, **Disponibilité du domaine** n'est pas planifié sur les domaines que vous gérez. Il est piloté par la liste dédiée de surveillance de disponibilité. Consultez {{< relref "/pages/domain-availability" >}} pour savoir comment ajouter un domaine à surveiller, et {{< relref "/pages/checks" >}} pour le fonctionnement général des vérifications. diff --git a/content/reference/checkers/domain-contact.en.md b/content/reference/checkers/domain-contact.en.md new file mode 100644 index 0000000..c945f6a --- /dev/null +++ b/content/reference/checkers/domain-contact.en.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Domain contacts +description: "Verifies that the registered domain contacts (registrant, admin, tech) match the values you expect, with detection of privacy-protected records." +weight: 30 +--- + +The **Domain contacts** checker compares the contact information registered for a domain (registrant, administrative and technical contacts) against the values you expect. An unexpected change to a contact, especially the registrant, can be an early sign of a hijack or of an administrative mistake. + +This is a **domain-level** checker: the contact data is read from the registry through a WHOIS/RDAP lookup. Many registries redact contact fields for privacy; this checker detects redaction and reports it rather than treating it as a mismatch. + +## What it checks + +A single rule, `domain_contact_check`, evaluates each contact role you selected and emits one result per role. + +| Status | Condition | +|--------|-----------| +| **OK** | The role's contact matches every expected value provided | +| **Warning** | A field does not match the expected value, or the role is missing from the record | +| **Info** | The contact is privacy-protected (redacted) so it cannot be compared | +| **Unknown** | No expected value is configured, or no role is selected (nothing to check) | +| **Error** | The WHOIS/RDAP lookup failed | + +Comparisons are case-insensitive and exact. Redaction is detected from common markers in the contact fields such as *redacted*, *privacy*, *withheld*, *not disclosed*, *data protected*, *contact privacy* and *whoisguard*. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Expected registrant name | If set, the configured roles must report this exact name (case-insensitive). | *(empty)* | +| Expected organization | If set, the configured roles must report this exact organization (case-insensitive). | *(empty)* | +| Expected email | If set, the configured roles must report this exact email (case-insensitive). | *(empty)* | +| Contact roles to check | Comma-separated list of roles among `registrant`, `admin`, `tech`. | `registrant` | + +{{% notice style="info" title="At least one expected value is required" %}} +If none of the expected name, organization or email is set, the checker has nothing to compare and reports an *Unknown* status. Set at least one expected value for the check to be meaningful. +{{% /notice %}} + +## In happyDomain + +Enable this checker from the domain's **Checks** view; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The domain name is filled in automatically. + +This checker complements {{< relref "/reference/checkers/domain-expiry" >}} and {{< relref "/reference/checkers/domain-lock" >}}, which together keep the registration of a domain under watch. diff --git a/content/reference/checkers/domain-contact.fr.md b/content/reference/checkers/domain-contact.fr.md new file mode 100644 index 0000000..220892f --- /dev/null +++ b/content/reference/checkers/domain-contact.fr.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Contacts du domaine +description: "Vérifie que les contacts enregistrés du domaine (titulaire, administratif, technique) correspondent aux valeurs attendues, avec détection des enregistrements protégés par confidentialité." +weight: 30 +--- + +Le vérificateur **Contacts du domaine** compare les informations de contact enregistrées pour un domaine (contacts titulaire, administratif et technique) aux valeurs que vous attendez. Une modification inattendue d'un contact, en particulier le titulaire, peut être un signe précoce de détournement ou d'une erreur administrative. + +Il s'agit d'un vérificateur de **niveau domaine** : les données de contact sont lues auprès du registre via une requête WHOIS/RDAP. De nombreux registres masquent les champs de contact pour des raisons de confidentialité ; ce vérificateur détecte ce masquage et le signale au lieu de le traiter comme une divergence. + +## Ce qui est vérifié + +Une seule règle, `domain_contact_check`, évalue chaque rôle de contact sélectionné et émet un résultat par rôle. + +| Statut | Condition | +|--------|-----------| +| **OK** | Le contact du rôle correspond à chaque valeur attendue fournie | +| **Avertissement** | Un champ ne correspond pas à la valeur attendue, ou le rôle est absent de l'enregistrement | +| **Info** | Le contact est protégé par confidentialité (masqué) et ne peut donc pas être comparé | +| **Inconnu** | Aucune valeur attendue n'est configurée, ou aucun rôle n'est sélectionné (rien à vérifier) | +| **Erreur** | La requête WHOIS/RDAP a échoué | + +Les comparaisons sont exactes et insensibles à la casse. Le masquage est détecté à partir de marqueurs courants dans les champs de contact comme *redacted*, *privacy*, *withheld*, *not disclosed*, *data protected*, *contact privacy* et *whoisguard*. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Nom du titulaire attendu | Si renseigné, les rôles configurés doivent rapporter ce nom exact (insensible à la casse). | *(vide)* | +| Organisation attendue | Si renseignée, les rôles configurés doivent rapporter cette organisation exacte (insensible à la casse). | *(vide)* | +| Adresse e-mail attendue | Si renseignée, les rôles configurés doivent rapporter cette adresse exacte (insensible à la casse). | *(vide)* | +| Rôles de contact à vérifier | Liste de rôles séparés par des virgules parmi `registrant`, `admin`, `tech`. | `registrant` | + +{{% notice style="info" title="Au moins une valeur attendue est nécessaire" %}} +Si ni le nom, ni l'organisation, ni l'adresse e-mail attendus ne sont renseignés, le vérificateur n'a rien à comparer et rapporte un statut *Inconnu*. Renseignez au moins une valeur attendue pour que la vérification ait du sens. +{{% /notice %}} + +## Dans happyDomain + +Activez ce vérificateur depuis la vue **Vérifications** du domaine ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. Le nom de domaine est renseigné automatiquement. + +Ce vérificateur complète {{< relref "/reference/checkers/domain-expiry" >}} et {{< relref "/reference/checkers/domain-lock" >}}, qui ensemble gardent l'enregistrement d'un domaine sous surveillance. diff --git a/content/reference/checkers/domain-expiry.en.md b/content/reference/checkers/domain-expiry.en.md new file mode 100644 index 0000000..3aa9559 --- /dev/null +++ b/content/reference/checkers/domain-expiry.en.md @@ -0,0 +1,43 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Domain expiry +description: "Warns when a domain name is approaching its registration expiry date." +weight: 10 +--- + +The **Domain expiry** checker watches the registration expiry date of a domain name and warns you before it lapses. Letting a domain expire can mean losing it to another registrant, so this is one of the most important domain-level checks. + +This is a **domain-level** checker: it concerns the domain registration itself, not its DNS records. The expiry date is obtained from the registry through a WHOIS/RDAP lookup, together with the registrar name. + +## What it checks + +A single rule, `domain_expiry_check`, compares the number of days remaining until expiry against two thresholds and reports the corresponding status. + +| Status | Condition | +|--------|-----------| +| **Critical** | Days remaining ≤ critical threshold | +| **Warning** | Days remaining ≤ warning threshold (but above critical) | +| **OK** | Days remaining above the warning threshold | +| **Error** | The WHOIS/RDAP lookup failed or no expiry date is available | + +The message always reports how many days remain until expiry, regardless of status. + +The checker also exposes a metric, `domain_expiry_days_remaining`, labelled with the registrar, so the time left can be tracked over time. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Warning threshold (days) | Days before expiry at which a warning is raised. Must be positive. | 30 | +| Critical threshold (days) | Days before expiry at which a critical alert is raised. Must be positive. | 7 | + +{{% notice style="info" title="Critical must be lower than warning" %}} +The critical threshold must be strictly smaller than the warning threshold. happyDomain rejects a configuration where `critical_days` is greater than or equal to `warning_days`. +{{% /notice %}} + +## In happyDomain + +Enable this checker from the domain's **Checks** view; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The domain name is filled in automatically. + +For the inverse situation, watching a domain you do *not* yet own so you can register it once it lapses, see the {{< relref "/reference/checkers/domain-availability" >}} checker and {{< relref "/pages/domain-availability" >}}. Related domain-level checkers include {{< relref "/reference/checkers/domain-lock" >}} and {{< relref "/reference/checkers/domain-contact" >}}. diff --git a/content/reference/checkers/domain-expiry.fr.md b/content/reference/checkers/domain-expiry.fr.md new file mode 100644 index 0000000..c858e3a --- /dev/null +++ b/content/reference/checkers/domain-expiry.fr.md @@ -0,0 +1,43 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Expiration du domaine +description: "Avertit lorsqu'un nom de domaine approche de sa date d'expiration." +weight: 10 +--- + +Le vérificateur **Expiration du domaine** surveille la date d'expiration de l'enregistrement d'un nom de domaine et vous avertit avant qu'elle ne soit dépassée. Laisser un domaine expirer peut conduire à le perdre au profit d'un autre titulaire : c'est l'une des vérifications les plus importantes au niveau du domaine. + +Il s'agit d'un vérificateur de **niveau domaine** : il concerne l'enregistrement du domaine lui-même, et non ses enregistrements DNS. La date d'expiration est obtenue auprès du registre via une requête WHOIS/RDAP, en même temps que le nom du bureau d'enregistrement. + +## Ce qui est vérifié + +Une seule règle, `domain_expiry_check`, compare le nombre de jours restant avant l'expiration à deux seuils et rapporte le statut correspondant. + +| Statut | Condition | +|--------|-----------| +| **Critique** | Jours restants ≤ seuil critique | +| **Avertissement** | Jours restants ≤ seuil d'avertissement (mais au-dessus du critique) | +| **OK** | Jours restants au-dessus du seuil d'avertissement | +| **Erreur** | La requête WHOIS/RDAP a échoué ou aucune date d'expiration n'est disponible | + +Le message indique toujours le nombre de jours restant avant l'expiration, quel que soit le statut. + +Le vérificateur expose également une métrique, `domain_expiry_days_remaining`, étiquetée avec le bureau d'enregistrement, afin de suivre l'évolution du temps restant. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Seuil d'avertissement (jours) | Nombre de jours avant l'expiration déclenchant un avertissement. Doit être positif. | 30 | +| Seuil critique (jours) | Nombre de jours avant l'expiration déclenchant une alerte critique. Doit être positif. | 7 | + +{{% notice style="info" title="Le critique doit être inférieur à l'avertissement" %}} +Le seuil critique doit être strictement inférieur au seuil d'avertissement. happyDomain refuse une configuration où `critical_days` est supérieur ou égal à `warning_days`. +{{% /notice %}} + +## Dans happyDomain + +Activez ce vérificateur depuis la vue **Vérifications** du domaine ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. Le nom de domaine est renseigné automatiquement. + +Pour la situation inverse, surveiller un domaine que vous ne possédez pas encore afin de l'enregistrer dès qu'il se libère, consultez le vérificateur {{< relref "/reference/checkers/domain-availability" >}} et {{< relref "/pages/domain-availability" >}}. Les vérificateurs de niveau domaine apparentés incluent {{< relref "/reference/checkers/domain-lock" >}} et {{< relref "/reference/checkers/domain-contact" >}}. diff --git a/content/reference/checkers/domain-lock.en.md b/content/reference/checkers/domain-lock.en.md new file mode 100644 index 0000000..f08793f --- /dev/null +++ b/content/reference/checkers/domain-lock.en.md @@ -0,0 +1,36 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Domain transfer lock +description: "Verifies that a domain carries the expected EPP lock statuses that protect it against unauthorized transfers or changes." +weight: 20 +--- + +The **Domain transfer lock** checker verifies that a domain carries the EPP status codes that protect it against unauthorized transfers, updates or deletions. A locked domain (for example one bearing `clientTransferProhibited`) cannot be transferred away without first removing the lock, which is a key defence against domain hijacking. + +This is a **domain-level** checker: the status codes are read from the registry through a WHOIS/RDAP lookup, not from the zone's DNS records. + +## What it checks + +A single rule, `domain_lock_check`, compares the EPP status codes reported by the registry against the list of statuses you require. + +| Status | Condition | +|--------|-----------| +| **OK** | Every required status is present on the domain | +| **Critical** | One or more required statuses are missing (the missing codes are listed) | +| **Unknown** | No required status is configured (nothing to check) | +| **Error** | The WHOIS/RDAP lookup failed | + +Comparison is tolerant of formatting: spaces, dashes and underscores are ignored and case does not matter, so `clientTransferProhibited`, `client-transfer-prohibited` and `client transfer prohibited` are all treated as equal. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Required lock statuses | Comma-separated list of EPP status codes that must be present on the domain (for example `clientTransferProhibited`, `clientUpdateProhibited`, `clientDeleteProhibited`). At least one code must be supplied. | `clientTransferProhibited` | + +## In happyDomain + +Enable this checker from the domain's **Checks** view; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The domain name is filled in automatically. + +This checker pairs naturally with {{< relref "/reference/checkers/domain-expiry" >}} and {{< relref "/reference/checkers/domain-contact" >}} to keep the registration of a domain under control. diff --git a/content/reference/checkers/domain-lock.fr.md b/content/reference/checkers/domain-lock.fr.md new file mode 100644 index 0000000..b218bf6 --- /dev/null +++ b/content/reference/checkers/domain-lock.fr.md @@ -0,0 +1,36 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Verrou de transfert du domaine +description: "Vérifie qu'un domaine porte les statuts de verrouillage EPP attendus, qui le protègent contre les transferts ou modifications non autorisés." +weight: 20 +--- + +Le vérificateur **Verrou de transfert du domaine** vérifie qu'un domaine porte les codes de statut EPP qui le protègent contre les transferts, modifications ou suppressions non autorisés. Un domaine verrouillé (par exemple portant `clientTransferProhibited`) ne peut pas être transféré sans que le verrou soit d'abord retiré, ce qui constitue une défense essentielle contre le détournement de domaine. + +Il s'agit d'un vérificateur de **niveau domaine** : les codes de statut sont lus auprès du registre via une requête WHOIS/RDAP, et non dans les enregistrements DNS de la zone. + +## Ce qui est vérifié + +Une seule règle, `domain_lock_check`, compare les codes de statut EPP rapportés par le registre à la liste des statuts que vous exigez. + +| Statut | Condition | +|--------|-----------| +| **OK** | Tous les statuts requis sont présents sur le domaine | +| **Critique** | Un ou plusieurs statuts requis sont absents (les codes manquants sont listés) | +| **Inconnu** | Aucun statut requis n'est configuré (rien à vérifier) | +| **Erreur** | La requête WHOIS/RDAP a échoué | + +La comparaison tolère les différences de format : les espaces, tirets et tirets bas sont ignorés et la casse n'a pas d'importance. Ainsi `clientTransferProhibited`, `client-transfer-prohibited` et `client transfer prohibited` sont tous considérés comme équivalents. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Statuts de verrouillage requis | Liste de codes de statut EPP séparés par des virgules qui doivent être présents sur le domaine (par exemple `clientTransferProhibited`, `clientUpdateProhibited`, `clientDeleteProhibited`). Au moins un code doit être fourni. | `clientTransferProhibited` | + +## Dans happyDomain + +Activez ce vérificateur depuis la vue **Vérifications** du domaine ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. Le nom de domaine est renseigné automatiquement. + +Ce vérificateur se combine naturellement avec {{< relref "/reference/checkers/domain-expiry" >}} et {{< relref "/reference/checkers/domain-contact" >}} pour garder la maîtrise de l'enregistrement d'un domaine. diff --git a/content/reference/checkers/email-autoconfig.en.md b/content/reference/checkers/email-autoconfig.en.md new file mode 100644 index 0000000..3302e6a --- /dev/null +++ b/content/reference/checkers/email-autoconfig.en.md @@ -0,0 +1,57 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Mail autoconfiguration +description: "Verify that a domain publishes discoverable mail-client configuration through Thunderbird autoconfig, Microsoft Autodiscover and RFC 6186 SRV records." +weight: 220 +--- + +The **Mail Autoconfiguration** checker verifies that mail clients can automatically discover how to connect to your mail servers. When autoconfiguration is published correctly, a user only types their email address and password, and their client (Thunderbird, Outlook, mobile mail apps…) finds the right IMAP/POP and SMTP hosts, ports and security settings on its own. + +This checker is **service-level**: it applies to the mail-autoconfiguration and RFC 6186 services of a domain. For each run it probes the discovery mechanisms used by real-world clients: + +- **Thunderbird autoconfig** (Bucksch draft): `https://autoconfig./mail/config-v1.1.xml` as the primary URL, with the `https:///.well-known/autoconfig/...` apex fallback, an optional plain-HTTP variant, the Mozilla ISPDB fallback, and MX-parent fallbacks. +- **Microsoft Autodiscover** (POX): `https://autodiscover./autodiscover/autodiscover.xml`. +- **RFC 6186 SRV records**: `_imaps`, `_imap`, `_pop3s`, `_pop3`, `_submissions`, `_submission`, `_autodiscover`. +- **MX resolution**, for context and MX-based discovery. + +It parses every response, cross-checks the servers advertised by the different sources, and produces an HTML report with paste-ready remediation snippets for the most common failure modes. + +## What it checks + +| Rule | What it verifies | Severity on failure | +|---|---|---| +| `autoconfig_presence` | At least one autoconfiguration discovery method answers for the domain. | Critical | +| `autoconfig_preferred_endpoint` | The primary URL `https://autoconfig./mail/config-v1.1.xml` is reachable and serves a valid clientConfig. | Warning | +| `autoconfig_tls` | Autoconfig endpoints are served over HTTPS with a valid TLS certificate. | Critical | +| `autoconfig_server_encryption` | Servers advertised by autoconfig use SSL or STARTTLS and a non-cleartext authentication method. | Critical | +| `autoconfig_consistency` | Hostnames and ports reported by autoconfig, Autodiscover and SRV records agree with each other. | Warning | +| `autoconfig_srv_records` | RFC 6186 SRV records complement the autoconfig XML. | Warning | +| `autoconfig_autodiscover` | Whether Microsoft Autodiscover (POX) responds on the domain. | Warning | + +When a check fails, the report's "Fix this first" section provides ready-to-copy snippets: a sample `config-v1.1.xml` and its canonical URLs when nothing is published, a nudge to add the `autoconfig.` subdomain when only `.well-known` answers, an HTTPS redirect hint, a certificate-coverage hint, a port cheat-sheet for plaintext servers (SSL 993/465, STARTTLS 143/587), and a ready-to-paste SRV zone excerpt. + +## Options + +### Per user + +| Option | Meaning | Default | +|---|---|---| +| Local-part used in probes (`probeEmail`) | Local part sent in the autoconfig URL query string (before `@`). Most servers ignore it. | `test` | +| HTTP timeout (`httpTimeout`) | Per-request timeout, in seconds, when probing endpoints. | 8 | +| Try Mozilla ISPDB fallback (`tryISPDB`) | When the domain publishes no autoconfig file, also query Mozilla's public Thunderbird ISPDB. | true | +| Allow plain-HTTP fallback probe (`tryHTTPAutoconfig`) | Also probe the plain-HTTP variant of `autoconfig.` (optional in the draft); useful to spot HTTP-only providers. | false | +| Probe Microsoft Autodiscover (`tryAutodiscoverPost`) | Probe the Exchange/Outlook Autodiscover endpoints. Disable to check only the Thunderbird flow. | true | + +### Admin + +| Option | Meaning | Default | +|---|---|---| +| Mozilla ISPDB base URL (`ispdbURL`) | Base URL of Mozilla's autoconfig fallback database. | `https://autoconfig.thunderbird.net/v1.1/` | +| User-Agent used in probes (`userAgent`) | User-Agent announced in every probe request. | `happyDomain-autoconfig/1.0 (+https://happydomain.org)` | + +## In happyDomain + +Enable this checker from the **Checks** tab of the relevant mail-autoconfiguration service. See {{< relref "/pages/checks" >}} for scheduling and reading checks. + +This checker is the natural companion to a full mail setup: see {{< relref "/reference/services/email" >}} for the MX, SPF, DKIM and DMARC services that govern how mail is delivered and authenticated. diff --git a/content/reference/checkers/email-autoconfig.fr.md b/content/reference/checkers/email-autoconfig.fr.md new file mode 100644 index 0000000..8b3a241 --- /dev/null +++ b/content/reference/checkers/email-autoconfig.fr.md @@ -0,0 +1,57 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Autoconfiguration de la messagerie +description: "Vérifie qu'un domaine publie une configuration de messagerie découvrable via l'autoconfig Thunderbird, l'Autodiscover Microsoft et les enregistrements SRV de la RFC 6186." +weight: 220 +--- + +Le vérificateur d'**autoconfiguration de la messagerie** s'assure que les clients de messagerie peuvent découvrir automatiquement comment se connecter à vos serveurs de courriel. Lorsque l'autoconfiguration est publiée correctement, l'utilisateur saisit seulement son adresse et son mot de passe, et son client (Thunderbird, Outlook, applications mobiles) trouve de lui-même les bons hôtes IMAP/POP et SMTP, les ports et les réglages de sécurité. + +Ce vérificateur s'applique au **niveau service** : il concerne les services d'autoconfiguration de messagerie et de RFC 6186 d'un domaine. À chaque exécution, il sonde les mécanismes de découverte utilisés par les clients réels : + +- **Autoconfig Thunderbird** (brouillon Bucksch) : `https://autoconfig./mail/config-v1.1.xml` comme URL primaire, avec le repli sur l'apex `https:///.well-known/autoconfig/...`, une variante optionnelle en HTTP simple, le repli sur l'ISPDB de Mozilla et les replis via le parent MX. +- **Autodiscover Microsoft** (POX) : `https://autodiscover./autodiscover/autodiscover.xml`. +- **Enregistrements SRV de la RFC 6186** : `_imaps`, `_imap`, `_pop3s`, `_pop3`, `_submissions`, `_submission`, `_autodiscover`. +- **Résolution MX**, pour le contexte et la découverte fondée sur les MX. + +Il analyse chaque réponse, recoupe les serveurs annoncés par les différentes sources et produit un rapport HTML accompagné d'extraits de correction prêts à coller pour les défauts les plus courants. + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié | Sévérité en cas d'échec | +|---|---|---| +| `autoconfig_presence` | Au moins une méthode de découverte d'autoconfiguration répond pour le domaine. | Critique | +| `autoconfig_preferred_endpoint` | L'URL primaire `https://autoconfig./mail/config-v1.1.xml` est joignable et sert un clientConfig valide. | Avertissement | +| `autoconfig_tls` | Les points d'accès d'autoconfig sont servis en HTTPS avec un certificat TLS valide. | Critique | +| `autoconfig_server_encryption` | Les serveurs annoncés par l'autoconfig utilisent SSL ou STARTTLS et une méthode d'authentification non en clair. | Critique | +| `autoconfig_consistency` | Les noms d'hôtes et ports rapportés par l'autoconfig, l'Autodiscover et les SRV concordent entre eux. | Avertissement | +| `autoconfig_srv_records` | Les enregistrements SRV de la RFC 6186 complètent le XML d'autoconfig. | Avertissement | +| `autoconfig_autodiscover` | Si l'Autodiscover Microsoft (POX) répond sur le domaine. | Avertissement | + +En cas d'échec, la section « Fix this first » du rapport fournit des extraits prêts à copier : un exemple de `config-v1.1.xml` et ses URL canoniques lorsque rien n'est publié, une incitation à ajouter le sous-domaine `autoconfig.` lorsque seul `.well-known` répond, une redirection vers HTTPS, un rappel sur la couverture du certificat, un aide-mémoire de ports pour les serveurs en clair (SSL 993/465, STARTTLS 143/587) et un extrait de zone SRV prêt à coller. + +## Options + +### Par utilisateur + +| Option | Signification | Défaut | +|---|---|---| +| Partie locale des sondes (`probeEmail`) | Partie locale envoyée dans la chaîne de requête de l'URL d'autoconfig (avant le `@`). La plupart des serveurs l'ignorent. | `test` | +| Délai HTTP (`httpTimeout`) | Délai par requête, en secondes, lors du sondage des points d'accès. | 8 | +| Tenter le repli ISPDB de Mozilla (`tryISPDB`) | Lorsque le domaine ne publie aucun fichier d'autoconfig, interroger aussi l'ISPDB public de Mozilla. | true | +| Autoriser le repli HTTP simple (`tryHTTPAutoconfig`) | Sonder aussi la variante en HTTP simple de `autoconfig.` (optionnelle dans le brouillon) ; utile pour repérer les fournisseurs encore en HTTP. | false | +| Sonder l'Autodiscover Microsoft (`tryAutodiscoverPost`) | Sonder les points d'accès Autodiscover Exchange/Outlook. À désactiver pour ne vérifier que le flux Thunderbird. | true | + +### Admin + +| Option | Signification | Défaut | +|---|---|---| +| URL de base de l'ISPDB Mozilla (`ispdbURL`) | URL de base de la base de repli d'autoconfig de Mozilla. | `https://autoconfig.thunderbird.net/v1.1/` | +| User-Agent des sondes (`userAgent`) | User-Agent annoncé dans chaque requête de sondage. | `happyDomain-autoconfig/1.0 (+https://happydomain.org)` | + +## Dans happyDomain + +Activez ce vérificateur depuis l'onglet **Vérifications** du service d'autoconfiguration de messagerie concerné. Voir {{< relref "/pages/checks" >}} pour la planification et la lecture des vérifications. + +Ce vérificateur est le compagnon naturel d'une configuration de messagerie complète : voir {{< relref "/reference/services/email" >}} pour les services MX, SPF, DKIM et DMARC qui régissent la remise et l'authentification du courrier. diff --git a/content/reference/checkers/email-keys.en.md b/content/reference/checkers/email-keys.en.md new file mode 100644 index 0000000..167cca6 --- /dev/null +++ b/content/reference/checkers/email-keys.en.md @@ -0,0 +1,86 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Mail keys (DKIM / OpenPGP) +description: "Validate DNS-published OpenPGP keys (OPENPGPKEY) and S/MIME certificates (SMIMEA) used for end-to-end mail encryption, including their DNSSEC authentication." +weight: 230 +--- + +The **Mail keys** checker (named *OPENPGPKEY & SMIMEA* in happyDomain) validates the cryptographic keys a domain publishes in DNS so that correspondents can encrypt mail to its users. It covers two DANE-style record types: + +- **`OPENPGPKEY`** ([RFC 7929](https://www.rfc-editor.org/rfc/rfc7929)) — an individual user's OpenPGP public key, published under an owner-hashed name below `._openpgpkey.`. +- **`SMIMEA`** ([RFC 8162](https://www.rfc-editor.org/rfc/rfc8162)) — a user's S/MIME certificate, published under an owner-hashed name below `._smimecert.`. + +This checker is **service-level**: it applies to the OpenPGP and S/MIME services of a subdomain and runs a comprehensive test suite, then renders an HTML report whose top block points to the fix for the most common failure scenarios. + +{{% notice style="info" title="Publication and structure, not cryptographic trust" %}} +This checker validates DNS publication and the structure and metadata of the keys it finds. It does **not** cryptographically verify them: OpenPGP signatures (self-signatures, third-party certifications) are not verified, and S/MIME chains are not built or validated against any trust anchor (no CRL/OCSP). Authenticity of the records themselves is delegated to a validating resolver via the DNSSEC `AD` flag. Treat a green report as "the record is well-formed and DNSSEC-signed", not as "the key is trustworthy". +{{% /notice %}} + +## What it checks + +### DNS and DNSSEC + +| Rule | What it verifies | Severity | +|---|---|---| +| `dns_query_failed` | The DNS lookup for the record succeeds. | Critical | +| `dns_no_record` | A record is published at the expected owner name. | Critical | +| `dns_record_mismatch` | The record returned by DNS matches the service-declared record. | Warning | +| `dnssec_not_validated` | The record is authenticated by DNSSEC (`AD` flag set). | Critical (Warning if DNSSEC not required) | +| `owner_hash_mismatch` | The owner-name first label equals `hex(sha256(username))[:28]`. | Critical | + +### OpenPGP (`OPENPGPKEY`) + +| Rule | What it verifies | Severity | +|---|---|---| +| `pgp_parse_error` | The record decodes as a valid OpenPGP key. | Critical | +| `pgp_primary_revoked` | The primary key carries no revocation signature. | Critical | +| `pgp_primary_expired` | The primary key has not passed its self-signature expiry. | Critical | +| `pgp_primary_expiring_soon` | The primary key does not expire within the configured window. | Warning | +| `pgp_weak_algorithm` | No legacy algorithm (DSA/ElGamal) is used. | Warning | +| `pgp_weak_key_size` | RSA keys meet the minimum 2048-bit size (3072+ preferred). | Critical | +| `pgp_no_encryption_subkey` | At least one active key advertises encryption capability. | Critical | +| `pgp_no_identity` | The key carries at least one self-signed User ID. | Warning | +| `pgp_uid_mismatch` | At least one UID references ``. | Info | +| `pgp_multiple_entities` | The record carries a single OpenPGP entity (RFC 7929). | Warning | +| `pgp_record_too_large` | The record stays below 4 KiB to fit typical UDP answers. | Warning | + +### S/MIME (`SMIMEA`) + +| Rule | What it verifies | Severity | +|---|---|---| +| `smimea_bad_usage` | The usage field is 0, 1, 2 or 3. | Critical | +| `smimea_bad_selector` | The selector field is 0 (Cert) or 1 (SPKI). | Critical | +| `smimea_bad_match_type` | The matching type is 0 (Full), 1 (SHA-256) or 2 (SHA-512). | Critical | +| `smimea_cert_parse_error` | The record decodes as a valid X.509 certificate or SPKI. | Critical | +| `smimea_cert_not_yet_valid` | The certificate's `NotBefore` is in the past. | Critical | +| `smimea_cert_expired` | The certificate's `NotAfter` is in the future. | Critical | +| `smimea_cert_expiring_soon` | The certificate does not expire within the configured window. | Warning | +| `smimea_no_email_protection_eku` | The certificate advertises the `emailProtection` EKU. | Critical (Warning if not required) | +| `smimea_missing_key_usage` | The certificate carries `digitalSignature` and/or `keyEncipherment` key usage. | Warning | +| `smimea_weak_signature_algorithm` | The certificate is not signed with a deprecated algorithm (MD2/MD5/SHA-1). | Critical | +| `smimea_weak_key_size` | RSA keys meet the minimum 2048-bit size (3072+ preferred). | Critical | +| `smimea_self_signed` | Flags self-signed certificates paired with PKIX-EE (usage 1). | Info | +| `smimea_email_mismatch` | At least one email SAN begins with `@`. | Info | +| `smimea_hash_only` | Notes that matching types 1/2 transport only a digest, preventing certificate inspection. | Info | + +## Options + +| Option | Meaning | Default | +|---|---|---| +| DNS resolver (`resolver`) | Validating resolver to query (comma-separated list accepted). Empty uses the system resolver. | (system) | +| `certExpiryWarnDays` | Window, in days, for the `expiring_soon` warnings (PGP and S/MIME). | 30 | +| `requireDNSSEC` | When false, a missing `AD` flag is a Warning instead of Critical. | true | +| `requireEmailProtection` | When false, a missing `emailProtection` EKU is a Warning instead of Critical. | true | + +The domain origin, subdomain, service and service type are auto-filled by happyDomain. + +{{% notice style="info" title="Query a validating resolver" %}} +Because record authenticity is delegated to DNSSEC, run this checker against a resolver you trust to perform DNSSEC validation, so the `AD` flag reflects a real validation. +{{% /notice %}} + +## In happyDomain + +Enable this checker from the **Checks** tab of the relevant OpenPGP or S/MIME service. See {{< relref "/pages/checks" >}} for the general workflow. + +These records share their security model with DNSSEC: to confirm your zone's signing chain is itself sound, see {{< relref "/reference/checkers/dnssec" >}}. For the surrounding mail configuration, see {{< relref "/reference/services/email" >}}. diff --git a/content/reference/checkers/email-keys.fr.md b/content/reference/checkers/email-keys.fr.md new file mode 100644 index 0000000..f6707a5 --- /dev/null +++ b/content/reference/checkers/email-keys.fr.md @@ -0,0 +1,86 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Clés de messagerie (DKIM / OpenPGP) +description: "Valide les clés OpenPGP (OPENPGPKEY) et les certificats S/MIME (SMIMEA) publiés dans le DNS pour le chiffrement de bout en bout du courrier, ainsi que leur authentification DNSSEC." +weight: 230 +--- + +Le vérificateur de **clés de messagerie** (nommé *OPENPGPKEY & SMIMEA* dans happyDomain) valide les clés cryptographiques qu'un domaine publie dans le DNS afin que ses correspondants puissent chiffrer le courrier destiné à ses utilisateurs. Il couvre deux types d'enregistrements de style DANE : + +- **`OPENPGPKEY`** ([RFC 7929](https://www.rfc-editor.org/rfc/rfc7929)) : la clé publique OpenPGP d'un utilisateur, publiée sous un nom haché du propriétaire, sous `._openpgpkey.`. +- **`SMIMEA`** ([RFC 8162](https://www.rfc-editor.org/rfc/rfc8162)) : le certificat S/MIME d'un utilisateur, publié sous un nom haché du propriétaire, sous `._smimecert.`. + +Ce vérificateur s'applique au **niveau service** : il concerne les services OpenPGP et S/MIME d'un sous-domaine, exécute une suite de tests complète, puis produit un rapport HTML dont le bloc supérieur pointe vers la correction des défauts les plus courants. + +{{% notice style="info" title="Publication et structure, pas confiance cryptographique" %}} +Ce vérificateur valide la publication DNS ainsi que la structure et les métadonnées des clés qu'il trouve. Il ne les vérifie pas cryptographiquement : les signatures OpenPGP (auto-signatures, certifications par des tiers) ne sont pas vérifiées, et les chaînes S/MIME ne sont ni construites ni validées par rapport à une ancre de confiance (pas de CRL/OCSP). L'authenticité des enregistrements eux-mêmes est déléguée à un résolveur validant via le drapeau DNSSEC `AD`. Considérez un rapport vert comme « l'enregistrement est bien formé et signé par DNSSEC », et non comme « la clé est digne de confiance ». +{{% /notice %}} + +## Ce qui est vérifié + +### DNS et DNSSEC + +| Règle | Ce qui est vérifié | Sévérité | +|---|---|---| +| `dns_query_failed` | La requête DNS de l'enregistrement aboutit. | Critique | +| `dns_no_record` | Un enregistrement est publié au nom de propriétaire attendu. | Critique | +| `dns_record_mismatch` | L'enregistrement renvoyé par le DNS correspond à celui déclaré par le service. | Avertissement | +| `dnssec_not_validated` | L'enregistrement est authentifié par DNSSEC (drapeau `AD` posé). | Critique (Avertissement si DNSSEC non exigé) | +| `owner_hash_mismatch` | Le premier label du nom de propriétaire vaut `hex(sha256(username))[:28]`. | Critique | + +### OpenPGP (`OPENPGPKEY`) + +| Règle | Ce qui est vérifié | Sévérité | +|---|---|---| +| `pgp_parse_error` | L'enregistrement se décode en une clé OpenPGP valide. | Critique | +| `pgp_primary_revoked` | La clé primaire ne porte aucune signature de révocation. | Critique | +| `pgp_primary_expired` | La clé primaire n'a pas dépassé l'expiration de son auto-signature. | Critique | +| `pgp_primary_expiring_soon` | La clé primaire n'expire pas dans la fenêtre configurée. | Avertissement | +| `pgp_weak_algorithm` | Aucun algorithme ancien (DSA/ElGamal) n'est employé. | Avertissement | +| `pgp_weak_key_size` | Les clés RSA respectent la taille minimale de 2048 bits (3072+ préférée). | Critique | +| `pgp_no_encryption_subkey` | Au moins une clé active annonce une capacité de chiffrement. | Critique | +| `pgp_no_identity` | La clé porte au moins un identifiant utilisateur auto-signé. | Avertissement | +| `pgp_uid_mismatch` | Au moins un UID référence ``. | Info | +| `pgp_multiple_entities` | L'enregistrement porte une seule entité OpenPGP (RFC 7929). | Avertissement | +| `pgp_record_too_large` | L'enregistrement reste sous 4 Kio pour tenir dans une réponse UDP typique. | Avertissement | + +### S/MIME (`SMIMEA`) + +| Règle | Ce qui est vérifié | Sévérité | +|---|---|---| +| `smimea_bad_usage` | Le champ usage vaut 0, 1, 2 ou 3. | Critique | +| `smimea_bad_selector` | Le champ sélecteur vaut 0 (Cert) ou 1 (SPKI). | Critique | +| `smimea_bad_match_type` | Le type de correspondance vaut 0 (Full), 1 (SHA-256) ou 2 (SHA-512). | Critique | +| `smimea_cert_parse_error` | L'enregistrement se décode en un certificat X.509 ou un SPKI valide. | Critique | +| `smimea_cert_not_yet_valid` | Le `NotBefore` du certificat est dans le passé. | Critique | +| `smimea_cert_expired` | Le `NotAfter` du certificat est dans le futur. | Critique | +| `smimea_cert_expiring_soon` | Le certificat n'expire pas dans la fenêtre configurée. | Avertissement | +| `smimea_no_email_protection_eku` | Le certificat annonce l'EKU `emailProtection`. | Critique (Avertissement si non exigé) | +| `smimea_missing_key_usage` | Le certificat porte l'usage de clé `digitalSignature` et/ou `keyEncipherment`. | Avertissement | +| `smimea_weak_signature_algorithm` | Le certificat n'est pas signé avec un algorithme déprécié (MD2/MD5/SHA-1). | Critique | +| `smimea_weak_key_size` | Les clés RSA respectent la taille minimale de 2048 bits (3072+ préférée). | Critique | +| `smimea_self_signed` | Signale les certificats auto-signés associés à PKIX-EE (usage 1). | Info | +| `smimea_email_mismatch` | Au moins un SAN courriel commence par `@`. | Info | +| `smimea_hash_only` | Note que les types de correspondance 1/2 ne transportent qu'un condensat, empêchant l'inspection du certificat. | Info | + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| Résolveur DNS (`resolver`) | Résolveur validant à interroger (liste séparée par des virgules acceptée). Vide : résolveur système. | (système) | +| `certExpiryWarnDays` | Fenêtre, en jours, des avertissements `expiring_soon` (PGP et S/MIME). | 30 | +| `requireDNSSEC` | Si faux, un drapeau `AD` absent devient un Avertissement plutôt qu'un Critique. | true | +| `requireEmailProtection` | Si faux, une EKU `emailProtection` absente devient un Avertissement plutôt qu'un Critique. | true | + +L'origine de la zone, le sous-domaine, le service et le type de service sont préremplis par happyDomain. + +{{% notice style="info" title="Interrogez un résolveur validant" %}} +L'authenticité des enregistrements étant déléguée au DNSSEC, exécutez ce vérificateur contre un résolveur en qui vous avez confiance pour effectuer la validation DNSSEC, afin que le drapeau `AD` reflète une validation réelle. +{{% /notice %}} + +## Dans happyDomain + +Activez ce vérificateur depuis l'onglet **Vérifications** du service OpenPGP ou S/MIME concerné. Voir {{< relref "/pages/checks" >}} pour le fonctionnement général. + +Ces enregistrements partagent leur modèle de sécurité avec le DNSSEC : pour confirmer que la chaîne de signature de votre zone est elle-même saine, voir {{< relref "/reference/checkers/dnssec" >}}. Pour la configuration de messagerie environnante, voir {{< relref "/reference/services/email" >}}. diff --git a/content/reference/checkers/external-expiry.en.md b/content/reference/checkers/external-expiry.en.md new file mode 100644 index 0000000..e91a8a0 --- /dev/null +++ b/content/reference/checkers/external-expiry.en.md @@ -0,0 +1,38 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: External-reference expiry +description: "Retrieves the WHOIS/RDAP registration facts for the external domains your zone points to, so their expiry can be evaluated." +weight: 50 +--- + +The **External-reference expiry** checker looks up the registration facts of the *external* domains your zone refers to. When a record points at a name you do not own (a `CNAME` to a third-party service, an `MX` to an external provider, an `NS` delegation…), the safety of your zone depends on that external domain staying registered. If it expires and is re-registered by someone else, the pointer can be hijacked. + +This is a **zone-level** checker: it enumerates the external targets discovered in the zone and performs one WHOIS/RDAP lookup per distinct registrable domain. Targets sharing the same registrable domain reuse a single lookup, and lookups run with a bounded concurrency so a large zone does not overwhelm the registry. + +## What it checks + +This checker is primarily a **collector**. It gathers per-target WHOIS facts (registrable name, expiry date, creation date, registrar, status) and publishes them for the *dangling-reference* checker, which is where the actionable verdicts about expiration, redemption or recent re-registration are emitted. + +Its own rule, `external_whois_collected`, reports only how the collection went: + +| Status | Condition | +|--------|-----------| +| **OK** | WHOIS was collected for every external target | +| **Info** | Some lookups succeeded and some failed (a partial result), or no external target was reported at all | +| **Warning** | The WHOIS lookup failed for *all* external targets | +| **Error** | The external WHOIS observation could not be read | + +{{% notice style="info" title="Verdicts live in the dangling-reference checker" %}} +This checker does not decide whether an external domain is dangerously close to expiry. It only retrieves the facts. The expiry, redemption and re-registration verdicts are surfaced by the companion dangling-reference checker, which consumes the facts collected here. +{{% /notice %}} + +## Options + +This checker has no user-tunable options. The list of external targets is supplied automatically from the zone's discovered references. + +## In happyDomain + +Enable this checker from the zone's **Checks** view; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The discovery of external targets is automatic. + +For the registration of the domains you own directly, see {{< relref "/reference/checkers/domain-expiry" >}}. diff --git a/content/reference/checkers/external-expiry.fr.md b/content/reference/checkers/external-expiry.fr.md new file mode 100644 index 0000000..630f72a --- /dev/null +++ b/content/reference/checkers/external-expiry.fr.md @@ -0,0 +1,38 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Expiration des références externes +description: "Récupère les informations d'enregistrement WHOIS/RDAP des domaines externes vers lesquels pointe votre zone, afin d'évaluer leur expiration." +weight: 50 +--- + +Le vérificateur **Expiration des références externes** récupère les informations d'enregistrement des domaines *externes* auxquels votre zone fait référence. Lorsqu'un enregistrement pointe vers un nom que vous ne possédez pas (un `CNAME` vers un service tiers, un `MX` vers un prestataire externe, une délégation `NS`, etc.), la sûreté de votre zone dépend du maintien de l'enregistrement de ce domaine externe. S'il expire et qu'il est ré-enregistré par quelqu'un d'autre, le pointeur peut être détourné. + +Il s'agit d'un vérificateur de **niveau zone** : il énumère les cibles externes découvertes dans la zone et effectue une requête WHOIS/RDAP par domaine enregistrable distinct. Les cibles partageant le même domaine enregistrable réutilisent une seule requête, et les requêtes s'exécutent avec une concurrence limitée afin qu'une zone volumineuse ne sature pas le registre. + +## Ce qui est vérifié + +Ce vérificateur est avant tout un **collecteur**. Il rassemble les informations WHOIS par cible (nom enregistrable, date d'expiration, date de création, bureau d'enregistrement, statuts) et les publie pour le vérificateur de *références orphelines*, où sont émis les verdicts exploitables sur l'expiration, la période de rédemption ou un ré-enregistrement récent. + +Sa propre règle, `external_whois_collected`, ne rapporte que le déroulement de la collecte : + +| Statut | Condition | +|--------|-----------| +| **OK** | Le WHOIS a été collecté pour toutes les cibles externes | +| **Info** | Certaines requêtes ont réussi et d'autres ont échoué (résultat partiel), ou aucune cible externe n'a été signalée | +| **Avertissement** | La requête WHOIS a échoué pour *toutes* les cibles externes | +| **Erreur** | L'observation WHOIS externe n'a pas pu être lue | + +{{% notice style="info" title="Les verdicts se trouvent dans le vérificateur de références orphelines" %}} +Ce vérificateur ne décide pas si un domaine externe est dangereusement proche de l'expiration. Il se contente d'en récupérer les informations. Les verdicts d'expiration, de rédemption et de ré-enregistrement sont produits par le vérificateur de références orphelines associé, qui consomme les informations collectées ici. +{{% /notice %}} + +## Options + +Ce vérificateur ne propose aucune option configurable. La liste des cibles externes est fournie automatiquement à partir des références découvertes dans la zone. + +## Dans happyDomain + +Activez ce vérificateur depuis la vue **Vérifications** de la zone ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. La découverte des cibles externes est automatique. + +Pour l'enregistrement des domaines que vous possédez directement, consultez {{< relref "/reference/checkers/domain-expiry" >}}. diff --git a/content/reference/checkers/happydeliver.en.md b/content/reference/checkers/happydeliver.en.md new file mode 100644 index 0000000..0dbeff1 --- /dev/null +++ b/content/reference/checkers/happydeliver.en.md @@ -0,0 +1,85 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Outbound deliverability (happyDeliver) +description: "Send a real test message from your domain to a happyDeliver instance and grade how well it would be delivered to a real inbox." +weight: 210 +--- + +The **Outbound deliverability** checker (named *Outbound deliverability (via happyDeliver)* in happyDomain) measures how a message sent **from your domain** would actually fare on its way to a recipient's inbox. Rather than inspecting DNS records in isolation, it drives an external [happyDeliver](https://git.nemunai.re/happyDomain/happyDeliver) instance to perform an end-to-end test. + +This checker is **service-level**: it is attached to a service (typically the mail configuration of a subdomain) and needs SMTP credentials to send the test message on your behalf. + +## How it works + +For each run, the checker: + +1. Allocates a fresh recipient address on the configured happyDeliver instance. +2. Sends a **real test email** from the tested domain to that address, using the SMTP submission server and credentials you provide. +3. Polls happyDeliver until the message has been received and analysed. +4. Stores happyDeliver's report and exposes one score per section as a metric. + +happyDeliver grades the message across several sections (DNS, authentication, spam filters, blacklists, headers, content) and computes an overall score. The checker turns each section into a rule. + +{{% notice style="info" title="An external happyDeliver instance is required" %}} +This checker does nothing on its own: it needs a reachable happyDeliver instance, identified by its API URL and bearer token. Those are usually configured once by the administrator and can be overridden per domain. +{{% /notice %}} + +## What it checks + +Each section rule compares happyDeliver's score for that section against a configurable minimum. The check is **Critical** when the score falls below the minimum, otherwise **OK**. + +| Rule | What it verifies | Default minimum | +|---|---|---| +| `happydeliver.score.overall` | happyDeliver's Overall score | 70 | +| `happydeliver.score.dns` | DNS configuration score | 70 | +| `happydeliver.score.authentication` | Authentication score (SPF / DKIM / DMARC) | 80 | +| `happydeliver.score.spam` | Spam-filter score | 70 | +| `happydeliver.score.blacklist` | Blacklist score | 90 | +| `happydeliver.score.header` | Header score | 70 | +| `happydeliver.score.content` | Content score | 60 | + +A separate `happydeliver.lifecycle` rule reports the outcome of the run itself: **OK** when the message was analysed, **Critical** when the test address could not be allocated, the message could not be sent, or happyDeliver returned a wait/fetch/parse error, and **Warning** when the message was not analysed before the timeout elapsed. + +Each section minimum can be tuned through its own `min_score_
` rule option in the happyDomain interface. + +## Options + +### Sending (per domain) + +| Option | Meaning | Default | +|---|---|---| +| Sending SMTP host (`smtp_host`) | Hostname or IP of the submission server used to send the test email. **Required.** | (none) | +| Sending SMTP port (`smtp_port`) | Submission port (587 for STARTTLS, 465 for implicit TLS, 25 for plain). | 587 | +| SMTP username (`smtp_username`) | Username for the submission server (omit for anonymous submission). | (none) | +| SMTP password (`smtp_password`) | Password for the submission server. | (none) | +| TLS mode (`smtp_tls`) | How to negotiate TLS: `starttls`, `tls`, or `none`. | `starttls` | +| From address (`from_address`) | Address used in the `From` header; must belong to the tested domain. | `no-reply@` | + +### Message content (per domain) + +| Option | Meaning | Default | +|---|---|---| +| Subject (`subject_override`) | Override the default test subject. | (built-in) | +| Plain-text body (`body_text_override`) | Override the default plain-text body. | (built-in) | +| HTML body (`body_html_override`) | Override the default HTML body. | (built-in) | + +### Timing (per domain) + +| Option | Meaning | Default | +|---|---|---| +| Wait timeout (`wait_timeout`) | Seconds to wait for happyDeliver to receive and analyse the message. | 900 | +| Poll interval (`poll_interval`) | Seconds between status polls (clamped to the 2–60 range). | 5 | + +### Instance (admin, overridable per domain) + +| Option | Meaning | Default | +|---|---|---| +| happyDeliver instance URL (`happydeliver_url`) | Base URL of the happyDeliver API. | (admin) | +| happyDeliver API token (`happydeliver_token`) | Bearer token for the happyDeliver API. | (admin) | + +## In happyDomain + +Enable this checker from the service's **Checks** tab and provide the SMTP submission details so happyDomain can send the test message. See {{< relref "/pages/checks" >}} for the general workflow of scheduling and reading checks. + +Because deliverability depends heavily on your anti-spoofing posture, pair this checker with a well-configured {{< relref "/reference/services/email" >}} setup (SPF, DKIM and DMARC). For the DNSSEC half of your domain's trust chain, see {{< relref "/reference/checkers/dnssec" >}}. diff --git a/content/reference/checkers/happydeliver.fr.md b/content/reference/checkers/happydeliver.fr.md new file mode 100644 index 0000000..9096924 --- /dev/null +++ b/content/reference/checkers/happydeliver.fr.md @@ -0,0 +1,85 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Délivrabilité sortante (happyDeliver) +description: "Envoie un véritable message de test depuis votre domaine vers une instance happyDeliver et évalue la qualité de sa délivrabilité jusqu'à une boîte de réception réelle." +weight: 210 +--- + +Le vérificateur de **délivrabilité sortante** (nommé *Outbound deliverability (via happyDeliver)* dans happyDomain) mesure le sort que connaîtrait un message envoyé **depuis votre domaine** sur le chemin de la boîte de réception du destinataire. Au lieu d'examiner les enregistrements DNS isolément, il pilote une instance externe [happyDeliver](https://git.nemunai.re/happyDomain/happyDeliver) pour réaliser un test de bout en bout. + +Ce vérificateur s'applique au **niveau service** : il est rattaché à un service (typiquement la configuration de messagerie d'un sous-domaine) et a besoin d'identifiants SMTP pour envoyer le message de test en votre nom. + +## Fonctionnement + +À chaque exécution, le vérificateur : + +1. Alloue une adresse de réception neuve sur l'instance happyDeliver configurée. +2. Envoie un **véritable courriel de test** depuis le domaine testé vers cette adresse, en utilisant le serveur de soumission SMTP et les identifiants que vous fournissez. +3. Interroge happyDeliver jusqu'à ce que le message ait été reçu et analysé. +4. Conserve le rapport de happyDeliver et expose le score de chaque section sous forme de métrique. + +happyDeliver note le message sur plusieurs sections (DNS, authentification, filtres anti-spam, listes noires, en-têtes, contenu) et calcule un score global. Le vérificateur transforme chaque section en une règle. + +{{% notice style="info" title="Une instance happyDeliver externe est requise" %}} +Ce vérificateur ne fait rien seul : il lui faut une instance happyDeliver accessible, identifiée par l'URL de son API et un jeton d'authentification. Ceux-ci sont en général configurés une fois par l'administrateur et peuvent être redéfinis par domaine. +{{% /notice %}} + +## Ce qui est vérifié + +Chaque règle de section compare le score happyDeliver de cette section à un minimum configurable. La vérification est **Critique** lorsque le score passe sous le minimum, sinon **OK**. + +| Règle | Ce qui est vérifié | Minimum par défaut | +|---|---|---| +| `happydeliver.score.overall` | Score global de happyDeliver | 70 | +| `happydeliver.score.dns` | Score de configuration DNS | 70 | +| `happydeliver.score.authentication` | Score d'authentification (SPF / DKIM / DMARC) | 80 | +| `happydeliver.score.spam` | Score des filtres anti-spam | 70 | +| `happydeliver.score.blacklist` | Score des listes noires | 90 | +| `happydeliver.score.header` | Score des en-têtes | 70 | +| `happydeliver.score.content` | Score du contenu | 60 | + +Une règle distincte, `happydeliver.lifecycle`, rapporte le déroulement de l'exécution elle-même : **OK** lorsque le message a été analysé, **Critique** lorsque l'adresse de test n'a pu être allouée, que le message n'a pu être envoyé, ou que happyDeliver a renvoyé une erreur d'attente, de récupération ou d'analyse, et **Avertissement** lorsque le message n'a pas été analysé avant l'expiration du délai. + +Chaque minimum de section se règle via son option de règle `min_score_
` dans l'interface de happyDomain. + +## Options + +### Envoi (par domaine) + +| Option | Signification | Défaut | +|---|---|---| +| Serveur SMTP d'envoi (`smtp_host`) | Nom d'hôte ou IP du serveur de soumission utilisé pour envoyer le courriel de test. **Obligatoire.** | (aucun) | +| Port SMTP d'envoi (`smtp_port`) | Port de soumission (587 pour STARTTLS, 465 pour TLS implicite, 25 pour le texte clair). | 587 | +| Identifiant SMTP (`smtp_username`) | Identifiant du serveur de soumission (à omettre pour une soumission anonyme). | (aucun) | +| Mot de passe SMTP (`smtp_password`) | Mot de passe du serveur de soumission. | (aucun) | +| Mode TLS (`smtp_tls`) | Mode de négociation TLS : `starttls`, `tls` ou `none`. | `starttls` | +| Adresse d'expéditeur (`from_address`) | Adresse utilisée dans l'en-tête `From` ; elle doit appartenir au domaine testé. | `no-reply@` | + +### Contenu du message (par domaine) + +| Option | Signification | Défaut | +|---|---|---| +| Sujet (`subject_override`) | Remplace le sujet de test par défaut. | (intégré) | +| Corps texte (`body_text_override`) | Remplace le corps texte par défaut. | (intégré) | +| Corps HTML (`body_html_override`) | Remplace le corps HTML par défaut. | (intégré) | + +### Temporisation (par domaine) + +| Option | Signification | Défaut | +|---|---|---| +| Délai d'attente (`wait_timeout`) | Secondes d'attente pour que happyDeliver reçoive et analyse le message. | 900 | +| Intervalle d'interrogation (`poll_interval`) | Secondes entre deux interrogations de statut (borné à la plage 2 à 60). | 5 | + +### Instance (admin, redéfinissable par domaine) + +| Option | Signification | Défaut | +|---|---|---| +| URL de l'instance happyDeliver (`happydeliver_url`) | URL de base de l'API happyDeliver. | (admin) | +| Jeton d'API happyDeliver (`happydeliver_token`) | Jeton d'authentification de l'API happyDeliver. | (admin) | + +## Dans happyDomain + +Activez ce vérificateur depuis l'onglet **Vérifications** du service et fournissez les détails de soumission SMTP afin que happyDomain puisse envoyer le message de test. Voir {{< relref "/pages/checks" >}} pour le fonctionnement général de la planification et de la lecture des vérifications. + +La délivrabilité dépendant fortement de votre posture anti-usurpation, associez ce vérificateur à une configuration {{< relref "/reference/services/email" >}} bien réglée (SPF, DKIM et DMARC). Pour la partie DNSSEC de la chaîne de confiance de votre domaine, voir {{< relref "/reference/checkers/dnssec" >}}. diff --git a/content/reference/checkers/http.en.md b/content/reference/checkers/http.en.md new file mode 100644 index 0000000..5e0e2d1 --- /dev/null +++ b/content/reference/checkers/http.en.md @@ -0,0 +1,54 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: HTTP / HTTPS +description: "Probes a web server over HTTP and HTTPS and evaluates reachability, the redirect chain, and the full battery of HTTP security response headers and cookie hygiene rules." +weight: 180 +--- + +The **HTTP / HTTPS** checker probes the web server declared by a *Server* service over plain HTTP (port 80) and HTTPS (port 443), then evaluates a battery of independent rules on the responses: reachability, the HTTP→HTTPS redirect chain, and the modern set of HTTP security headers (HSTS, CSP, frame options, cross-origin isolation…) along with cookie hygiene. + +**Scope:** service-level. It attaches to services of type `abstract.Server` (a subdomain that publishes `A`/`AAAA` records) and is configured from that service's **Checks** tab. + +Deep TLS and certificate analysis is intentionally delegated to the {{< relref "/reference/checkers/tls" >}} checker; this checker relies on TLS only as a transport. + +## What it checks + +| Rule | Verifies | Severity | +|------|----------|----------| +| `http.tcp_reachable` | Every probed IP accepts an HTTP connection on port 80. | Critical | +| `https.tcp_reachable` | Every probed IP accepts an HTTPS connection on port 443. | Critical | +| `http.https_redirect` | Plain HTTP redirects to an HTTPS URL on the same host. | Warning | +| `http.redirect_chain` | The redirect chain has no loops, excessive length, or scheme downgrades. | Warning | +| `http.redirect_permanence` | HTTP→HTTPS upgrade uses 301 or 308 (permanent) rather than 302/307. | Warning | +| `http.hsts` | Presence and quality of the Strict-Transport-Security header on HTTPS. | Warning | +| `http.csp` | Presence and quality of the Content-Security-Policy header on HTTPS. | Warning | +| `http.x_frame_options` | Responses set X-Frame-Options or a CSP `frame-ancestors` directive. | Warning | +| `http.x_content_type_options` | Responses set `X-Content-Type-Options: nosniff`. | Warning | +| `http.x_xss_protection` | Reports the legacy X-XSS-Protection header value (CSP is the proper replacement). | Info | +| `http.referrer_policy` | Responses set a privacy-preserving Referrer-Policy header. | Warning | +| `http.permissions_policy` | The Permissions-Policy header restricts powerful APIs (camera, microphone, geolocation…). | Warning | +| `http.coop` | The Cross-Origin-Opener-Policy header is set for cross-origin process isolation. | Warning | +| `http.coep` | The Cross-Origin-Embedder-Policy header is set (required with COOP for cross-origin isolation). | Warning | +| `http.corp` | The Cross-Origin-Resource-Policy header restricts cross-origin embedding. | Warning | +| `http.cookie_flags` | Cookies set over HTTPS use the Secure, HttpOnly and SameSite attributes. | Warning | +| `http.cookie_prefixes` | Cookies using the `__Secure-` / `__Host-` prefixes meet the RFC 6265bis constraints. | Warning | +| `http.cookie_size` | Flags Set-Cookie lines exceeding the 4096-byte minimum browsers must support. | Warning | +| `http.sri` | Reports cross-origin script/style tags missing Subresource Integrity attributes. | Warning | +| `http.security_txt` | Reports whether `/.well-known/security.txt` (RFC 9116) is published. | Warning | + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Per-request timeout (ms) (`probeTimeoutMs`) | Maximum time allowed for a single HTTP/HTTPS request. | 10000 | +| Max redirects to follow (`maxRedirects`) | Stop following redirects after this many hops. | 5 | +| User-Agent (`userAgent`) | User-Agent header sent with every request. | `happyDomain-checker-http/1.0` | +| Require HTTPS (`requireHTTPS`) | Plain HTTP must redirect to HTTPS. | true | +| Require HSTS (`requireHSTS`) | HTTPS responses must include a Strict-Transport-Security header. | true | +| Min HSTS max-age (days) (`minHSTSMaxAgeDays`) | Minimum acceptable HSTS max-age, in days. | 180 | +| Require Content-Security-Policy (`requireCSP`) | HTTPS responses must include a Content-Security-Policy header. | false | + +## In happyDomain + +This is a service-level checker: configure it from the **Checks** tab of the *Server* service on the relevant subdomain. For deep certificate posture, add the {{< relref "/reference/checkers/tls" >}} checker as well. For the general workflow of configuring and reading checks, see {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/http.fr.md b/content/reference/checkers/http.fr.md new file mode 100644 index 0000000..d9131b7 --- /dev/null +++ b/content/reference/checkers/http.fr.md @@ -0,0 +1,54 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: HTTP / HTTPS +description: "Sonde un serveur web en HTTP et HTTPS et évalue l'accessibilité, la chaîne de redirections, ainsi que l'ensemble des en-têtes de sécurité HTTP et des règles d'hygiène des cookies." +weight: 180 +--- + +Le vérificateur **HTTP / HTTPS** sonde le serveur web déclaré par un service « Serveur » en HTTP simple (port 80) et en HTTPS (port 443), puis évalue une série de règles indépendantes sur les réponses : accessibilité, chaîne de redirections HTTP vers HTTPS et ensemble moderne des en-têtes de sécurité HTTP (HSTS, CSP, options de cadre, isolation inter-origines, etc.), ainsi que l'hygiène des cookies. + +**Portée** : niveau service. Il s'attache aux services de type `abstract.Server` (un sous-domaine publiant des enregistrements `A`/`AAAA`) et se configure depuis l'onglet **Vérifications** de ce service. + +L'analyse approfondie du TLS et des certificats est volontairement déléguée au vérificateur {{< relref "/reference/checkers/tls" >}} ; ce vérificateur ne s'appuie sur TLS que comme transport. + +## Ce qu'il vérifie + +| Règle | Vérifie | Sévérité | +|-------|---------|----------| +| `http.tcp_reachable` | Chaque IP sondée accepte une connexion HTTP sur le port 80. | Critique | +| `https.tcp_reachable` | Chaque IP sondée accepte une connexion HTTPS sur le port 443. | Critique | +| `http.https_redirect` | Le HTTP simple redirige vers une URL HTTPS sur le même hôte. | Avertissement | +| `http.redirect_chain` | La chaîne de redirections est sans boucle, sans longueur excessive ni rétrogradation de schéma. | Avertissement | +| `http.redirect_permanence` | La bascule HTTP vers HTTPS utilise 301 ou 308 (permanent) plutôt que 302/307. | Avertissement | +| `http.hsts` | Présence et qualité de l'en-tête Strict-Transport-Security en HTTPS. | Avertissement | +| `http.csp` | Présence et qualité de l'en-tête Content-Security-Policy en HTTPS. | Avertissement | +| `http.x_frame_options` | Les réponses définissent X-Frame-Options ou une directive CSP `frame-ancestors`. | Avertissement | +| `http.x_content_type_options` | Les réponses définissent `X-Content-Type-Options: nosniff`. | Avertissement | +| `http.x_xss_protection` | Rapporte la valeur de l'en-tête hérité X-XSS-Protection (CSP est le remplaçant adéquat). | Info | +| `http.referrer_policy` | Les réponses définissent un en-tête Referrer-Policy respectueux de la vie privée. | Avertissement | +| `http.permissions_policy` | L'en-tête Permissions-Policy restreint les API sensibles (caméra, microphone, géolocalisation, etc.). | Avertissement | +| `http.coop` | L'en-tête Cross-Origin-Opener-Policy est défini pour l'isolation de processus inter-origines. | Avertissement | +| `http.coep` | L'en-tête Cross-Origin-Embedder-Policy est défini (requis avec COOP pour l'isolation inter-origines). | Avertissement | +| `http.corp` | L'en-tête Cross-Origin-Resource-Policy restreint l'inclusion inter-origines. | Avertissement | +| `http.cookie_flags` | Les cookies posés en HTTPS utilisent les attributs Secure, HttpOnly et SameSite. | Avertissement | +| `http.cookie_prefixes` | Les cookies utilisant les préfixes `__Secure-` / `__Host-` respectent les contraintes RFC 6265bis. | Avertissement | +| `http.cookie_size` | Signale les lignes Set-Cookie dépassant les 4096 octets que les navigateurs doivent supporter au minimum. | Avertissement | +| `http.sri` | Rapporte les balises script/style inter-origines dépourvues d'attributs Subresource Integrity. | Avertissement | +| `http.security_txt` | Indique si `/.well-known/security.txt` (RFC 9116) est publié. | Avertissement | + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Délai par requête (ms) (`probeTimeoutMs`) | Temps maximal alloué à une requête HTTP/HTTPS. | 10000 | +| Nombre maximal de redirections (`maxRedirects`) | Arrête de suivre les redirections au-delà de ce nombre de sauts. | 5 | +| User-Agent (`userAgent`) | En-tête User-Agent envoyé à chaque requête. | `happyDomain-checker-http/1.0` | +| Exiger HTTPS (`requireHTTPS`) | Le HTTP simple doit rediriger vers HTTPS. | true | +| Exiger HSTS (`requireHSTS`) | Les réponses HTTPS doivent inclure un en-tête Strict-Transport-Security. | true | +| max-age HSTS minimal (jours) (`minHSTSMaxAgeDays`) | Valeur max-age HSTS minimale acceptable, en jours. | 180 | +| Exiger Content-Security-Policy (`requireCSP`) | Les réponses HTTPS doivent inclure un en-tête Content-Security-Policy. | false | + +## Dans happyDomain + +C'est un vérificateur de niveau service : configurez-le depuis l'onglet **Vérifications** du service « Serveur » sur le sous-domaine concerné. Pour la posture détaillée des certificats, ajoutez aussi le vérificateur {{< relref "/reference/checkers/tls" >}}. Pour le fonctionnement général de la configuration et de la lecture des vérifications, voir {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/kerberos.en.md b/content/reference/checkers/kerberos.en.md new file mode 100644 index 0000000..5f16d06 --- /dev/null +++ b/content/reference/checkers/kerberos.en.md @@ -0,0 +1,49 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Kerberos +description: "Audits a Kerberos realm from its DNS records: SRV layout, KDC/kadmin/kpasswd reachability, an anonymous AS-REQ probe (realm, enctypes, pre-auth, clock skew), and an optional authenticated round-trip." +weight: 260 +--- + +The **Kerberos** checker audits a Kerberos realm starting from its DNS records. From the realm name (derived in uppercase from the domain) and the SRV records grouped under the *Kerberos* service, it runs a series of **anonymous probes** and, when credentials are supplied, an optional **authenticated round-trip** — giving a combined picture of the realm's availability and security posture. + +This checker is **service-level**: it targets a *Kerberos* service (`abstract.Kerberos`) published on a subdomain and is configured from that service's own **Checks** tab. It inspects the SRV layout (`_kerberos._tcp`, `_kerberos._udp`, `_kerberos-master._tcp`, `_kerberos-adm._tcp`, `_kpasswd._tcp`, `_kpasswd._udp`), forward-resolves every SRV target (A + AAAA), tests TCP reachability of each KDC/kadmin/kpasswd host and UDP reachability of the KDC via a real AS-REQ. The anonymous AS-REQ probe confirms the realm, reads the supported enctypes from `ETYPE-INFO2`, detects a PKINIT hint (`PA-PK-AS-REQ`) and measures clock skew. + +{{% notice style="info" title="Credentials are forwarded to the KDC" %}} +When a principal and password are supplied, they are used once to obtain a TGT and then a TGS-REQ for the target service; they are forwarded to the KDC over the network and are never stored by the checker. Leave them blank to run anonymous probes only. +{{% /notice %}} + +## What it checks + +| Rule | What it verifies | Severity | +|---|---|---| +| `kerberos.srv_present` | At least one `_kerberos._tcp` / `_kerberos._udp` SRV record is published for the realm. | Critical | +| `kerberos.kdc_reachable` | At least one KDC endpoint (TCP/UDP 88) accepts a connection. | Critical | +| `kerberos.as_probe` | The anonymous AS-REQ probe received a sane reply (`KRB-ERROR` or `AS-REP`). | Critical | +| `kerberos.realm_match` | The KDC answers for the expected realm name. | Critical | +| `kerberos.preauth_required` | Flags KDCs that return an `AS-REP` without requiring pre-authentication (AS-REP roasting exposure). | Warning | +| `kerberos.clock_skew` | The KDC clock is within tolerance of the checker's clock. | Critical | +| `kerberos.enctypes` | Reviews the encryption types advertised by the KDC, flagging DES/RC4-only configurations. | Critical | +| `kerberos.kadmin_reachable` | Flags kadmin endpoints published via SRV but not reachable. | Warning | +| `kerberos.kpasswd_reachable` | Flags kpasswd endpoints published via SRV but not reachable. | Warning | +| `kerberos.auth_tgt` | The supplied principal/password can obtain a TGT (only runs when credentials are supplied). | Critical | +| `kerberos.auth_tgs` | A TGS-REQ succeeds for the supplied target service (only runs when credentials and a target service are supplied). | Warning | + +The HTML report surfaces the most common misconfigurations with a direct remediation hint: no SRV records (publish `_kerberos._tcp.REALM. SRV …`), an SRV target with no A/AAAA, port 88 unreachable (open TCP+UDP 88), clock skew above the maximum (run ntpd/chrony), weak-enctype-only realms (switch to `aes256-cts-hmac-sha1-96`), the wrong realm in the reply, and AS-REP roasting exposure (enable `requires_preauth`). + +## Options + +| Option | Meaning | Default | +|---|---|---| +| Kerberos realm | DNS domain advertising the realm (auto-filled from the service scope; the realm name is derived in uppercase). Required. | *(auto)* | +| Principal | Optional. Supply to run an authenticated round-trip; leave blank for anonymous probes only. | *(empty)* | +| Password | Optional, secret. Password for the principal above; used once per run and never stored. | *(empty)* | +| Service to request (TGS) | Optional. SPN requested via TGS-REQ once a TGT is acquired. Defaults to `krbtgt` (realm self-test). | *(empty)* | +| Per-probe timeout (seconds) | Timeout for each probe. | `5` | +| Require strong enctypes | When enabled, realms advertising only DES/RC4 are flagged as Critical. | `true` | +| Max tolerated clock skew (seconds) | Default Kerberos tolerance is 300 s; tighter values surface drift earlier. | `300` | + +## In happyDomain + +Enable the Kerberos checker from the **Checks** tab of a Kerberos service. The realm domain is filled in automatically; supply a principal and password only if you want the authenticated TGT/TGS round-trip to run. See {{< relref "/pages/checks" >}} for the full workflow. diff --git a/content/reference/checkers/kerberos.fr.md b/content/reference/checkers/kerberos.fr.md new file mode 100644 index 0000000..6f482a6 --- /dev/null +++ b/content/reference/checkers/kerberos.fr.md @@ -0,0 +1,49 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Kerberos +description: "Audite un royaume Kerberos à partir de ses enregistrements DNS : disposition SRV, accessibilité KDC/kadmin/kpasswd, sonde AS-REQ anonyme (royaume, enctypes, pré-authentification, dérive d'horloge) et aller-retour authentifié facultatif." +weight: 260 +--- + +Le vérificateur **Kerberos** audite un royaume Kerberos à partir de ses enregistrements DNS. À partir du nom du royaume (dérivé en majuscules depuis le domaine) et des enregistrements SRV regroupés sous le service *Kerberos*, il exécute une série de **sondes anonymes** et, lorsque des identifiants sont fournis, un **aller-retour authentifié** facultatif, ce qui donne une vue combinée de la disponibilité et de la posture de sécurité du royaume. + +Il s'agit d'un vérificateur de **niveau service** : il cible un service *Kerberos* (`abstract.Kerberos`) publié sur un sous-domaine et se configure depuis l'onglet **Vérifications** de ce service. Il inspecte la disposition SRV (`_kerberos._tcp`, `_kerberos._udp`, `_kerberos-master._tcp`, `_kerberos-adm._tcp`, `_kpasswd._tcp`, `_kpasswd._udp`), résout en avant chaque cible SRV (A + AAAA), teste l'accessibilité TCP de chaque hôte KDC/kadmin/kpasswd et l'accessibilité UDP du KDC via un véritable AS-REQ. La sonde AS-REQ anonyme confirme le royaume, lit les enctypes pris en charge depuis `ETYPE-INFO2`, détecte un indice PKINIT (`PA-PK-AS-REQ`) et mesure la dérive d'horloge. + +{{% notice style="info" title="Les identifiants sont transmis au KDC" %}} +Lorsqu'un principal et un mot de passe sont fournis, ils servent une fois à obtenir un TGT puis à effectuer un TGS-REQ pour le service cible ; ils sont transmis au KDC sur le réseau et ne sont jamais stockés par le vérificateur. Laissez-les vides pour n'exécuter que les sondes anonymes. +{{% /notice %}} + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié | Gravité | +|---|---|---| +| `kerberos.srv_present` | Au moins un enregistrement SRV `_kerberos._tcp` / `_kerberos._udp` est publié pour le royaume. | Critique | +| `kerberos.kdc_reachable` | Au moins un point d'accès KDC (TCP/UDP 88) accepte une connexion. | Critique | +| `kerberos.as_probe` | La sonde AS-REQ anonyme a reçu une réponse cohérente (`KRB-ERROR` ou `AS-REP`). | Critique | +| `kerberos.realm_match` | Le KDC répond pour le nom de royaume attendu. | Critique | +| `kerberos.preauth_required` | Signale les KDC qui renvoient un `AS-REP` sans exiger de pré-authentification (exposition à l'AS-REP roasting). | Avertissement | +| `kerberos.clock_skew` | L'horloge du KDC est dans la tolérance par rapport à celle du vérificateur. | Critique | +| `kerberos.enctypes` | Examine les types de chiffrement annoncés par le KDC, signalant les configurations limitées à DES/RC4. | Critique | +| `kerberos.kadmin_reachable` | Signale les points d'accès kadmin publiés via SRV mais inaccessibles. | Avertissement | +| `kerberos.kpasswd_reachable` | Signale les points d'accès kpasswd publiés via SRV mais inaccessibles. | Avertissement | +| `kerberos.auth_tgt` | Le principal/mot de passe fourni peut obtenir un TGT (ne s'exécute que si des identifiants sont fournis). | Critique | +| `kerberos.auth_tgs` | Un TGS-REQ réussit pour le service cible fourni (ne s'exécute que si des identifiants et un service cible sont fournis). | Avertissement | + +Le rapport HTML met en avant les erreurs de configuration les plus courantes avec une piste de remédiation directe : absence d'enregistrements SRV (publier `_kerberos._tcp.REALM. SRV …`), une cible SRV sans A/AAAA, le port 88 inaccessible (ouvrir TCP+UDP 88), une dérive d'horloge au-dessus du maximum (lancer ntpd/chrony), des royaumes limités aux enctypes faibles (passer à `aes256-cts-hmac-sha1-96`), un mauvais royaume dans la réponse, et l'exposition à l'AS-REP roasting (activer `requires_preauth`). + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| Royaume Kerberos | Domaine DNS annonçant le royaume (renseigné automatiquement depuis la portée du service ; le nom du royaume est dérivé en majuscules). Obligatoire. | *(auto)* | +| Principal | Facultatif. À fournir pour exécuter un aller-retour authentifié ; laissez vide pour n'exécuter que les sondes anonymes. | *(vide)* | +| Mot de passe | Facultatif, secret. Mot de passe du principal ci-dessus ; utilisé une fois par exécution et jamais stocké. | *(vide)* | +| Service à demander (TGS) | Facultatif. SPN demandé via TGS-REQ une fois un TGT obtenu. Par défaut `krbtgt` (auto-test du royaume). | *(vide)* | +| Délai d'attente par sonde (secondes) | Délai d'attente pour chaque sonde. | `5` | +| Exiger des enctypes forts | Lorsqu'activé, les royaumes n'annonçant que DES/RC4 sont signalés comme Critique. | `true` | +| Dérive d'horloge maximale tolérée (secondes) | La tolérance Kerberos par défaut est de 300 s ; des valeurs plus strictes font apparaître la dérive plus tôt. | `300` | + +## Dans happyDomain + +Activez le vérificateur Kerberos depuis l'onglet **Vérifications** d'un service Kerberos. Le domaine du royaume est renseigné automatiquement ; fournissez un principal et un mot de passe uniquement si vous souhaitez exécuter l'aller-retour authentifié TGT/TGS. Consultez {{< relref "/pages/checks" >}} pour le fonctionnement complet. diff --git a/content/reference/checkers/ldap.en.md b/content/reference/checkers/ldap.en.md new file mode 100644 index 0000000..085ccad --- /dev/null +++ b/content/reference/checkers/ldap.en.md @@ -0,0 +1,51 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: LDAP +description: "Probes a domain's LDAP directory end-to-end: SRV discovery, transport encryption (StartTLS / LDAPS), RootDSE introspection, anonymous exposure, plaintext-bind refusal, and optional authenticated bind." +weight: 250 +--- + +The **LDAP** checker probes a domain's LDAP directory deployment from end to end. Starting from SRV discovery (`_ldap._tcp`, `_ldaps._tcp`), it tests reachability of every endpoint, confirms an encrypted channel is available (StartTLS per RFC 2830 or implicit TLS on port 636), introspects the RootDSE, looks for anonymous information disclosure, verifies the directory refuses cleartext binds, and — when credentials are supplied — performs an authenticated bind over TLS with an optional read test on a base DN. + +This checker is **service-level**: it targets an *LDAP* service (`abstract.LDAP`) published on a subdomain and is configured from that service's own **Checks** tab. For each transport it probes `_ldap._tcp` (falling back to port 389) and `_ldaps._tcp` (falling back to port 636), testing each resolved A/AAAA address per IP family. + +{{% notice style="info" title="TLS posture is folded in, not duplicated" %}} +The LDAP checker confirms only that a TLS session can be established, recording the negotiated version and cipher for context. Each probed endpoint is published as a `tls.endpoint.v1` discovery entry so the dedicated TLS checker can verify the certificate chain, hostname match and expiry. Those findings are folded back onto the LDAP service page through the `ldap.tls_quality` rule — a bad certificate on an LDAP endpoint shows up here, not only in a separate TLS view. See {{< relref "/reference/checkers/tls" >}}. +{{% /notice %}} + +## What it checks + +| Rule | What it verifies | Severity | +|---|---|---| +| `ldap.has_srv` | `_ldap._tcp` / `_ldaps._tcp` SRV records are published and resolvable. | Warning | +| `ldap.endpoint_reachable` | Every discovered LDAP endpoint accepts a TCP connection. | Critical | +| `ldap.has_encrypted_transport` | At least one reachable endpoint offers an encrypted channel (LDAPS or StartTLS). | Critical | +| `ldap.starttls_supported` | StartTLS is offered and the upgrade succeeds on every reachable plain LDAP endpoint. | Critical | +| `ldap.ldaps_handshake` | The direct TLS handshake succeeds on every LDAPS endpoint. | Critical | +| `ldap.starttls_on_ldaps` | Flags servers that needlessly advertise StartTLS on the implicit-TLS LDAPS port. | Info | +| `ldap.ipv6_reachable` | At least one endpoint is reachable over IPv6. | Info | +| `ldap.refuses_plain_bind` | The directory refuses authentication over a cleartext channel (`confidentialityRequired`, resultCode 13, per RFC 4513 §5.1.2). | Critical | +| `ldap.anonymous_search_blocked` | Flags directories that allow an anonymous `baseObject` search of the naming context (information disclosure). | Warning | +| `ldap.rootdse_readable` | The RootDSE is readable over TLS and advertises naming contexts. | Warning | +| `ldap.sasl_mechanisms` | Reviews `supportedSASLMechanisms`: presence of strong mechanisms (SCRAM-*, EXTERNAL, GSSAPI), absence of password-equivalent ones (PLAIN/LOGIN only). | Warning | +| `ldap.protocol_version` | Flags servers that still advertise the deprecated LDAPv2 protocol. | Warning | +| `ldap.bind_credentials` | The supplied bind credentials are accepted by the directory (only runs when `bind_dn` is set). | Critical | +| `ldap.base_dn_read` | The bound account can read the supplied base DN (only runs when `base_dn` is set and the bind succeeded). | Critical | +| `ldap.tls_quality` | Folds the downstream TLS checker findings (certificate chain, hostname match, expiry) onto the LDAP service. | Critical | + +The HTML report leads with the most common failures and includes server-specific remediation (OpenLDAP `olcSecurity`, 389-ds `require_tls`…): no encrypted endpoint reachable, StartTLS missing on 389, a StartTLS handshake that fails, a cleartext bind accepted on 389, an LDAPS handshake that fails, anonymous search exposing the DIT, PLAIN/LOGIN-only SASL, lingering LDAPv2, and rejected bind credentials. + +## Options + +| Option | Meaning | Default | +|---|---|---| +| Domain | The directory's domain (auto-filled from the service scope). Required. | *(auto)* | +| Per-endpoint timeout (seconds) | Connection/probe timeout for each endpoint. | `10` | +| Bind DN | Optional. DN to bind as; used only when a bind password is also set, and only over a TLS-protected channel. | *(empty)* | +| Bind password | Optional, secret. The password is not persisted in the observation payload and is never sent over cleartext. | *(empty)* | +| Base DN (read test) | Optional. After a successful bind, a `baseObject` search on this DN confirms the account has read access. Falls back to an anonymous `baseObject` search when no bind DN is supplied. | *(empty)* | + +## In happyDomain + +Enable the LDAP checker from the **Checks** tab of an LDAP service. The domain is filled in automatically; supply a bind DN and password only if you want the authenticated bind and base-DN read tests to run. See {{< relref "/pages/checks" >}} for the full workflow, and {{< relref "/reference/checkers/tls" >}} for the certificate posture of the same endpoints. diff --git a/content/reference/checkers/ldap.fr.md b/content/reference/checkers/ldap.fr.md new file mode 100644 index 0000000..552c273 --- /dev/null +++ b/content/reference/checkers/ldap.fr.md @@ -0,0 +1,51 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: LDAP +description: "Sonde l'annuaire LDAP d'un domaine de bout en bout : découverte SRV, chiffrement du transport (StartTLS / LDAPS), introspection RootDSE, exposition anonyme, refus du bind en clair et bind authentifié facultatif." +weight: 250 +--- + +Le vérificateur **LDAP** sonde le déploiement LDAP d'un domaine de bout en bout. À partir de la découverte SRV (`_ldap._tcp`, `_ldaps._tcp`), il teste l'accessibilité de chaque point d'accès, confirme qu'un canal chiffré est disponible (StartTLS selon la RFC 2830 ou TLS implicite sur le port 636), introspecte le RootDSE, recherche une divulgation d'information anonyme, vérifie que l'annuaire refuse les binds en clair et, lorsque des identifiants sont fournis, effectue un bind authentifié sur TLS avec un test de lecture facultatif sur un DN de base. + +Il s'agit d'un vérificateur de **niveau service** : il cible un service *LDAP* (`abstract.LDAP`) publié sur un sous-domaine et se configure depuis l'onglet **Vérifications** de ce service. Pour chaque transport, il sonde `_ldap._tcp` (repli sur le port 389) et `_ldaps._tcp` (repli sur le port 636), en testant chaque adresse A/AAAA résolue par famille d'adresses. + +{{% notice style="info" title="La posture TLS est intégrée, pas dupliquée" %}} +Le vérificateur LDAP confirme uniquement qu'une session TLS peut être établie, en enregistrant la version et l'algorithme négociés à titre de contexte. Chaque point d'accès sondé est publié comme entrée de découverte `tls.endpoint.v1` afin que le vérificateur TLS dédié puisse vérifier la chaîne de certificats, la correspondance du nom d'hôte et l'expiration. Ces constats sont réintégrés sur la page du service LDAP via la règle `ldap.tls_quality` : un certificat défectueux sur un point d'accès LDAP apparaît ici, et pas seulement dans une vue TLS distincte. Consultez {{< relref "/reference/checkers/tls" >}}. +{{% /notice %}} + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié | Gravité | +|---|---|---| +| `ldap.has_srv` | Les enregistrements SRV `_ldap._tcp` / `_ldaps._tcp` sont publiés et résolvables. | Avertissement | +| `ldap.endpoint_reachable` | Chaque point d'accès LDAP découvert accepte une connexion TCP. | Critique | +| `ldap.has_encrypted_transport` | Au moins un point d'accès accessible propose un canal chiffré (LDAPS ou StartTLS). | Critique | +| `ldap.starttls_supported` | StartTLS est proposé et la bascule réussit sur chaque point d'accès LDAP en clair accessible. | Critique | +| `ldap.ldaps_handshake` | La poignée de main TLS directe réussit sur chaque point d'accès LDAPS. | Critique | +| `ldap.starttls_on_ldaps` | Signale les serveurs qui annoncent inutilement StartTLS sur le port LDAPS à TLS implicite. | Info | +| `ldap.ipv6_reachable` | Au moins un point d'accès est accessible en IPv6. | Info | +| `ldap.refuses_plain_bind` | L'annuaire refuse l'authentification sur un canal en clair (`confidentialityRequired`, resultCode 13, selon la RFC 4513 §5.1.2). | Critique | +| `ldap.anonymous_search_blocked` | Signale les annuaires qui autorisent une recherche `baseObject` anonyme du contexte de nommage (divulgation d'information). | Avertissement | +| `ldap.rootdse_readable` | Le RootDSE est lisible sur TLS et annonce des contextes de nommage. | Avertissement | +| `ldap.sasl_mechanisms` | Examine `supportedSASLMechanisms` : présence de mécanismes forts (SCRAM-*, EXTERNAL, GSSAPI), absence de mécanismes équivalents à un mot de passe (PLAIN/LOGIN seuls). | Avertissement | +| `ldap.protocol_version` | Signale les serveurs qui annoncent encore le protocole LDAPv2 déprécié. | Avertissement | +| `ldap.bind_credentials` | Les identifiants de bind fournis sont acceptés par l'annuaire (ne s'exécute que si `bind_dn` est défini). | Critique | +| `ldap.base_dn_read` | Le compte authentifié peut lire le DN de base fourni (ne s'exécute que si `base_dn` est défini et que le bind a réussi). | Critique | +| `ldap.tls_quality` | Réintègre les constats du vérificateur TLS aval (chaîne de certificats, correspondance du nom d'hôte, expiration) sur le service LDAP. | Critique | + +Le rapport HTML commence par les défaillances les plus courantes et inclut une remédiation propre à chaque serveur (`olcSecurity` sous OpenLDAP, `require_tls` sous 389-ds...) : aucun point d'accès chiffré accessible, StartTLS absent sur 389, une poignée de main StartTLS qui échoue, un bind en clair accepté sur 389, une poignée de main LDAPS qui échoue, une recherche anonyme exposant le DIT, un SASL limité à PLAIN/LOGIN, un LDAPv2 résiduel, et des identifiants de bind rejetés. + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| Domaine | Le domaine de l'annuaire (renseigné automatiquement depuis la portée du service). Obligatoire. | *(auto)* | +| Délai d'attente par point d'accès (secondes) | Délai de connexion/sonde pour chaque point d'accès. | `10` | +| Bind DN | Facultatif. DN avec lequel se connecter ; utilisé uniquement si un mot de passe de bind est aussi défini, et seulement sur un canal protégé par TLS. | *(vide)* | +| Mot de passe de bind | Facultatif, secret. Le mot de passe n'est pas conservé dans la charge d'observation et n'est jamais transmis en clair. | *(vide)* | +| DN de base (test de lecture) | Facultatif. Après un bind réussi, une recherche `baseObject` sur ce DN confirme que le compte dispose d'un accès en lecture. Repli sur une recherche `baseObject` anonyme si aucun bind DN n'est fourni. | *(vide)* | + +## Dans happyDomain + +Activez le vérificateur LDAP depuis l'onglet **Vérifications** d'un service LDAP. Le domaine est renseigné automatiquement ; fournissez un bind DN et un mot de passe uniquement si vous souhaitez exécuter les tests de bind authentifié et de lecture du DN de base. Consultez {{< relref "/pages/checks" >}} pour le fonctionnement complet, et {{< relref "/reference/checkers/tls" >}} pour la posture des certificats de ces mêmes points d'accès. diff --git a/content/reference/checkers/legacy-records.en.md b/content/reference/checkers/legacy-records.en.md new file mode 100644 index 0000000..f8879f5 --- /dev/null +++ b/content/reference/checkers/legacy-records.en.md @@ -0,0 +1,35 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Legacy records +description: "Scans a zone for DNS record types deprecated by the IETF and reports each one with its RFC reference and a migration suggestion." +weight: 330 +--- + +The **Legacy DNS record types** checker scans a zone for record types the IETF has deprecated, and reports every occurrence with the relevant RFC reference and a concrete migration suggestion. Deprecated types clutter a zone and, in a few cases, are silently ignored by modern resolvers — so cleaning them up keeps the zone both tidy and unambiguous. + +This is a **zone-level** checker: it walks every service in the working zone in a single pass and consolidates findings by record type, so the report shows one picture rather than one result per record. + +## What it checks + +A single rule, `legacy_records`, inspects each orphan record body for a deprecated type and groups the findings by severity. The default rule status is critical (the worst severity present bubbles to the top of the report). + +| Severity | Record types | Why | +|----------|--------------|-----| +| Critical | `KEY`, `SIG`, `NXT` | RFC 3755: superseded by DNSKEY / RRSIG / NSEC; modern validators ignore them. | +| Warning | `SPF`, `A6`, `MD`, `MF` | RFC 7208 / RFC 6563 / RFC 973: replaced by TXT, AAAA, MX. | +| Info | `WKS`, `MB`, `MG`, `MR`, `MINFO`, `NULL`, `GPOS`, `NSAP`, `NSAP-PTR`, `X25`, `ISDN`, `RT`, `ATMA`, `EID`, `NIMLOC`, `SINK`, `NINFO`, `RKEY` | Experimental or historical (RFC 1035, 1183, 1706, 1712…); safe to delete. | + +For each detected type the report names every owner where it appears, the RFC reason, the suggested replacement, and a concrete "how to fix" instruction. A clean zone produces a single OK state with the scan count; parse errors encountered during the scan are surfaced in a separate "skipped" section so a silent skip never masquerades as a clean pass. + +{{% notice style="info" title="The SPF record type, not the SPF policy" %}} +The `SPF` *record type* (RFC 4408) was deprecated by RFC 7208 in favour of publishing the SPF policy in a `TXT` record. This checker flags the obsolete `SPF` record type, not your SPF policy itself — which remains valid and necessary when published as a `TXT` record. +{{% /notice %}} + +## Options + +This checker has no user-tunable options. The domain name and zone content are filled in automatically. + +## In happyDomain + +Enable this checker on the domain from the {{< relref "/pages/checks" >}} view; it runs over the whole zone in a single pass and needs no configuration. Use its findings as a clean-up checklist: each card tells you which record type to remove and what, if anything, to publish instead. diff --git a/content/reference/checkers/legacy-records.fr.md b/content/reference/checkers/legacy-records.fr.md new file mode 100644 index 0000000..659d330 --- /dev/null +++ b/content/reference/checkers/legacy-records.fr.md @@ -0,0 +1,35 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Enregistrements obsolètes +description: "Analyse une zone à la recherche de types d'enregistrements DNS dépréciés par l'IETF et signale chacun avec sa référence RFC et une suggestion de migration." +weight: 330 +--- + +Le vérificateur **Types d'enregistrements DNS obsolètes** analyse une zone à la recherche de types d'enregistrements dépréciés par l'IETF, et signale chaque occurrence avec la référence RFC pertinente et une suggestion de migration concrète. Les types dépréciés encombrent une zone et, dans quelques cas, sont silencieusement ignorés par les résolveurs modernes : les nettoyer garde la zone à la fois propre et sans ambiguïté. + +Il s'agit d'un vérificateur de **niveau zone** : il parcourt chaque service de la zone de travail en une seule passe et consolide les constats par type d'enregistrement, afin que le rapport présente une vue d'ensemble plutôt qu'un résultat par enregistrement. + +## Ce qui est vérifié + +Une seule règle, `legacy_records`, inspecte le corps de chaque enregistrement orphelin à la recherche d'un type déprécié et regroupe les constats par sévérité. Le statut par défaut de la règle est critique (la pire sévérité présente remonte en tête du rapport). + +| Sévérité | Types d'enregistrement | Pourquoi | +|----------|------------------------|----------| +| Critique | `KEY`, `SIG`, `NXT` | RFC 3755 : remplacés par DNSKEY / RRSIG / NSEC ; les validateurs modernes les ignorent. | +| Avertissement | `SPF`, `A6`, `MD`, `MF` | RFC 7208 / RFC 6563 / RFC 973 : remplacés par TXT, AAAA, MX. | +| Info | `WKS`, `MB`, `MG`, `MR`, `MINFO`, `NULL`, `GPOS`, `NSAP`, `NSAP-PTR`, `X25`, `ISDN`, `RT`, `ATMA`, `EID`, `NIMLOC`, `SINK`, `NINFO`, `RKEY` | Expérimentaux ou historiques (RFC 1035, 1183, 1706, 1712, etc.) ; suppression sans danger. | + +Pour chaque type détecté, le rapport nomme chaque propriétaire où il apparaît, la raison RFC, le remplacement suggéré et une instruction concrète de correction. Une zone propre produit un unique état OK avec le décompte de l'analyse ; les erreurs d'analyse rencontrées pendant le balayage sont exposées dans une section « ignorés » distincte, afin qu'un saut silencieux ne se fasse jamais passer pour un passage propre. + +{{% notice style="info" title="Le type d'enregistrement SPF, pas la politique SPF" %}} +Le *type d'enregistrement* `SPF` (RFC 4408) a été déprécié par la RFC 7208 au profit de la publication de la politique SPF dans un enregistrement `TXT`. Ce vérificateur signale le type d'enregistrement `SPF` obsolète, et non votre politique SPF elle-même, qui reste valide et nécessaire lorsqu'elle est publiée dans un enregistrement `TXT`. +{{% /notice %}} + +## Options + +Ce vérificateur n'a aucune option réglable par l'utilisateur. Le nom de domaine et le contenu de la zone sont renseignés automatiquement. + +## Dans happyDomain + +Activez ce vérificateur sur le domaine depuis la vue {{< relref "/pages/checks" >}} ; il s'exécute sur l'ensemble de la zone en une seule passe et ne nécessite aucune configuration. Utilisez ses constats comme une liste de nettoyage : chaque carte vous indique le type d'enregistrement à supprimer et ce qu'il convient, le cas échéant, de publier à la place. diff --git a/content/reference/checkers/matrix-federation.en.md b/content/reference/checkers/matrix-federation.en.md new file mode 100644 index 0000000..4dbb80d --- /dev/null +++ b/content/reference/checkers/matrix-federation.en.md @@ -0,0 +1,34 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Matrix federation +description: "Verifies that a Matrix homeserver federates correctly, using the Matrix Federation Tester." +weight: 300 +--- + +The **Matrix federation** checker verifies that a Matrix homeserver is correctly set up to federate with the rest of the Matrix network. It delegates the actual probing to a [Matrix Federation Tester](https://federationtester.matrix.org/) instance, stores the full report as an observation, and renders a rich HTML summary covering connections, certificates, well-known delegation and DNS/SRV resolution. + +This is a **service-level** checker. It applies to services of type **Matrix** (instant messaging) and is configured from that service's own **Checks** tab. + +## What it checks + +| Rule | What it verifies | Severity | +|------|------------------|----------| +| `matrix.connection_reachable` | Every discovered federation endpoint accepts an inbound connection. | Critical | +| `matrix.federation_ok` | The overall federation status reported by the Matrix Federation Tester. | Critical | +| `matrix.srv_records` | The Matrix SRV lookup (`_matrix-fed._tcp` / `_matrix._tcp`) succeeded or was legitimately skipped. | Critical | +| `matrix.tls_checks` | The TLS posture on every reachable federation endpoint (certificate chain, hostname, Ed25519 key). | Critical | +| `matrix.version` | The homeserver answers `/_matrix/federation/v1/version` with its name and version. | Warning | +| `matrix.well_known` | `/.well-known/matrix/server`, when published, is valid and points at the declared `server_name`. | Critical | + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Matrix domain | The Matrix `server_name` to test. Filled in automatically from the service. | `matrix.org` | + +An additional **admin-level** option, `federationTesterServer`, sets the URL template of the Federation Tester instance to query. It is configured by the happyDomain operator, not per check, and defaults to `https://federationtester.matrix.org/api/report?server_name=%s`. + +## In happyDomain + +Enable this checker from the **Checks** tab of a Matrix service; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The Matrix domain is filled in automatically from the service. diff --git a/content/reference/checkers/matrix-federation.fr.md b/content/reference/checkers/matrix-federation.fr.md new file mode 100644 index 0000000..79e8641 --- /dev/null +++ b/content/reference/checkers/matrix-federation.fr.md @@ -0,0 +1,34 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Fédération Matrix +description: "Vérifie qu'un serveur Matrix fédère correctement, à l'aide du Matrix Federation Tester." +weight: 300 +--- + +Le vérificateur **Fédération Matrix** vérifie qu'un serveur Matrix (homeserver) est correctement configuré pour fédérer avec le reste du réseau Matrix. Il délègue le sondage proprement dit à une instance du [Matrix Federation Tester](https://federationtester.matrix.org/), stocke le rapport complet sous forme d'observation, et produit un résumé HTML détaillé couvrant les connexions, les certificats, la délégation well-known et la résolution DNS/SRV. + +Il s'agit d'un vérificateur de **niveau service**. Il s'applique aux services de type **Matrix** (messagerie instantanée) et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qui est vérifié + +| Règle | Ce qu'elle vérifie | Sévérité | +|-------|--------------------|----------| +| `matrix.connection_reachable` | Chaque point d'accès de fédération découvert accepte une connexion entrante. | Critique | +| `matrix.federation_ok` | Le statut global de fédération rapporté par le Matrix Federation Tester. | Critique | +| `matrix.srv_records` | La résolution SRV Matrix (`_matrix-fed._tcp` / `_matrix._tcp`) a réussi ou a été légitimement ignorée. | Critique | +| `matrix.tls_checks` | La posture TLS sur chaque point d'accès de fédération joignable (chaîne de certificats, nom d'hôte, clé Ed25519). | Critique | +| `matrix.version` | Le serveur répond à `/_matrix/federation/v1/version` avec son nom et sa version. | Avertissement | +| `matrix.well_known` | `/.well-known/matrix/server`, lorsqu'il est publié, est valide et pointe vers le `server_name` déclaré. | Critique | + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Domaine Matrix | Le `server_name` Matrix à tester. Renseigné automatiquement depuis le service. | `matrix.org` | + +Une option supplémentaire de **niveau administrateur**, `federationTesterServer`, définit le modèle d'URL de l'instance du Federation Tester à interroger. Elle est configurée par l'opérateur happyDomain, et non par vérification, et vaut par défaut `https://federationtester.matrix.org/api/report?server_name=%s`. + +## Dans happyDomain + +Activez ce vérificateur depuis l'onglet **Vérifications** d'un service Matrix ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. Le domaine Matrix est renseigné automatiquement depuis le service. diff --git a/content/reference/checkers/ns-restrictions.en.md b/content/reference/checkers/ns-restrictions.en.md new file mode 100644 index 0000000..7fcab49 --- /dev/null +++ b/content/reference/checkers/ns-restrictions.en.md @@ -0,0 +1,36 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Name-server restrictions +description: "Probes every authoritative name server of a zone to confirm it is properly locked down: zone transfers refused, no open recursion, and RFC 8482 handling of ANY." +weight: 90 +--- + +The **Name-server restrictions** checker verifies that the authoritative name servers of a zone are properly locked down. For each declared name server it resolves the host name, then runs a set of DNS probes against every returned IPv4 and IPv6 address (IPv6 targets are skipped gracefully when the host has no IPv6 connectivity). The goal is to catch common misconfigurations that leak data or turn a name server into an abuse vector: open zone transfers, open recursion, and unbounded `ANY` responses. + +This checker is **service-level**: it targets an *Origin* or *NS-only Origin* service (`abstract.Origin`, `abstract.NSOnlyOrigin`) and is configured from that service's **Checks** tab. + +## What it checks + +Each rule emits one finding per probed name-server address, with a stable `code`. + +| Rule | Verifies | Severity on failure | +|---|---|---| +| `ns_resolution` | Every NS host name declared in the delegation resolves to at least one IP address. | Critical | +| `ns_axfr_refused` | `AXFR` zone transfers are refused by every authoritative name server. | Critical | +| `ns_ixfr_refused` | `IXFR` zone transfers are refused by every authoritative name server. | Warning | +| `ns_no_recursion` | Authoritative name servers do not advertise recursion (RA bit unset). | Warning | +| `ns_any_handled` | `ANY` queries are handled per RFC 8482 (HINFO or a minimal answer rather than the full zone contents). | Warning | +| `ns_is_authoritative` | Name servers answer authoritatively (AA bit set) for the zone. | Info | + +{{% notice style="info" title="Why these matter" %}} +An open `AXFR` lets anyone download the entire zone, exposing your internal naming. Open recursion turns your authoritative server into an amplification relay and cache-poisoning target. Unbounded `ANY` responses are a classic amplification vector that RFC 8482 was written to neutralise. +{{% /notice %}} + +## Options + +This checker has no user-tunable options: it runs a fixed set of probes against each resolved name-server address. + +## In happyDomain + +Enable the Name-server restrictions checker from the **Checks** tab of an Origin service. See {{< relref "/pages/checks" >}} for the full workflow. For the broader health and agreement of those same authoritative servers, see {{< relref "/reference/checkers/authoritative-consistency" >}}. diff --git a/content/reference/checkers/ns-restrictions.fr.md b/content/reference/checkers/ns-restrictions.fr.md new file mode 100644 index 0000000..3200525 --- /dev/null +++ b/content/reference/checkers/ns-restrictions.fr.md @@ -0,0 +1,36 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Restrictions des serveurs de noms +description: "Sonde chaque serveur faisant autorité d'une zone pour confirmer qu'il est correctement verrouillé : transferts de zone refusés, pas de récursion ouverte, gestion d'ANY conforme à la RFC 8482." +weight: 90 +--- + +Le vérificateur **Restrictions des serveurs de noms** vérifie que les serveurs faisant autorité d'une zone sont correctement verrouillés. Pour chaque serveur de noms déclaré, il résout le nom d'hôte puis lance une série de sondes DNS contre chaque adresse IPv4 et IPv6 renvoyée (les cibles IPv6 sont ignorées sans erreur lorsque l'hôte n'a pas de connectivité IPv6). L'objectif est de détecter les erreurs de configuration courantes qui divulguent des données ou transforment un serveur de noms en vecteur d'abus : transferts de zone ouverts, récursion ouverte et réponses `ANY` non bornées. + +Ce vérificateur s'applique au niveau du **service** : il cible un service d'origine ou d'origine NS-seule (`abstract.Origin`, `abstract.NSOnlyOrigin`) et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qu'il vérifie + +Chaque règle émet un constat par adresse de serveur de noms sondée, avec un `code` stable. + +| Règle | Vérifie | Sévérité en cas d'échec | +|---|---|---| +| `ns_resolution` | Chaque nom d'hôte NS déclaré dans la délégation se résout en au moins une adresse IP. | Critique | +| `ns_axfr_refused` | Les transferts de zone `AXFR` sont refusés par chaque serveur faisant autorité. | Critique | +| `ns_ixfr_refused` | Les transferts de zone `IXFR` sont refusés par chaque serveur faisant autorité. | Avertissement | +| `ns_no_recursion` | Les serveurs faisant autorité n'annoncent pas la récursion (bit RA non positionné). | Avertissement | +| `ns_any_handled` | Les requêtes `ANY` sont traitées conformément à la RFC 8482 (HINFO ou réponse minimale plutôt que le contenu complet de la zone). | Avertissement | +| `ns_is_authoritative` | Les serveurs de noms répondent de façon autoritaire (bit AA positionné) pour la zone. | Info | + +{{% notice style="info" title="Pourquoi c'est important" %}} +Un `AXFR` ouvert permet à quiconque de télécharger la zone entière, exposant votre nommage interne. La récursion ouverte transforme votre serveur faisant autorité en relais d'amplification et en cible d'empoisonnement de cache. Les réponses `ANY` non bornées constituent un vecteur d'amplification classique que la RFC 8482 a été écrite pour neutraliser. +{{% /notice %}} + +## Options + +Ce vérificateur n'expose aucune option réglable : il exécute un ensemble fixe de sondes contre chaque adresse de serveur de noms résolue. + +## Dans happyDomain + +Activez le vérificateur Restrictions des serveurs de noms depuis l'onglet **Vérifications** d'un service d'origine. Consultez {{< relref "/pages/checks" >}} pour le déroulé complet. Pour la santé et l'accord plus larges de ces mêmes serveurs faisant autorité, voyez {{< relref "/reference/checkers/authoritative-consistency" >}}. diff --git a/content/reference/checkers/ping.en.md b/content/reference/checkers/ping.en.md new file mode 100644 index 0000000..56d642f --- /dev/null +++ b/content/reference/checkers/ping.en.md @@ -0,0 +1,34 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Ping +description: "Sends ICMP probes to every address of a service and reports reachability, average round-trip time, packet loss, and IPv6 coverage." +weight: 190 +--- + +The **Ping (ICMP)** checker measures basic network reachability for the addresses behind a service. It sends a small number of ICMP echo requests to each `A`/`AAAA` address and reports whether the target replied, its average round-trip time (RTT), the observed packet-loss ratio, and whether at least one IPv6 address answered. + +**Scope:** service-level. It attaches to services of type `abstract.Server` (a subdomain that publishes `A`/`AAAA` records) and is configured from that service's **Checks** tab. + +## What it checks + +| Rule | Verifies | Warn / Critical conditions | +|------|----------|----------------------------| +| `ping.reachable` | Every target replied to at least one ICMP probe. | Critical when a target never replies. | +| `ping.rtt` | Average round-trip time stays within thresholds. | Warning above the warning RTT, Critical above the critical RTT. | +| `ping.ipv6_reachable` | At least one IPv6 target replied to an ICMP probe. | Warning when no IPv6 address answers. | +| `ping.packet_loss` | Packet-loss ratio stays within thresholds. | Warning above the warning loss ratio, Critical above the critical loss ratio. | + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Warning RTT threshold (ms) (`warningRTT`) | Average RTT above which the check warns. | 100 | +| Critical RTT threshold (ms) (`criticalRTT`) | Average RTT above which the check is critical. | 500 | +| Warning packet loss threshold (%) (`warningPacketLoss`) | Packet-loss ratio above which the check warns. | 10 | +| Critical packet loss threshold (%) (`criticalPacketLoss`) | Packet-loss ratio above which the check is critical. | 50 | +| Number of pings to send (`count`) | ICMP echo requests sent per target. | 5 | + +## In happyDomain + +This is a service-level checker: configure it from the **Checks** tab of the *Server* service on the relevant subdomain. Its short default interval makes it well suited to lightweight, frequent reachability monitoring. For the general workflow of configuring and reading checks, see {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/ping.fr.md b/content/reference/checkers/ping.fr.md new file mode 100644 index 0000000..bbcc9ad --- /dev/null +++ b/content/reference/checkers/ping.fr.md @@ -0,0 +1,34 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Ping +description: "Envoie des sondes ICMP à chaque adresse d'un service et rapporte l'accessibilité, le temps d'aller-retour moyen, la perte de paquets et la couverture IPv6." +weight: 190 +--- + +Le vérificateur **Ping (ICMP)** mesure l'accessibilité réseau de base des adresses derrière un service. Il envoie un petit nombre de requêtes echo ICMP à chaque adresse `A`/`AAAA` et rapporte si la cible a répondu, son temps d'aller-retour moyen (RTT), le taux de perte de paquets observé, et si au moins une adresse IPv6 a répondu. + +**Portée** : niveau service. Il s'attache aux services de type `abstract.Server` (un sous-domaine publiant des enregistrements `A`/`AAAA`) et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qu'il vérifie + +| Règle | Vérifie | Conditions avertissement / critique | +|-------|---------|-------------------------------------| +| `ping.reachable` | Chaque cible a répondu à au moins une sonde ICMP. | Critique lorsqu'une cible ne répond jamais. | +| `ping.rtt` | Le temps d'aller-retour moyen reste dans les seuils. | Avertissement au-dessus du RTT d'avertissement, critique au-dessus du RTT critique. | +| `ping.ipv6_reachable` | Au moins une cible IPv6 a répondu à une sonde ICMP. | Avertissement quand aucune adresse IPv6 ne répond. | +| `ping.packet_loss` | Le taux de perte de paquets reste dans les seuils. | Avertissement au-dessus du taux d'avertissement, critique au-dessus du taux critique. | + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Seuil d'avertissement RTT (ms) (`warningRTT`) | RTT moyen au-dessus duquel la vérification avertit. | 100 | +| Seuil critique RTT (ms) (`criticalRTT`) | RTT moyen au-dessus duquel la vérification est critique. | 500 | +| Seuil d'avertissement de perte de paquets (%) (`warningPacketLoss`) | Taux de perte au-dessus duquel la vérification avertit. | 10 | +| Seuil critique de perte de paquets (%) (`criticalPacketLoss`) | Taux de perte au-dessus duquel la vérification est critique. | 50 | +| Nombre de pings à envoyer (`count`) | Requêtes echo ICMP envoyées par cible. | 5 | + +## Dans happyDomain + +C'est un vérificateur de niveau service : configurez-le depuis l'onglet **Vérifications** du service « Serveur » sur le sous-domaine concerné. Son intervalle par défaut court le rend adapté à une surveillance d'accessibilité légère et fréquente. Pour le fonctionnement général de la configuration et de la lecture des vérifications, voir {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/ptr.en.md b/content/reference/checkers/ptr.en.md new file mode 100644 index 0000000..9b9a8a6 --- /dev/null +++ b/content/reference/checkers/ptr.en.md @@ -0,0 +1,52 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: PTR records +description: "Validates reverse DNS for an IP: PTR presence, target syntax, forward resolution and Forward-Confirmed Reverse DNS (FCrDNS)." +weight: 120 +--- + +The **PTR / Reverse DNS** checker verifies that an IP address has a correct, usable reverse-DNS record. A PTR maps an IP back to a hostname; mail servers, SSH daemons and many logging tools rely on it, and a missing or inconsistent PTR is one of the most common reasons outgoing mail is rejected. + +This is a **service-level** checker: it runs on a `PTR` service and is configured from that service's own **Checks** tab. It locates the reverse zone (under `in-addr.arpa` or `ip6.arpa`), queries the authoritative servers, and inspects what they actually serve — both for IPv4 and IPv6 addresses. + +## What it checks + +The checker runs a chain of rules, from structural sanity through query success to target hygiene and Forward-Confirmed Reverse DNS (FCrDNS). + +| Rule | What it verifies | Severity | +|------|------------------|----------| +| `ptr.in_reverse_arpa` | The PTR owner lies under `in-addr.arpa` or `ip6.arpa`. | Critical | +| `ptr.owner_decodable` | The reverse-arpa owner name decodes back to an IP address. | Critical | +| `ptr.reverse_zone_located` | The reverse zone serving the owner can be located (SOA found). | Critical | +| `ptr.query_succeeded` | The PTR query returns NOERROR from the authoritative servers. | Critical | +| `ptr.record_present` | At least one PTR record is served at the owner name. | Critical | +| `ptr.single_record` | Flags more than one PTR on the same IP (RFC 1912 §2.1 recommends exactly one). | Warning | +| `ptr.declared_match` | The PTR target served authoritatively matches the target declared in happyDomain. | Critical | +| `ptr.target_syntax_valid` | The PTR target is a syntactically valid hostname (RFC 952/1123). | Critical | +| `ptr.generic_hostname` | Flags PTR targets that embed the IP or match common ISP auto-generated patterns. | Warning | +| `ptr.target_resolves` | The PTR target resolves to at least one A or AAAA record. | Critical / Warning | +| `ptr.fcrdns_match` | The PTR target's A/AAAA resolves back to the original IP (FCrDNS). | Critical / Warning | +| `ptr.ipv6` | Reports whether the PTR concerns an IPv6 (`ip6.arpa`) address, and that a PTR is present for it. | Critical | +| `ptr.ttl_hygiene` | The PTR TTL is at or above the configured minimum. | Warning | + +The `ptr.target_resolves` and `ptr.fcrdns_match` rules are critical by default but drop to a warning when **Require forward-confirmed reverse DNS** is turned off. + +{{% notice style="info" title="FCrDNS, the round-trip rule" %}} +Forward-Confirmed Reverse DNS means the chain rounds back to itself: the IP's PTR points to a hostname, and that hostname's A/AAAA includes the original IP. Mail servers reject connections from IPs that fail this round-trip, so leave **Require forward-confirmed reverse DNS** enabled for any host that sends mail. +{{% /notice %}} + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Require forward-confirmed reverse DNS (FCrDNS) | When enabled, a PTR whose target does not resolve back to the original IP is critical; otherwise a warning. | `true` | +| Allow multiple PTR records on the same IP | When disabled, more than one PTR at the same owner is flagged as a warning (RFC 1912 §2.1). | `false` | +| Minimum PTR TTL (seconds) | PTR records with a TTL below this threshold are flagged as a warning. | `300` | +| Flag generic-looking PTR hostnames | When enabled, PTR targets embedding the dotted IP or matching common ISP auto-generated patterns warn. | `true` | + +## In happyDomain + +Add the PTR service to the subdomain holding the reverse record, then enable this checker from that service's **Checks** tab. See {{< relref "/pages/checks" >}} for configuring and scheduling checks. The reverse zone, the PTR record and the declared target are filled in automatically from the service. + +For the forward side of alias and hostname resolution, see the related {{< relref "/reference/checkers/alias" >}} checker. diff --git a/content/reference/checkers/ptr.fr.md b/content/reference/checkers/ptr.fr.md new file mode 100644 index 0000000..83c2357 --- /dev/null +++ b/content/reference/checkers/ptr.fr.md @@ -0,0 +1,52 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Enregistrements PTR +description: "Valide le DNS inverse d'une adresse IP : présence du PTR, syntaxe de la cible, résolution directe et Forward-Confirmed Reverse DNS (FCrDNS)." +weight: 120 +--- + +Le vérificateur **PTR / DNS inverse** vérifie qu'une adresse IP dispose d'un enregistrement de DNS inverse correct et exploitable. Un PTR associe une IP à un nom d'hôte ; les serveurs de messagerie, les démons SSH et de nombreux outils de journalisation s'appuient dessus, et un PTR absent ou incohérent est l'une des causes les plus fréquentes de rejet du courrier sortant. + +Il s'agit d'un vérificateur de **niveau service** : il s'exécute sur un service `PTR` et se configure depuis l'onglet **Vérifications** de ce service. Il localise la zone inverse (sous `in-addr.arpa` ou `ip6.arpa`), interroge les serveurs faisant autorité et inspecte ce qu'ils servent réellement, aussi bien pour les adresses IPv4 qu'IPv6. + +## Ce qui est vérifié + +Le vérificateur enchaîne une série de règles, de la cohérence structurelle au succès de la requête, puis à l'hygiène de la cible et au Forward-Confirmed Reverse DNS (FCrDNS). + +| Règle | Ce qui est vérifié | Sévérité | +|-------|--------------------|----------| +| `ptr.in_reverse_arpa` | Le propriétaire du PTR se trouve sous `in-addr.arpa` ou `ip6.arpa`. | Critique | +| `ptr.owner_decodable` | Le nom du propriétaire en `.arpa` se décode bien en une adresse IP. | Critique | +| `ptr.reverse_zone_located` | La zone inverse servant ce propriétaire peut être localisée (SOA trouvé). | Critique | +| `ptr.query_succeeded` | La requête PTR renvoie NOERROR depuis les serveurs faisant autorité. | Critique | +| `ptr.record_present` | Au moins un enregistrement PTR est servi au nom du propriétaire. | Critique | +| `ptr.single_record` | Signale plusieurs PTR sur la même IP (la RFC 1912 §2.1 en recommande un seul). | Avertissement | +| `ptr.declared_match` | La cible PTR servie fait autorité correspond à celle déclarée dans happyDomain. | Critique | +| `ptr.target_syntax_valid` | La cible PTR est un nom d'hôte syntaxiquement valide (RFC 952/1123). | Critique | +| `ptr.generic_hostname` | Signale les cibles PTR qui contiennent l'IP ou suivent un motif générique de FAI. | Avertissement | +| `ptr.target_resolves` | La cible PTR se résout vers au moins un enregistrement A ou AAAA. | Critique / Avertissement | +| `ptr.fcrdns_match` | Le A/AAAA de la cible PTR se résout de nouveau vers l'IP d'origine (FCrDNS). | Critique / Avertissement | +| `ptr.ipv6` | Indique si le PTR concerne une adresse IPv6 (`ip6.arpa`) et qu'un PTR est présent pour elle. | Critique | +| `ptr.ttl_hygiene` | Le TTL du PTR est supérieur ou égal au minimum configuré. | Avertissement | + +Les règles `ptr.target_resolves` et `ptr.fcrdns_match` sont critiques par défaut, mais passent en avertissement lorsque l'option **Exiger le Forward-Confirmed Reverse DNS** est désactivée. + +{{% notice style="info" title="Le FCrDNS, la règle de l'aller-retour" %}} +Le Forward-Confirmed Reverse DNS signifie que la chaîne boucle sur elle-même : le PTR de l'IP pointe vers un nom d'hôte, et le A/AAAA de ce nom d'hôte inclut l'IP d'origine. Les serveurs de messagerie rejettent les connexions des IP qui échouent à cet aller-retour ; laissez donc **Exiger le Forward-Confirmed Reverse DNS** activé pour tout hôte qui envoie du courrier. +{{% /notice %}} + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Exiger le Forward-Confirmed Reverse DNS (FCrDNS) | Lorsqu'activée, un PTR dont la cible ne se résout pas vers l'IP d'origine est critique ; sinon, c'est un avertissement. | `true` | +| Autoriser plusieurs PTR sur la même IP | Lorsqu'elle est désactivée, plusieurs PTR au même propriétaire sont signalés comme avertissement (RFC 1912 §2.1). | `false` | +| TTL minimal du PTR (secondes) | Les PTR dont le TTL est inférieur à ce seuil sont signalés comme avertissement. | `300` | +| Signaler les noms d'hôte PTR génériques | Lorsqu'activée, les cibles PTR contenant l'IP en notation pointée ou suivant un motif générique de FAI déclenchent un avertissement. | `true` | + +## Dans happyDomain + +Ajoutez le service PTR au sous-domaine portant l'enregistrement inverse, puis activez ce vérificateur depuis l'onglet **Vérifications** de ce service. Consultez {{< relref "/pages/checks" >}} pour configurer et planifier les vérifications. La zone inverse, l'enregistrement PTR et la cible déclarée sont renseignés automatiquement à partir du service. + +Pour le versant direct de la résolution des alias et des noms d'hôte, voyez le vérificateur {{< relref "/reference/checkers/alias" >}}. diff --git a/content/reference/checkers/resolver-propagation.en.md b/content/reference/checkers/resolver-propagation.en.md new file mode 100644 index 0000000..10f0964 --- /dev/null +++ b/content/reference/checkers/resolver-propagation.en.md @@ -0,0 +1,45 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Resolver propagation +description: "Probes a worldwide catalog of public recursive resolvers across several transports and regions, then compares their answers to the zone's authoritative servers." +weight: 100 +--- + +The **Resolver propagation** checker measures how a zone is seen from the *outside*, across the public internet. It probes a curated catalog of public recursive resolvers (Cloudflare, Google, Quad9, OpenDNS, Yandex, regional ISPs and more) over several transports (UDP, TCP, DoT, DoH) and from multiple regions, then compares their answers both to each other and to the zone's authoritative name servers. This surfaces propagation gaps, regional splits, `SOA` serial drift, stale caches, DNSSEC validation failures, `SERVFAIL`/`NXDOMAIN` inconsistencies and resolver filtering. + +This checker is **service-level**: it targets an *Origin* or *NS-only Origin* service (`abstract.Origin`, `abstract.NSOnlyOrigin`) and is configured from that service's **Checks** tab. + +## What it checks + +| Finding code | What it checks | Severity | +|---|---|---| +| `resolver_propagation.selection` | The current option set selects at least one public resolver. | Critical | +| `resolver_propagation.reachable` | At least one selected resolver answered a query. | Critical | +| `resolver_propagation.latency` | Resolvers that are unreachable or whose average response time exceeds the threshold. | Warning | +| `resolver_propagation.filtered_hit` | Filtered resolvers returning a different answer than the consensus (typical blocklist behaviour). | Info | +| `resolver_propagation.consensus` | Public resolvers agree on a single answer for each probed RRset. | Warning | +| `resolver_propagation.matches_authoritative` | The public consensus matches the answer served by the zone's authoritative servers. | Critical | +| `resolver_propagation.nxdomain` | RRsets for which some resolvers return `NXDOMAIN` while others return `NOERROR`. | Critical | +| `resolver_propagation.servfail` | RRsets for which any resolver returns `SERVFAIL` (usually DNSSEC or reachability failure). | Critical | +| `resolver_propagation.regional_split` | Regions where every resolver agrees on an answer that differs from the global consensus. | Warning | +| `resolver_propagation.serial_drift` | Disagreement on the `SOA` serial across unfiltered resolvers. | Warning | +| `resolver_propagation.stale_cache` | Resolvers still serving an `SOA` serial below the one saved by happyDomain. | Info | +| `resolver_propagation.dnssec` | Validating resolvers successfully validate the zone's DNSSEC chain. | Critical | + +## Options + +| Option | Meaning | Default | +|---|---|---| +| `recordTypes` | Comma-separated RR types to probe at every owner. Empty = derive from the working zone (SOA/NS at the apex plus the RR types actually defined on each owner). | _derived from zone_ | +| `subdomains` | Comma-separated owner names to probe in addition to the apex (e.g. `www,mail,@`). Empty = apex only. | `www` | +| `includeFiltered` | Probe filtering resolvers (malware/family/adblock). Their answers diverge by design; enable only when diagnosing a blocklist hit. | `false` | +| `region` | Restrict to a region: `all`, `global`, `na`, `eu`, `asia`, `ru`, `me`. | `all` | +| `transports` | Comma-separated transports to probe: `udp`, `tcp`, `dot`, `doh`. Encrypted transports are only used where published. | `udp` | +| `resolverAllowlist` | Comma-separated resolver IDs or IPs to probe exclusively (e.g. `cloudflare,google,9.9.9.9`). Empty = catalog selection. | _(empty)_ | +| `latencyThresholdMs` | Resolvers averaging above this value emit an info finding. | `500` | +| `runTimeoutSeconds` | Hard wall-clock budget for one propagation run. Slower resolvers report as unreachable. | `30` | + +## In happyDomain + +Enable the Resolver propagation checker from the **Checks** tab of an Origin service. See {{< relref "/pages/checks" >}} for the full workflow. This checker is the outward-facing counterpart to {{< relref "/reference/checkers/authoritative-consistency" >}}, which examines the authoritative servers directly; running both gives you the picture from the origin and from the resolvers that query it. diff --git a/content/reference/checkers/resolver-propagation.fr.md b/content/reference/checkers/resolver-propagation.fr.md new file mode 100644 index 0000000..03e92d8 --- /dev/null +++ b/content/reference/checkers/resolver-propagation.fr.md @@ -0,0 +1,45 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Propagation chez les résolveurs +description: "Sonde un catalogue mondial de résolveurs récursifs publics sur plusieurs transports et régions, puis compare leurs réponses aux serveurs faisant autorité de la zone." +weight: 100 +--- + +Le vérificateur **Propagation chez les résolveurs** mesure la façon dont une zone est vue depuis l'*extérieur*, à travers l'internet public. Il sonde un catalogue choisi de résolveurs récursifs publics (Cloudflare, Google, Quad9, OpenDNS, Yandex, FAI régionaux et autres) sur plusieurs transports (UDP, TCP, DoT, DoH) et depuis plusieurs régions, puis compare leurs réponses entre elles et avec celles des serveurs faisant autorité de la zone. Cela révèle les retards de propagation, les divergences régionales, les écarts de numéro de série `SOA`, les caches périmés, les échecs de validation DNSSEC, les incohérences `SERVFAIL`/`NXDOMAIN` et le filtrage par les résolveurs. + +Ce vérificateur s'applique au niveau du **service** : il cible un service d'origine ou d'origine NS-seule (`abstract.Origin`, `abstract.NSOnlyOrigin`) et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qu'il vérifie + +| Code de constat | Ce qui est vérifié | Sévérité | +|---|---|---| +| `resolver_propagation.selection` | Le jeu d'options courant sélectionne au moins un résolveur public. | Critique | +| `resolver_propagation.reachable` | Au moins un résolveur sélectionné a répondu à une requête. | Critique | +| `resolver_propagation.latency` | Résolveurs injoignables ou dont le temps de réponse moyen dépasse le seuil. | Avertissement | +| `resolver_propagation.filtered_hit` | Résolveurs filtrants renvoyant une réponse différente du consensus (comportement typique d'une liste de blocage). | Info | +| `resolver_propagation.consensus` | Les résolveurs publics s'accordent sur une réponse unique pour chaque RRset sondé. | Avertissement | +| `resolver_propagation.matches_authoritative` | Le consensus public correspond à la réponse servie par les serveurs faisant autorité de la zone. | Critique | +| `resolver_propagation.nxdomain` | RRset pour lesquels certains résolveurs renvoient `NXDOMAIN` quand d'autres renvoient `NOERROR`. | Critique | +| `resolver_propagation.servfail` | RRset pour lesquels un résolveur renvoie `SERVFAIL` (généralement échec DNSSEC ou de joignabilité). | Critique | +| `resolver_propagation.regional_split` | Régions où tous les résolveurs s'accordent sur une réponse différente du consensus mondial. | Avertissement | +| `resolver_propagation.serial_drift` | Désaccord sur le numéro de série `SOA` parmi les résolveurs non filtrants. | Avertissement | +| `resolver_propagation.stale_cache` | Résolveurs servant encore un numéro de série `SOA` inférieur à celui enregistré par happyDomain. | Info | +| `resolver_propagation.dnssec` | Les résolveurs validants valident avec succès la chaîne DNSSEC de la zone. | Critique | + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| `recordTypes` | Types de RR à sonder à chaque propriétaire, séparés par des virgules. Vide : dérivés de la zone de travail (SOA/NS à l'apex plus les types de RR réellement définis sur chaque propriétaire). | _dérivé de la zone_ | +| `subdomains` | Noms de propriétaires à sonder en plus de l'apex, séparés par des virgules (par exemple `www,mail,@`). Vide : apex seul. | `www` | +| `includeFiltered` | Sonde les résolveurs filtrants (malware/famille/anti-pub). Leurs réponses divergent par conception ; n'activer que pour diagnostiquer un blocage. | `false` | +| `region` | Restreint à une région : `all`, `global`, `na`, `eu`, `asia`, `ru`, `me`. | `all` | +| `transports` | Transports à sonder, séparés par des virgules : `udp`, `tcp`, `dot`, `doh`. Les transports chiffrés ne sont utilisés que là où ils sont publiés. | `udp` | +| `resolverAllowlist` | Identifiants ou IP de résolveurs à sonder exclusivement, séparés par des virgules (par exemple `cloudflare,google,9.9.9.9`). Vide : sélection du catalogue. | _(vide)_ | +| `latencyThresholdMs` | Les résolveurs dont la moyenne dépasse cette valeur émettent un constat d'information. | `500` | +| `runTimeoutSeconds` | Budget temps absolu pour une exécution de propagation. Les résolveurs plus lents sont signalés comme injoignables. | `30` | + +## Dans happyDomain + +Activez le vérificateur Propagation chez les résolveurs depuis l'onglet **Vérifications** d'un service d'origine. Consultez {{< relref "/pages/checks" >}} pour le déroulé complet. Ce vérificateur est le pendant tourné vers l'extérieur de {{< relref "/reference/checkers/authoritative-consistency" >}}, qui examine directement les serveurs faisant autorité ; exécuter les deux donne la vue depuis l'origine et depuis les résolveurs qui l'interrogent. diff --git a/content/reference/checkers/reverse-zone.en.md b/content/reference/checkers/reverse-zone.en.md new file mode 100644 index 0000000..61b5deb --- /dev/null +++ b/content/reference/checkers/reverse-zone.en.md @@ -0,0 +1,43 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Reverse zone +description: "Inspects the PTR records of an in-addr.arpa or ip6.arpa reverse zone for FCrDNS, target resolvability, hostname syntax, generic names and TTL hygiene." +weight: 110 +--- + +The **Reverse zone** checker inspects the `PTR` records of a reverse DNS zone (`in-addr.arpa` or `ip6.arpa`) and validates that they are well formed and consistent with forward DNS. It verifies Forward-Confirmed Reverse DNS (FCrDNS), that targets resolve and are syntactically valid host names, flags generic or auto-generated names and short TTLs, and catches multiple-`PTR`-per-IP violations (RFC 1912 §2.1). Correct reverse DNS matters in practice: mail servers and SSH endpoints routinely reject or downgrade connections from IPs without proper FCrDNS. + +This checker is **zone-level**: it operates on the full content of a reverse zone (it applies to the domain and reads the whole zone). + +## What it checks + +| Finding code | What it verifies | Severity | +|---|---|---| +| `reverse_zone.is_reverse_arpa` | The zone is under `in-addr.arpa` or `ip6.arpa`. | Critical | +| `reverse_zone.has_ptrs` | The reverse zone declares at least one `PTR` record. | Warning | +| `reverse_zone.fcrdns` | Every `PTR` target's `A`/`AAAA` round-trips back to the original IP (Forward-Confirmed Reverse DNS). | Critical | +| `reverse_zone.target_resolves` | Every `PTR` target resolves to at least one `A` or `AAAA` record. | Critical | +| `reverse_zone.single_ptr_per_ip` | Flags IPs with multiple `PTR` records (RFC 1912 §2.1 recommends exactly one). | Warning | +| `reverse_zone.target_syntax` | Every `PTR` target is a syntactically valid host name. | Critical | +| `reverse_zone.generic_hostname` | Flags `PTR` targets that embed the IP or match common ISP auto-generated patterns. | Warning | +| `reverse_zone.ttl_hygiene` | Flags `PTR` records whose TTL is below the configured minimum. | Warning | +| `reverse_zone.truncated` | Reports when the zone has more `PTR`s than the configured cap allows to inspect. | Info | + +## Options + +| Option | Meaning | Default | +|---|---|---| +| `requireForwardMatch` | When enabled, a `PTR` whose target does not resolve back to the original IP is critical (otherwise warning). Mail and SSH servers require FCrDNS. | `true` | +| `allowMultiplePTR` | When disabled, more than one `PTR` at the same owner is reported as warning (RFC 1912 §2.1 recommends a single `PTR` per IP). | `false` | +| `minTTL` | `PTR` records with a TTL below this threshold (in seconds) are flagged as warning. | `300` | +| `flagGenericPTR` | When enabled, `PTR` targets that embed the dotted IP or match common ISP auto-generated patterns are flagged as warning. | `true` | +| `maxPTRsToCheck` | Caps the number of `PTR` records inspected per run, protecting the checker against very large reverse zones. | `1024` | + +{{% notice style="info" title="Forward-Confirmed Reverse DNS" %}} +FCrDNS means the `PTR` target, looked up forward, resolves back to the original IP address. A `PTR` that points to a host whose `A`/`AAAA` does not include that IP fails the round-trip and is treated as a misconfiguration by many mail and SSH servers. +{{% /notice %}} + +## In happyDomain + +Enable the Reverse zone checker on a reverse (`in-addr.arpa` / `ip6.arpa`) domain from its **Checks** view. See {{< relref "/pages/checks" >}} for the full workflow. diff --git a/content/reference/checkers/reverse-zone.fr.md b/content/reference/checkers/reverse-zone.fr.md new file mode 100644 index 0000000..751d6fa --- /dev/null +++ b/content/reference/checkers/reverse-zone.fr.md @@ -0,0 +1,43 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Zone inverse +description: "Inspecte les enregistrements PTR d'une zone inverse in-addr.arpa ou ip6.arpa : FCrDNS, résolvabilité des cibles, syntaxe des noms, noms génériques et hygiène des TTL." +weight: 110 +--- + +Le vérificateur **Zone inverse** inspecte les enregistrements `PTR` d'une zone DNS inverse (`in-addr.arpa` ou `ip6.arpa`) et valide qu'ils sont bien formés et cohérents avec le DNS direct. Il vérifie le Forward-Confirmed Reverse DNS (FCrDNS), s'assure que les cibles se résolvent et sont des noms d'hôtes syntaxiquement valides, signale les noms génériques ou auto-générés et les TTL trop courts, et détecte les violations de plusieurs `PTR` par IP (RFC 1912 §2.1). Un DNS inverse correct compte en pratique : les serveurs de courrier et les points d'accès SSH rejettent ou dégradent régulièrement les connexions provenant d'IP sans FCrDNS valide. + +Ce vérificateur s'applique au niveau de la **zone** : il opère sur le contenu complet d'une zone inverse (il s'applique au domaine et lit l'intégralité de la zone). + +## Ce qu'il vérifie + +| Code de constat | Ce qui est vérifié | Sévérité | +|---|---|---| +| `reverse_zone.is_reverse_arpa` | La zone est sous `in-addr.arpa` ou `ip6.arpa`. | Critique | +| `reverse_zone.has_ptrs` | La zone inverse déclare au moins un enregistrement `PTR`. | Avertissement | +| `reverse_zone.fcrdns` | Le `A`/`AAAA` de chaque cible `PTR` revient bien à l'IP d'origine (Forward-Confirmed Reverse DNS). | Critique | +| `reverse_zone.target_resolves` | Chaque cible `PTR` se résout en au moins un enregistrement `A` ou `AAAA`. | Critique | +| `reverse_zone.single_ptr_per_ip` | Signale les IP ayant plusieurs `PTR` (la RFC 1912 §2.1 en recommande exactement un). | Avertissement | +| `reverse_zone.target_syntax` | Chaque cible `PTR` est un nom d'hôte syntaxiquement valide. | Critique | +| `reverse_zone.generic_hostname` | Signale les cibles `PTR` qui intègrent l'IP ou correspondent aux motifs auto-générés courants des FAI. | Avertissement | +| `reverse_zone.ttl_hygiene` | Signale les `PTR` dont le TTL est inférieur au minimum configuré. | Avertissement | +| `reverse_zone.truncated` | Signale lorsque la zone compte plus de `PTR` que le plafond configuré ne permet d'inspecter. | Info | + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| `requireForwardMatch` | Si activé, un `PTR` dont la cible ne revient pas à l'IP d'origine est critique (sinon avertissement). Les serveurs de courrier et SSH exigent le FCrDNS. | `true` | +| `allowMultiplePTR` | Si désactivé, plus d'un `PTR` au même propriétaire est signalé en avertissement (la RFC 1912 §2.1 recommande un seul `PTR` par IP). | `false` | +| `minTTL` | Les `PTR` dont le TTL est inférieur à ce seuil (en secondes) sont signalés en avertissement. | `300` | +| `flagGenericPTR` | Si activé, les cibles `PTR` qui intègrent l'IP pointée ou correspondent aux motifs auto-générés courants des FAI sont signalées en avertissement. | `true` | +| `maxPTRsToCheck` | Plafonne le nombre de `PTR` inspectés par exécution, protégeant le vérificateur contre les très grandes zones inverses. | `1024` | + +{{% notice style="info" title="Forward-Confirmed Reverse DNS" %}} +Le FCrDNS signifie que la cible du `PTR`, résolue en direct, revient bien à l'adresse IP d'origine. Un `PTR` pointant vers un hôte dont le `A`/`AAAA` n'inclut pas cette IP échoue à l'aller-retour et est considéré comme une mauvaise configuration par de nombreux serveurs de courrier et SSH. +{{% /notice %}} + +## Dans happyDomain + +Activez le vérificateur Zone inverse sur un domaine inverse (`in-addr.arpa` / `ip6.arpa`) depuis sa vue **Vérifications**. Consultez {{< relref "/pages/checks" >}} pour le déroulé complet. diff --git a/content/reference/checkers/sip.en.md b/content/reference/checkers/sip.en.md new file mode 100644 index 0000000..747fc7f --- /dev/null +++ b/content/reference/checkers/sip.en.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: SIP +description: "Probes a domain's SIP/VoIP deployment end-to-end: RFC 3263 NAPTR/SRV resolution, endpoint reachability over UDP/TCP/TLS, and a SIP OPTIONS ping with capability inspection." +weight: 270 +--- + +The **SIP** checker probes a domain's SIP/VoIP deployment from its DNS records, following RFC 3263 resolution: NAPTR → SRV (`_sip._udp`, `_sip._tcp`, `_sips._tcp`) → A/AAAA. It tests reachability on every resolved `target:port` over UDP, TCP and TLS, then sends a raw SIP `OPTIONS` ping and inspects the reply (status line, `Server`/`User-Agent`, advertised `Allow` methods, round-trip time). + +This checker is **service-level**: it targets a *SIP* service (`abstract.SIP`) published on a subdomain and is configured from that service's own **Checks** tab. When no SRV record is published, the checker falls back to `:5060` / `:5061`, with a visible info marker in the report. + +{{% notice style="info" title="TLS posture is folded in, not duplicated" %}} +For the TLS handshake the checker uses `InsecureSkipVerify`: it confirms only that a TLS session can be established. Every `_sips._tcp` target is published as a `tls.endpoint.v1` discovery entry so the dedicated TLS checker can verify the certificate chain, hostname match, expiry and cipher posture. Those findings are folded back onto the SIP service page through the `sip.tls_quality` rule. See {{< relref "/reference/checkers/tls" >}}. +{{% /notice %}} + +## What it checks + +| Rule | What it verifies | Severity | +|---|---|---| +| `sip.srv_present` | `_sip._udp` / `_sip._tcp` / `_sips._tcp` SRV records are published and resolvable. | Critical | +| `sip.transport_diversity` | Modern SIP transports (TCP, and ideally TLS) are published alongside legacy UDP. | Warning | +| `sip.srv_targets_resolvable` | Every SRV target resolves to at least one A or AAAA address. | Critical | +| `sip.endpoint_reachable` | Every discovered SIP endpoint accepts a connection on its transport. | Critical | +| `sip.options_response` | Every reachable SIP endpoint answers `OPTIONS` with a 2xx response. | Critical | +| `sip.options_capabilities` | Reviews the `Allow` header advertised in `OPTIONS` replies (INVITE support, presence of `Allow`). | Warning | +| `sip.ipv6_coverage` | At least one SIP endpoint is reachable over IPv6. | Info | +| `sip.tls_quality` | Folds the downstream TLS checker findings (chain, hostname match, expiry) onto the SIP service. | Critical | + +The checker performs, in order: the NAPTR lookup (`SIP+D2U`, `SIP+D2T`, `SIPS+D2T`), the SRV lookup for the three transports (with the `5060`/`5061` fallback), A/AAAA resolution of every SRV target, TCP connect / UDP send / TLS handshake, and the SIP `OPTIONS` request with its status, headers and `Allow` parsed. + +## Options + +| Option | Meaning | Default | +|---|---|---| +| SIP domain | The domain to test (auto-filled from the service scope). Required. | *(auto)* | +| Per-endpoint timeout (seconds) | Probe timeout for each endpoint. | `5` | +| Probe `_sip._udp` | Whether to probe the UDP transport. Disable if UDP is firewalled or the checker host cannot send UDP. | `true` | +| Probe `_sip._tcp` | Whether to probe the TCP transport. | `true` | +| Probe `_sips._tcp` (TLS) | Whether to probe the TLS transport. | `true` | + +## In happyDomain + +Enable the SIP checker from the **Checks** tab of a SIP service. The domain is filled in automatically. See {{< relref "/pages/checks" >}} for the full workflow, and {{< relref "/reference/checkers/tls" >}} for the certificate posture of the `_sips._tcp` endpoints. diff --git a/content/reference/checkers/sip.fr.md b/content/reference/checkers/sip.fr.md new file mode 100644 index 0000000..9a57d8f --- /dev/null +++ b/content/reference/checkers/sip.fr.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: SIP +description: "Sonde le déploiement SIP/VoIP d'un domaine de bout en bout : résolution NAPTR/SRV (RFC 3263), accessibilité des points d'accès en UDP/TCP/TLS et un ping SIP OPTIONS avec inspection des capacités." +weight: 270 +--- + +Le vérificateur **SIP** sonde le déploiement SIP/VoIP d'un domaine à partir de ses enregistrements DNS, en suivant la résolution de la RFC 3263 : NAPTR → SRV (`_sip._udp`, `_sip._tcp`, `_sips._tcp`) → A/AAAA. Il teste l'accessibilité de chaque `cible:port` résolue en UDP, TCP et TLS, puis envoie un ping SIP `OPTIONS` brut et inspecte la réponse (ligne de statut, `Server`/`User-Agent`, méthodes `Allow` annoncées, temps d'aller-retour). + +Il s'agit d'un vérificateur de **niveau service** : il cible un service *SIP* (`abstract.SIP`) publié sur un sous-domaine et se configure depuis l'onglet **Vérifications** de ce service. Lorsqu'aucun enregistrement SRV n'est publié, le vérificateur se rabat sur `:5060` / `:5061`, avec un marqueur d'information visible dans le rapport. + +{{% notice style="info" title="La posture TLS est intégrée, pas dupliquée" %}} +Pour la poignée de main TLS, le vérificateur utilise `InsecureSkipVerify` : il confirme uniquement qu'une session TLS peut être établie. Chaque cible `_sips._tcp` est publiée comme entrée de découverte `tls.endpoint.v1` afin que le vérificateur TLS dédié puisse vérifier la chaîne de certificats, la correspondance du nom d'hôte, l'expiration et la posture des algorithmes. Ces constats sont réintégrés sur la page du service SIP via la règle `sip.tls_quality`. Consultez {{< relref "/reference/checkers/tls" >}}. +{{% /notice %}} + +## Ce qui est vérifié + +| Règle | Ce qui est vérifié | Gravité | +|---|---|---| +| `sip.srv_present` | Les enregistrements SRV `_sip._udp` / `_sip._tcp` / `_sips._tcp` sont publiés et résolvables. | Critique | +| `sip.transport_diversity` | Des transports SIP modernes (TCP, et idéalement TLS) sont publiés en plus de l'UDP historique. | Avertissement | +| `sip.srv_targets_resolvable` | Chaque cible SRV se résout en au moins une adresse A ou AAAA. | Critique | +| `sip.endpoint_reachable` | Chaque point d'accès SIP découvert accepte une connexion sur son transport. | Critique | +| `sip.options_response` | Chaque point d'accès SIP accessible répond à `OPTIONS` par une réponse 2xx. | Critique | +| `sip.options_capabilities` | Examine l'en-tête `Allow` annoncé dans les réponses `OPTIONS` (prise en charge d'INVITE, présence d'`Allow`). | Avertissement | +| `sip.ipv6_coverage` | Au moins un point d'accès SIP est accessible en IPv6. | Info | +| `sip.tls_quality` | Réintègre les constats du vérificateur TLS aval (chaîne, correspondance du nom d'hôte, expiration) sur le service SIP. | Critique | + +Le vérificateur effectue, dans l'ordre : la recherche NAPTR (`SIP+D2U`, `SIP+D2T`, `SIPS+D2T`), la recherche SRV pour les trois transports (avec le repli `5060`/`5061`), la résolution A/AAAA de chaque cible SRV, la connexion TCP / l'envoi UDP / la poignée de main TLS, et la requête SIP `OPTIONS` avec son statut, ses en-têtes et son `Allow` analysés. + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| Domaine SIP | Le domaine à tester (renseigné automatiquement depuis la portée du service). Obligatoire. | *(auto)* | +| Délai d'attente par point d'accès (secondes) | Délai de sonde pour chaque point d'accès. | `5` | +| Sonder `_sip._udp` | Faut-il sonder le transport UDP. À désactiver si l'UDP est filtré ou si l'hôte du vérificateur ne peut pas émettre d'UDP. | `true` | +| Sonder `_sip._tcp` | Faut-il sonder le transport TCP. | `true` | +| Sonder `_sips._tcp` (TLS) | Faut-il sonder le transport TLS. | `true` | + +## Dans happyDomain + +Activez le vérificateur SIP depuis l'onglet **Vérifications** d'un service SIP. Le domaine est renseigné automatiquement. Consultez {{< relref "/pages/checks" >}} pour le fonctionnement complet, et {{< relref "/reference/checkers/tls" >}} pour la posture des certificats des points d'accès `_sips._tcp`. diff --git a/content/reference/checkers/smtp.en.md b/content/reference/checkers/smtp.en.md new file mode 100644 index 0000000..65f90c2 --- /dev/null +++ b/content/reference/checkers/smtp.en.md @@ -0,0 +1,52 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: SMTP +description: "Probes every MX target of a domain on port 25 the way an operator would with swaks: TCP connect, banner, EHLO, STARTTLS, mail-transaction and open-relay probes, reverse DNS and IPv6 coverage." +weight: 200 +--- + +The **Inbound SMTP (MX posture)** checker exercises the *inbound* side of a domain's mail service. For every MX target of the zone it performs the live probes a human operator would run with `swaks` or `telnet … 25`: TCP connect, ESMTP banner and EHLO, STARTTLS negotiation, mail-transaction probes (null sender, postmaster, open-relay), reverse DNS / FCrDNS, extension inventory, and IPv4/IPv6 coverage. The result is an actionable HTML report. + +**Scope:** service-level. It attaches to services of type `svcs.MXs` (the DNS-level MX record set) and is configured from that service's **Checks** tab. + +The probe answers "can this domain *receive* mail correctly?". It does **not** test outbound deliverability (SPF/DKIM/DMARC alignment, spam scoring, blacklist status), which is the job of the {{< relref "/reference/checkers/happydeliver" >}} checker. Mail-transaction probes always stop at `RCPT` and emit `RSET`: no `DATA` is sent, so no mail is delivered. + +## What it checks + +| Rule | Verifies | Severity | +|------|----------|----------| +| `smtp.null_mx` | Reports whether the domain publishes a null MX (RFC 7505). | Info | +| `smtp.mx_present` | The domain publishes at least one MX record (or a null MX). | Critical | +| `smtp.mx_sanity` | Flags MX targets violating RFC 5321 § 5.1 (IP literals, CNAME chains, unresolved names). | Critical | +| `smtp.endpoint_reachable` | Every MX endpoint accepts a TCP connection on port 25. | Critical | +| `smtp.banner_sanity` | Every reachable endpoint emits a 220 SMTP greeting. | Critical | +| `smtp.ehlo_supported` | Every endpoint accepts EHLO. | Critical | +| `smtp.starttls_offered` | Every endpoint advertises the STARTTLS extension. | Critical | +| `smtp.starttls_handshake` | The STARTTLS handshake succeeds wherever advertised. | Critical | +| `smtp.auth_posture` | Flags endpoints advertising SMTP AUTH before STARTTLS (cleartext credentials). | Critical | +| `smtp.reverse_dns` | Every endpoint has a matching PTR record (FCrDNS). | Warning | +| `smtp.null_sender` | Endpoints accept the null sender `MAIL FROM:<>` (required for DSNs). | Critical | +| `smtp.postmaster` | Endpoints accept `RCPT TO:` (RFC 5321 § 4.5.1). | Critical | +| `smtp.open_relay` | Flags endpoints that relay mail for recipients outside the tested domain. | Critical | +| `smtp.extension_posture` | Reports ESMTP extension posture (PIPELINING, 8BITMIME). | Info | +| `smtp.ipv6_reachable` | At least one MX endpoint is reachable over IPv6. | Info | +| `smtp.tls_quality` | Folds downstream TLS findings (chain, hostname, expiry) onto SMTP. | Critical | + +Certificate posture itself is out of scope here: each MX target is published as a `tls.endpoint.v1` discovery entry (opportunistic STARTTLS), and the {{< relref "/reference/checkers/tls" >}} checker runs certificate analysis on the same connection. Its findings are folded back into the `smtp.tls_quality` rule and the HTML report. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Domain (`domain`) | Domain to test. Auto-filled from the service. | (from service) | +| Per-endpoint timeout (seconds) (`timeout`) | Per-endpoint connection timeout. | 12 | +| EHLO hostname (`helo_name`) | Hostname announced in EHLO/HELO. Use a name that resolves and has a valid PTR. | `mx-checker.happydomain.org` | +| Probe null sender (`test_null_sender`) | Probe `MAIL FROM:<>` (RFC 5321 DSN acceptance). | true | +| Probe postmaster (`test_postmaster`) | Probe `RCPT TO:` (RFC 5321 § 4.5.1). | true | +| Probe open-relay posture (`test_open_relay`) | Probe a recipient outside the tested domain to detect open relays. | true | +| Open-relay probe recipient (`test_probe_address`) | Mailbox (outside the tested domain) used for the open-relay probe. | `postmaster@example.com` | + +## In happyDomain + +This is a service-level checker: configure it from the **Checks** tab of the *E-Mail servers* (MX) service. To confirm that mail your domain *sends* lands in the inbox, pair it with the {{< relref "/reference/checkers/happydeliver" >}} checker. For the general workflow of configuring and reading checks, see {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/smtp.fr.md b/content/reference/checkers/smtp.fr.md new file mode 100644 index 0000000..cfca968 --- /dev/null +++ b/content/reference/checkers/smtp.fr.md @@ -0,0 +1,52 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: SMTP +description: "Sonde chaque cible MX d'un domaine sur le port 25 comme le ferait un opérateur avec swaks : connexion TCP, bannière, EHLO, STARTTLS, transactions de messagerie et sonde de relais ouvert, DNS inverse et couverture IPv6." +weight: 200 +--- + +Le vérificateur **SMTP entrant (posture MX)** examine le côté *entrant* du service de messagerie d'un domaine. Pour chaque cible MX de la zone, il effectue les sondes en direct qu'un opérateur exécuterait avec `swaks` ou `telnet … 25` : connexion TCP, bannière ESMTP et EHLO, négociation STARTTLS, sondes de transaction (expéditeur nul, postmaster, relais ouvert), DNS inverse / FCrDNS, inventaire des extensions et couverture IPv4/IPv6. Le résultat est un rapport HTML exploitable. + +**Portée** : niveau service. Il s'attache aux services de type `svcs.MXs` (l'ensemble des enregistrements MX) et se configure depuis l'onglet **Vérifications** de ce service. + +La sonde répond à la question « ce domaine peut-il *recevoir* le courrier correctement ? ». Elle ne teste **pas** la délivrabilité sortante (alignement SPF/DKIM/DMARC, score anti-spam, statut de liste noire), ce qui est le rôle du vérificateur {{< relref "/reference/checkers/happydeliver" >}}. Les sondes de transaction s'arrêtent toujours à `RCPT` et émettent `RSET` : aucun `DATA` n'est envoyé, donc aucun message n'est délivré. + +## Ce qu'il vérifie + +| Règle | Vérifie | Sévérité | +|-------|---------|----------| +| `smtp.null_mx` | Indique si le domaine publie un MX nul (RFC 7505). | Info | +| `smtp.mx_present` | Le domaine publie au moins un enregistrement MX (ou un MX nul). | Critique | +| `smtp.mx_sanity` | Signale les cibles MX violant la RFC 5321 § 5.1 (littéraux IP, chaînes CNAME, noms non résolus). | Critique | +| `smtp.endpoint_reachable` | Chaque point de terminaison MX accepte une connexion TCP sur le port 25. | Critique | +| `smtp.banner_sanity` | Chaque point de terminaison joignable émet une salutation SMTP 220. | Critique | +| `smtp.ehlo_supported` | Chaque point de terminaison accepte EHLO. | Critique | +| `smtp.starttls_offered` | Chaque point de terminaison annonce l'extension STARTTLS. | Critique | +| `smtp.starttls_handshake` | La poignée de main STARTTLS aboutit là où elle est annoncée. | Critique | +| `smtp.auth_posture` | Signale les points de terminaison annonçant SMTP AUTH avant STARTTLS (identifiants en clair). | Critique | +| `smtp.reverse_dns` | Chaque point de terminaison a un enregistrement PTR concordant (FCrDNS). | Avertissement | +| `smtp.null_sender` | Les points de terminaison acceptent l'expéditeur nul `MAIL FROM:<>` (requis pour les DSN). | Critique | +| `smtp.postmaster` | Les points de terminaison acceptent `RCPT TO:` (RFC 5321 § 4.5.1). | Critique | +| `smtp.open_relay` | Signale les points de terminaison relayant le courrier pour des destinataires hors du domaine testé. | Critique | +| `smtp.extension_posture` | Rapporte la posture des extensions ESMTP (PIPELINING, 8BITMIME). | Info | +| `smtp.ipv6_reachable` | Au moins un point de terminaison MX est joignable en IPv6. | Info | +| `smtp.tls_quality` | Intègre les constats TLS en aval (chaîne, nom, expiration) au rapport SMTP. | Critique | + +La posture des certificats elle-même est hors de portée ici : chaque cible MX est publiée comme entrée de découverte `tls.endpoint.v1` (STARTTLS opportuniste), et le vérificateur {{< relref "/reference/checkers/tls" >}} effectue l'analyse des certificats sur la même connexion. Ses constats sont réintégrés dans la règle `smtp.tls_quality` et dans le rapport HTML. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Domaine (`domain`) | Domaine à tester. Rempli automatiquement depuis le service. | (depuis le service) | +| Délai par point de terminaison (secondes) (`timeout`) | Délai de connexion par point de terminaison. | 12 | +| Nom EHLO (`helo_name`) | Nom annoncé dans EHLO/HELO. Utilisez un nom qui résout et possède un PTR valide. | `mx-checker.happydomain.org` | +| Sonder l'expéditeur nul (`test_null_sender`) | Sonde `MAIL FROM:<>` (acceptation des DSN, RFC 5321). | true | +| Sonder le postmaster (`test_postmaster`) | Sonde `RCPT TO:` (RFC 5321 § 4.5.1). | true | +| Sonder la posture de relais ouvert (`test_open_relay`) | Sonde un destinataire hors du domaine testé pour détecter les relais ouverts. | true | +| Destinataire de la sonde de relais ouvert (`test_probe_address`) | Boîte (hors du domaine testé) utilisée pour la sonde de relais ouvert. | `postmaster@example.com` | + +## Dans happyDomain + +C'est un vérificateur de niveau service : configurez-le depuis l'onglet **Vérifications** du service « Serveurs e-mail » (MX). Pour confirmer que le courrier que votre domaine *envoie* arrive en boîte de réception, associez-le au vérificateur {{< relref "/reference/checkers/happydeliver" >}}. Pour le fonctionnement général de la configuration et de la lecture des vérifications, voir {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/ssh.en.md b/content/reference/checkers/ssh.en.md new file mode 100644 index 0000000..f642586 --- /dev/null +++ b/content/reference/checkers/ssh.en.md @@ -0,0 +1,45 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: SSH +description: "Connects to the advertised SSH ports of a server and audits reachability, banner-to-CVE matches, the full algorithm posture, observed host keys, SSHFP alignment and authentication methods." +weight: 280 +--- + +The **SSH** checker produces a comprehensive security audit of the SSH service exposed by a *Server*. It connects to the advertised SSH port(s) on every `A`/`AAAA` address and reports reachability, banner-to-CVE matches, the full algorithm posture (key exchange, host-key, cipher, MAC, compression), the observed host keys, SSHFP fingerprint alignment, and the authentication methods the server exposes. Results are presented as a "fix me fast" HTML report. + +**Scope:** service-level. It attaches to services of type `abstract.Server` (a subdomain that publishes `A`/`AAAA` and optionally `SSHFP` records) and is configured from that service's **Checks** tab. + +## What it checks + +| Rule | Verifies | Severity | +|------|----------|----------| +| `ssh.tcp_reachable` | Every probed (address, port) pair accepts a TCP connection. | Critical | +| `ssh.handshake` | The SSH banner exchange and KEXINIT parse succeed on every reachable endpoint. | Critical | +| `ssh.protocol_version` | Every endpoint advertises SSH-2 and rejects legacy SSH-1. | Critical | +| `ssh.banner_software` | Flags servers whose banner is not a recognised OpenSSH build. | Info | +| `ssh.known_vulnerabilities` | Matches the advertised OpenSSH version against a curated CVE catalog (regreSSHion, Terrapin, etc.). | Critical | +| `ssh.host_key_strength` | Flags host keys below the accepted minimum size (e.g. RSA < 2048 bits). | Critical | +| `ssh.kex_algorithms` | Flags weak or broken key-exchange algorithms. | Critical | +| `ssh.host_key_algorithms` | Flags weak or deprecated host-key algorithms (ssh-rsa/SHA-1, ssh-dss…). | Critical | +| `ssh.cipher_algorithms` | Flags weak or broken symmetric ciphers (CBC, 3DES, RC4…). | Critical | +| `ssh.mac_algorithms` | Flags weak MAC algorithms (SHA-1, non-ETM…). | Critical | +| `ssh.strict_kex` | The server advertises the strict-KEX marker (CVE-2023-48795 Terrapin mitigation). | Warning | +| `ssh.preauth_compression` | Flags servers offering pre-authentication zlib compression. | Info | +| `ssh.auth_methods` | Reviews advertised authentication methods (password exposure, public-key availability). | Warning | +| `ssh.sshfp_alignment` | Compares published SSHFP records against observed host keys (match, missing, mismatch). | Critical | +| `ssh.sshfp_hash` | Flags SSHFP record sets that only publish SHA-1 (type 1) fingerprints. | Warning | + +CVE matching covers, among others, regreSSHion (CVE-2024-6387), the ssh-agent PKCS#11 RCE (CVE-2023-38408), Terrapin (CVE-2023-48795), and several older username-enumeration and command-injection issues. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Ports (`ports`) | Comma-separated extra TCP ports to probe. Port 22 is always probed. | (empty) | +| Per-endpoint probe timeout (ms) (`probeTimeoutMs`) | Maximum time for dial + banner + KEXINIT + handshake on a single endpoint. | 10000 | +| Enumerate authentication methods (`includeAuthProbe`) | Open a second connection with a dummy user to discover advertised auth methods. | true | + +## In happyDomain + +This is a service-level checker: configure it from the **Checks** tab of the *Server* service on the relevant subdomain. Its SSHFP rules cross-reference the `SSHFP` records published in your zone, so keeping those records in sync with the server's host keys improves the result. For the general workflow of configuring and reading checks, see {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/ssh.fr.md b/content/reference/checkers/ssh.fr.md new file mode 100644 index 0000000..f7972e4 --- /dev/null +++ b/content/reference/checkers/ssh.fr.md @@ -0,0 +1,45 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: SSH +description: "Se connecte aux ports SSH annoncés d'un serveur et audite l'accessibilité, les correspondances bannière/CVE, la posture complète des algorithmes, les clés d'hôte observées, l'alignement SSHFP et les méthodes d'authentification." +weight: 280 +--- + +Le vérificateur **SSH** produit un audit de sécurité complet du service SSH exposé par un service « Serveur ». Il se connecte aux ports SSH annoncés sur chaque adresse `A`/`AAAA` et rapporte l'accessibilité, les correspondances bannière/CVE, la posture complète des algorithmes (échange de clés, clé d'hôte, chiffrement, MAC, compression), les clés d'hôte observées, l'alignement des empreintes SSHFP et les méthodes d'authentification exposées par le serveur. Les résultats sont présentés dans un rapport HTML orienté correction rapide. + +**Portée** : niveau service. Il s'attache aux services de type `abstract.Server` (un sous-domaine publiant des enregistrements `A`/`AAAA` et éventuellement `SSHFP`) et se configure depuis l'onglet **Vérifications** de ce service. + +## Ce qu'il vérifie + +| Règle | Vérifie | Sévérité | +|-------|---------|----------| +| `ssh.tcp_reachable` | Chaque paire (adresse, port) sondée accepte une connexion TCP. | Critique | +| `ssh.handshake` | L'échange de bannière SSH et l'analyse KEXINIT aboutissent sur chaque point de terminaison joignable. | Critique | +| `ssh.protocol_version` | Chaque point de terminaison annonce SSH-2 et rejette l'ancien SSH-1. | Critique | +| `ssh.banner_software` | Signale les serveurs dont la bannière n'est pas une version OpenSSH reconnue. | Info | +| `ssh.known_vulnerabilities` | Confronte la version OpenSSH annoncée à un catalogue de CVE (regreSSHion, Terrapin, etc.). | Critique | +| `ssh.host_key_strength` | Signale les clés d'hôte sous la taille minimale acceptée (par exemple RSA < 2048 bits). | Critique | +| `ssh.kex_algorithms` | Signale les algorithmes d'échange de clés faibles ou cassés. | Critique | +| `ssh.host_key_algorithms` | Signale les algorithmes de clé d'hôte faibles ou obsolètes (ssh-rsa/SHA-1, ssh-dss, etc.). | Critique | +| `ssh.cipher_algorithms` | Signale les chiffrements symétriques faibles ou cassés (CBC, 3DES, RC4, etc.). | Critique | +| `ssh.mac_algorithms` | Signale les algorithmes MAC faibles (SHA-1, non-ETM, etc.). | Critique | +| `ssh.strict_kex` | Le serveur annonce le marqueur strict-KEX (mitigation Terrapin, CVE-2023-48795). | Avertissement | +| `ssh.preauth_compression` | Signale les serveurs offrant la compression zlib avant authentification. | Info | +| `ssh.auth_methods` | Examine les méthodes d'authentification annoncées (exposition par mot de passe, disponibilité de la clé publique). | Avertissement | +| `ssh.sshfp_alignment` | Compare les enregistrements SSHFP publiés aux clés d'hôte observées (concordance, manquant, divergence). | Critique | +| `ssh.sshfp_hash` | Signale les jeux SSHFP ne publiant que des empreintes SHA-1 (type 1). | Avertissement | + +La correspondance CVE couvre notamment regreSSHion (CVE-2024-6387), la RCE PKCS#11 de ssh-agent (CVE-2023-38408), Terrapin (CVE-2023-48795) et plusieurs anciennes failles d'énumération d'utilisateurs et d'injection de commandes. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Ports (`ports`) | Ports TCP supplémentaires à sonder, séparés par des virgules. Le port 22 est toujours sondé. | (vide) | +| Délai de sonde par point de terminaison (ms) (`probeTimeoutMs`) | Temps maximal pour la connexion, la bannière, le KEXINIT et la poignée de main sur un point de terminaison. | 10000 | +| Énumérer les méthodes d'authentification (`includeAuthProbe`) | Ouvre une seconde connexion avec un utilisateur factice pour découvrir les méthodes d'authentification annoncées. | true | + +## Dans happyDomain + +C'est un vérificateur de niveau service : configurez-le depuis l'onglet **Vérifications** du service « Serveur » sur le sous-domaine concerné. Ses règles SSHFP recoupent les enregistrements `SSHFP` publiés dans votre zone ; garder ces enregistrements synchronisés avec les clés d'hôte du serveur améliore le résultat. Pour le fonctionnement général de la configuration et de la lecture des vérifications, voir {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/stun-turn.en.md b/content/reference/checkers/stun-turn.en.md new file mode 100644 index 0000000..eb816a0 --- /dev/null +++ b/content/reference/checkers/stun-turn.en.md @@ -0,0 +1,55 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: STUN / TURN +description: "Probes STUN and TURN servers end-to-end: discovery, reachability, TLS/DTLS, STUN binding and authenticated TURN relay." +weight: 310 +--- + +The **STUN / TURN** checker probes STUN and TURN servers end-to-end. STUN and TURN are the NAT-traversal servers that real-time applications (WebRTC, voice and video) rely on to establish peer-to-peer media: STUN lets a host discover its public reflexive address, while TURN relays media when a direct path cannot be opened. + +This is a **service-level** checker. It runs SRV discovery (or uses an explicit URI), checks TCP/UDP reachability and the TLS/DTLS handshake, issues a STUN binding request, verifies that the TURN server requires authentication, performs an authenticated TURN `Allocate`, and finally exercises the relay path with a `CreatePermission + Send` round-trip. + +## What it checks + +| Rule | What it verifies | Severity | +|------|------------------|----------| +| `stun_turn.discovery` | At least one STUN/TURN endpoint could be discovered (explicit URI or SRV lookup). | Critical | +| `stun_turn.srv_stun` | At least one STUN endpoint is available via SRV (`_stun` / `_stuns`) or explicit URI. | Warning | +| `stun_turn.srv_turn` | At least one TURN endpoint is available via SRV (`_turn` / `_turns`) or explicit URI. | Critical | +| `stun_turn.dial` | Every discovered endpoint accepts a connection (TCP/TLS handshake or UDP socket). | Critical | +| `stun_turn.tls_transport` | At least one TLS/DTLS transport (`stuns` / `turns`) succeeds when present. | Critical | +| `stun_turn.ipv6_coverage` | At least one STUN/TURN hostname resolves to an IPv6 address. | Warning | +| `stun_turn.stun_binding` | The STUN Binding request receives a XOR-MAPPED-ADDRESS reply. | Critical | +| `stun_turn.reflexive_public` | Flags endpoints returning a private/loopback reflexive address (server unaware of its public IP). | Critical | +| `stun_turn.stun_latency` | Compares the STUN Binding RTT against the warning/critical thresholds. | Critical | +| `stun_turn.turn_open_relay` | The TURN server requires authentication (challenges an unauthenticated `Allocate` with 401). | Critical | +| `stun_turn.turn_auth` | The supplied TURN credentials (or REST shared secret) yield a successful `Allocate`. | Critical | +| `stun_turn.relay_public` | Flags TURN servers whose allocated relay address is private/loopback (missing public relay IP). | Critical | +| `stun_turn.relay_echo` | The TURN relay path can carry traffic to the configured probe peer (`CreatePermission + Send`). | Warning | + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Zone | Zone used for SRV-based discovery (`_stun._udp` / `_turn._udp` / `_turns._tcp`) when no explicit URI is given. Filled in automatically. | (auto-filled) | +| Server URI | Explicit STUN/TURN URI (RFC 7064/7065). Overrides SRV-based discovery. | — | +| Mode | `auto` probes both STUN and TURN; `stun` skips TURN allocation tests; `turn` requires TURN allocation. | `auto` | +| TURN username | Username for long-term TURN credentials. | — | +| TURN password | Password for long-term TURN credentials (secret). | — | +| REST API shared secret | Shared secret to derive ephemeral credentials (draft-uberti-rtcweb-turn-rest); takes precedence over username/password (secret). | — | +| Realm | Optional explicit TURN realm. | — | +| Transports | Comma-separated transports to test among `udp`, `tcp`, `tls`, `dtls`. | `udp,tcp,tls` | +| Relay echo target | `host:port` used to validate the relay path; a `CreatePermission + Send` is issued, no payload data is exchanged. | `1.1.1.1:53` | +| Also test ChannelBind | Additionally exercise ChannelBind through the relay connection. | `false` | +| RTT warning threshold (ms) | STUN Binding round-trip time above which a warning is raised. | 200 | +| RTT critical threshold (ms) | STUN Binding round-trip time above which a critical alert is raised. | 1000 | +| Per-probe timeout (s) | Time budget for each individual probe. | 5 | + +{{% notice style="info" title="Credentials are needed for the TURN tests" %}} +The authentication, relay-public and relay-echo rules only run when valid TURN credentials are provided — either a username/password pair or a REST API shared secret. Without them, the checker still validates discovery, reachability, TLS and STUN binding, but cannot exercise the TURN relay path. +{{% /notice %}} + +## In happyDomain + +Enable this checker from the **Checks** tab of the relevant service; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The zone is filled in automatically; supply a server URI and TURN credentials as needed for your deployment. diff --git a/content/reference/checkers/stun-turn.fr.md b/content/reference/checkers/stun-turn.fr.md new file mode 100644 index 0000000..5b13ce5 --- /dev/null +++ b/content/reference/checkers/stun-turn.fr.md @@ -0,0 +1,55 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: STUN / TURN +description: "Sonde de bout en bout les serveurs STUN et TURN : découverte, accessibilité, TLS/DTLS, binding STUN et relais TURN authentifié." +weight: 310 +--- + +Le vérificateur **STUN / TURN** sonde de bout en bout les serveurs STUN et TURN. STUN et TURN sont les serveurs de traversée de NAT sur lesquels reposent les applications temps réel (WebRTC, voix et vidéo) pour établir un flux média pair à pair : STUN permet à un hôte de découvrir son adresse réflexive publique, tandis que TURN relaie le média lorsqu'aucun chemin direct ne peut être ouvert. + +Il s'agit d'un vérificateur de **niveau service**. Il effectue la découverte SRV (ou utilise une URI explicite), contrôle l'accessibilité TCP/UDP et la poignée de main TLS/DTLS, émet une requête de binding STUN, vérifie que le serveur TURN exige une authentification, réalise un `Allocate` TURN authentifié, puis éprouve le chemin de relais par un aller-retour `CreatePermission + Send`. + +## Ce qui est vérifié + +| Règle | Ce qu'elle vérifie | Sévérité | +|-------|--------------------|----------| +| `stun_turn.discovery` | Au moins un point d'accès STUN/TURN a pu être découvert (URI explicite ou résolution SRV). | Critique | +| `stun_turn.srv_stun` | Au moins un point d'accès STUN est disponible via SRV (`_stun` / `_stuns`) ou URI explicite. | Avertissement | +| `stun_turn.srv_turn` | Au moins un point d'accès TURN est disponible via SRV (`_turn` / `_turns`) ou URI explicite. | Critique | +| `stun_turn.dial` | Chaque point d'accès découvert accepte une connexion (poignée de main TCP/TLS ou socket UDP). | Critique | +| `stun_turn.tls_transport` | Au moins un transport TLS/DTLS (`stuns` / `turns`) aboutit lorsqu'il est présent. | Critique | +| `stun_turn.ipv6_coverage` | Au moins un nom d'hôte STUN/TURN se résout vers une adresse IPv6. | Avertissement | +| `stun_turn.stun_binding` | La requête de binding STUN reçoit une réponse XOR-MAPPED-ADDRESS. | Critique | +| `stun_turn.reflexive_public` | Signale les points d'accès renvoyant une adresse réflexive privée ou de bouclage (serveur ignorant son IP publique). | Critique | +| `stun_turn.stun_latency` | Compare le temps d'aller-retour du binding STUN aux seuils d'avertissement et critique. | Critique | +| `stun_turn.turn_open_relay` | Le serveur TURN exige une authentification (répond à un `Allocate` non authentifié par un 401). | Critique | +| `stun_turn.turn_auth` | Les identifiants TURN fournis (ou le secret partagé REST) permettent un `Allocate` réussi. | Critique | +| `stun_turn.relay_public` | Signale les serveurs TURN dont l'adresse de relais allouée est privée ou de bouclage (IP de relais publique manquante). | Critique | +| `stun_turn.relay_echo` | Le chemin de relais TURN peut acheminer du trafic vers le pair de test configuré (`CreatePermission + Send`). | Avertissement | + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Zone | Zone utilisée pour la découverte SRV (`_stun._udp` / `_turn._udp` / `_turns._tcp`) en l'absence d'URI explicite. Renseignée automatiquement. | (renseignée automatiquement) | +| URI du serveur | URI STUN/TURN explicite (RFC 7064/7065). Prend le pas sur la découverte SRV. | (aucun) | +| Mode | `auto` sonde à la fois STUN et TURN ; `stun` ignore les tests d'allocation TURN ; `turn` exige l'allocation TURN. | `auto` | +| Nom d'utilisateur TURN | Nom d'utilisateur pour les identifiants TURN à long terme. | (aucun) | +| Mot de passe TURN | Mot de passe pour les identifiants TURN à long terme (secret). | (aucun) | +| Secret partagé API REST | Secret partagé pour dériver des identifiants éphémères (draft-uberti-rtcweb-turn-rest) ; prend le pas sur le nom d'utilisateur et le mot de passe (secret). | (aucun) | +| Realm | Realm TURN explicite facultatif. | (aucun) | +| Transports | Liste de transports à tester, séparés par des virgules, parmi `udp`, `tcp`, `tls`, `dtls`. | `udp,tcp,tls` | +| Cible de l'écho de relais | `hôte:port` utilisé pour valider le chemin de relais ; un `CreatePermission + Send` est émis, aucune donnée utile n'est échangée. | `1.1.1.1:53` | +| Tester aussi ChannelBind | Éprouve en plus ChannelBind sur la connexion de relais. | `false` | +| Seuil d'avertissement de RTT (ms) | Temps d'aller-retour du binding STUN au-delà duquel un avertissement est déclenché. | 200 | +| Seuil critique de RTT (ms) | Temps d'aller-retour du binding STUN au-delà duquel une alerte critique est déclenchée. | 1000 | +| Délai par sonde (s) | Budget de temps alloué à chaque sonde individuelle. | 5 | + +{{% notice style="info" title="Des identifiants sont nécessaires pour les tests TURN" %}} +Les règles d'authentification, de relais public et d'écho de relais ne s'exécutent que lorsque des identifiants TURN valides sont fournis : soit un couple nom d'utilisateur/mot de passe, soit un secret partagé d'API REST. Sans eux, le vérificateur valide tout de même la découverte, l'accessibilité, le TLS et le binding STUN, mais ne peut pas éprouver le chemin de relais TURN. +{{% /notice %}} + +## Dans happyDomain + +Activez ce vérificateur depuis l'onglet **Vérifications** du service concerné ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. La zone est renseignée automatiquement ; fournissez une URI de serveur et des identifiants TURN selon les besoins de votre déploiement. diff --git a/content/reference/checkers/tls.en.md b/content/reference/checkers/tls.en.md new file mode 100644 index 0000000..5d52738 --- /dev/null +++ b/content/reference/checkers/tls.en.md @@ -0,0 +1,50 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: TLS posture +description: "Dials every TLS endpoint discovered for a domain, completes the handshake (with STARTTLS upgrade where needed) and audits certificate chain, hostname coverage, expiry and protocol strength." +weight: 170 +--- + +The **TLS** checker (internal name `TLS`) evaluates the transport-security posture of every TLS endpoint exposed by a domain. It does not scan ports on its own: it consumes **discovery entries** of type `tls.endpoint.v1` published by other service checkers (XMPP, SRV, CalDAV, CardDAV, SMTP…). For each discovered endpoint it performs a real TCP dial, an optional protocol-specific STARTTLS upgrade, and a full TLS handshake, then reports a per-endpoint posture. + +**Scope:** domain-level. The checker runs against the whole domain and folds in the endpoints that every other service checker has advertised. A given endpoint is therefore only probed if some service checker (for example {{< relref "/reference/checkers/smtp" >}}) published it. + +## What it checks + +| Rule | Verifies | Severity | +|------|----------|----------| +| `tls.endpoints_discovered` | At least one TLS endpoint has been discovered for this target. | Info | +| `tls.reachability` | Every discovered endpoint accepts a TCP connection. | Critical | +| `tls.handshake` | The TLS handshake completes on every reachable endpoint. | Critical | +| `tls.starttls_advertised` | STARTTLS endpoints advertise the upgrade capability. | Critical | +| `tls.starttls_dialect_supported` | The discovered STARTTLS dialect is implemented by the checker. | Critical | +| `tls.peer_certificate_present` | The server presented a certificate during the handshake. | Critical | +| `tls.chain_validity` | The presented chain validates against the system trust store. | Critical | +| `tls.hostname_match` | The leaf certificate covers the probed hostname (SNI). | Critical | +| `tls.expiry` | Flags expired or soon-to-expire leaf certificates. | Critical | +| `tls.version` | Flags endpoints negotiating a TLS version below TLS 1.2. | Warning | +| `tls.cipher_suite` | Reports the cipher suite negotiated on each endpoint. | Info | +| `tls.enum.versions` | Flags endpoints that still accept TLS versions below TLS 1.2 (enumeration option). | Warning | +| `tls.enum.ciphers` | Flags endpoints accepting broken cipher suites (NULL, anonymous, EXPORT, RC4, 3DES) (enumeration option). | Warning | + +STARTTLS upgrades are supported for SMTP/submission, IMAP, POP3, and XMPP (c2s and s2s). When a service checker marks an endpoint as requiring STARTTLS, the absence of the upgrade is reported as Critical; otherwise it is treated as opportunistic and reported as Warning. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Per-endpoint probe timeout (ms) (`probeTimeoutMs`) | Maximum time allowed for dial + STARTTLS + TLS handshake on a single endpoint. | 10000 | +| Enumerate accepted TLS versions and cipher suites (`enumerateCiphers`) | When enabled, each direct-TLS endpoint is swept with one ClientHello per (version, cipher) pair to discover the exact set the server accepts. Adds roughly 50 handshakes per endpoint. | false | + +The list of discovery entries is filled automatically from what other checkers publish and is not user-editable. + +## In happyDomain + +The TLS checker is a domain-level check: enable it from the domain's checks view. Because it works on endpoints discovered by other checkers, it pairs naturally with service-level checkers that publish TLS endpoints, such as {{< relref "/reference/checkers/smtp" >}}. + +{{% notice style="info" title="TLS posture vs DANE" %}} +This checker validates the live certificate against the system trust store. Pinning the certificate in DNS through TLSA records is a separate concern, handled by the {{< relref "/reference/checkers/dane" >}} checker. +{{% /notice %}} + +For the general workflow of configuring and reading checks, see {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/tls.fr.md b/content/reference/checkers/tls.fr.md new file mode 100644 index 0000000..0fe009d --- /dev/null +++ b/content/reference/checkers/tls.fr.md @@ -0,0 +1,50 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Posture TLS +description: "Se connecte à chaque point de terminaison TLS découvert pour un domaine, termine la poignée de main (avec bascule STARTTLS si nécessaire) et audite la chaîne de certificats, la couverture du nom, l'expiration et la robustesse du protocole." +weight: 170 +--- + +Le vérificateur **TLS** (nom interne « TLS ») évalue la posture de sécurité du transport de chaque point de terminaison TLS exposé par un domaine. Il ne scanne pas de ports lui-même : il consomme des **entrées de découverte** de type `tls.endpoint.v1` publiées par d'autres vérificateurs de service (XMPP, SRV, CalDAV, CardDAV, SMTP, etc.). Pour chaque point de terminaison découvert, il effectue une véritable connexion TCP, une bascule STARTTLS spécifique au protocole le cas échéant, puis une poignée de main TLS complète, et il rapporte une posture par point de terminaison. + +**Portée** : niveau domaine. Le vérificateur s'exécute sur l'ensemble du domaine et intègre les points de terminaison annoncés par les autres vérificateurs de service. Un point de terminaison n'est donc sondé que si un vérificateur de service (par exemple {{< relref "/reference/checkers/smtp" >}}) l'a publié. + +## Ce qu'il vérifie + +| Règle | Vérifie | Sévérité | +|-------|---------|----------| +| `tls.endpoints_discovered` | Au moins un point de terminaison TLS a été découvert pour cette cible. | Info | +| `tls.reachability` | Chaque point de terminaison découvert accepte une connexion TCP. | Critique | +| `tls.handshake` | La poignée de main TLS aboutit sur chaque point de terminaison joignable. | Critique | +| `tls.starttls_advertised` | Les points de terminaison STARTTLS annoncent la capacité de bascule. | Critique | +| `tls.starttls_dialect_supported` | Le dialecte STARTTLS découvert est implémenté par le vérificateur. | Critique | +| `tls.peer_certificate_present` | Le serveur a présenté un certificat pendant la poignée de main. | Critique | +| `tls.chain_validity` | La chaîne présentée se valide avec le magasin de confiance du système. | Critique | +| `tls.hostname_match` | Le certificat feuille couvre le nom sondé (SNI). | Critique | +| `tls.expiry` | Signale les certificats feuilles expirés ou proches de l'expiration. | Critique | +| `tls.version` | Signale les points de terminaison négociant une version TLS inférieure à TLS 1.2. | Avertissement | +| `tls.cipher_suite` | Rapporte la suite cryptographique négociée sur chaque point de terminaison. | Info | +| `tls.enum.versions` | Signale les points de terminaison acceptant encore des versions TLS inférieures à TLS 1.2 (option d'énumération). | Avertissement | +| `tls.enum.ciphers` | Signale les points de terminaison acceptant des suites cryptographiques cassées (NULL, anonyme, EXPORT, RC4, 3DES) (option d'énumération). | Avertissement | + +Les bascules STARTTLS sont prises en charge pour SMTP/submission, IMAP, POP3 et XMPP (c2s et s2s). Lorsqu'un vérificateur de service marque un point de terminaison comme exigeant STARTTLS, l'absence de bascule est rapportée comme critique ; sinon, elle est considérée comme opportuniste et rapportée comme avertissement. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Délai de sonde par point de terminaison (ms) (`probeTimeoutMs`) | Temps maximal alloué pour la connexion, la bascule STARTTLS et la poignée de main TLS sur un point de terminaison. | 10000 | +| Énumérer les versions et suites TLS acceptées (`enumerateCiphers`) | Lorsqu'activée, chaque point de terminaison en TLS direct est balayé avec un ClientHello par paire (version, suite) afin de découvrir l'ensemble exact accepté par le serveur. Ajoute environ 50 poignées de main par point de terminaison. | false | + +La liste des entrées de découverte est remplie automatiquement à partir de ce que les autres vérificateurs publient et n'est pas modifiable par l'utilisateur. + +## Dans happyDomain + +Le vérificateur TLS est une vérification de niveau domaine : activez-le depuis la vue des vérifications du domaine. Comme il travaille sur des points de terminaison découverts par d'autres vérificateurs, il s'associe naturellement aux vérificateurs de service qui publient des points de terminaison TLS, comme {{< relref "/reference/checkers/smtp" >}}. + +{{% notice style="info" title="Posture TLS et DANE" %}} +Ce vérificateur valide le certificat en direct avec le magasin de confiance du système. L'épinglage du certificat dans le DNS via des enregistrements TLSA est un sujet distinct, traité par le vérificateur {{< relref "/reference/checkers/dane" >}}. +{{% /notice %}} + +Pour le fonctionnement général de la configuration et de la lecture des vérifications, voir {{< relref "/pages/checks" >}}. diff --git a/content/reference/checkers/xmpp.en.md b/content/reference/checkers/xmpp.en.md new file mode 100644 index 0000000..f5ee617 --- /dev/null +++ b/content/reference/checkers/xmpp.en.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: XMPP +description: "Probes a domain's XMPP deployment: SRV discovery, reachability, STARTTLS, SASL mechanisms and federation authentication." +weight: 290 +--- + +The **XMPP** checker probes a domain's XMPP (Jabber) deployment end-to-end, much like [xmpp.net](https://xmpp.net/) does: it discovers the relevant SRV records, opens a stream to each endpoint, negotiates STARTTLS, inspects the offered SASL mechanisms and confirms that server-to-server federation can authenticate. + +This is a **service-level** checker. It applies to services of type **XMPP** and is configured from that service's own **Checks** tab. It probes the four standard service names (`_xmpp-client._tcp`, `_xmpp-server._tcp`, `_xmpps-client._tcp`, `_xmpps-server._tcp`), the legacy `_jabber._tcp`, and falls back to `:5222` / `:5269` when no SRV record is published. + +{{% notice style="info" title="TLS posture is checked separately" %}} +Certificate chain, hostname (SAN) match, expiry and cipher posture are **out of scope** here: a dedicated {{< relref "/reference/checkers/tls" >}} checker handles them. The XMPP checker only confirms that STARTTLS completes, records the negotiated TLS version and cipher for context, and folds the downstream TLS findings back onto the XMPP service report through the `xmpp.tls_quality` rule. +{{% /notice %}} + +## What it checks + +| Rule | What it verifies | Severity | +|------|------------------|----------| +| `xmpp.srv_c2s` | Client-to-server SRV records (`_xmpp-client` / `_xmpps-client` / `_jabber`) are published and resolvable. | Critical | +| `xmpp.srv_s2s` | Server-to-server SRV records (`_xmpp-server` / `_xmpps-server`) are published and resolvable. | Critical | +| `xmpp.c2s_reachable` | At least one client-to-server endpoint accepts TCP and completes TLS. | Critical | +| `xmpp.s2s_reachable` | At least one server-to-server endpoint accepts TCP and completes TLS. | Critical | +| `xmpp.starttls_required` | STARTTLS is advertised and required on every reachable c2s/s2s endpoint. | Critical | +| `xmpp.sasl_mechanisms` | The c2s SASL offer is sound (SCRAM present, no password-equivalent PLAIN-only). | Critical | +| `xmpp.s2s_dialback` | Server-to-server endpoints advertise dialback or SASL EXTERNAL after TLS (federation auth). | Critical | +| `xmpp.ipv6_reachable` | Flags deployments reachable only over IPv4. | Info | +| `xmpp.direct_tls` | Flags c2s deployments that do not publish XEP-0368 direct-TLS (`_xmpps-*`) SRV records. | Info | +| `xmpp.tls_quality` | Folds the downstream TLS checker findings (certificate chain, hostname match, expiry) onto the XMPP service. | Critical | + +The probe also covers TCP reachability of A/AAAA targets, stream feature parsing and IPv4/IPv6 coverage, surfaced through the rules above and the HTML report. + +## Options + +| Option | Meaning | Default | +|--------|---------|---------| +| Domain | XMPP domain (JID domain) to test. Filled in automatically from the service. | (auto-filled) | +| Mode | Which side to probe: `c2s` (client-to-server), `s2s` (server-to-server), or `both`. | `both` | +| Per-endpoint timeout (seconds) | Time budget for each probed endpoint. | 10 | + +## In happyDomain + +Enable this checker from the **Checks** tab of an XMPP service; see {{< relref "/pages/checks" >}} for how to configure and schedule checks. The domain is filled in automatically from the service. For the certificate side of the same endpoints, pair it with the {{< relref "/reference/checkers/tls" >}} checker. diff --git a/content/reference/checkers/xmpp.fr.md b/content/reference/checkers/xmpp.fr.md new file mode 100644 index 0000000..11cc9c6 --- /dev/null +++ b/content/reference/checkers/xmpp.fr.md @@ -0,0 +1,44 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: XMPP +description: "Sonde le déploiement XMPP d'un domaine : découverte SRV, accessibilité, STARTTLS, mécanismes SASL et authentification de fédération." +weight: 290 +--- + +Le vérificateur **XMPP** sonde de bout en bout le déploiement XMPP (Jabber) d'un domaine, à la manière de [xmpp.net](https://xmpp.net/) : il découvre les enregistrements SRV pertinents, ouvre un flux vers chaque point d'accès, négocie STARTTLS, inspecte les mécanismes SASL proposés et confirme que la fédération de serveur à serveur peut s'authentifier. + +Il s'agit d'un vérificateur de **niveau service**. Il s'applique aux services de type **XMPP** et se configure depuis l'onglet **Vérifications** de ce service. Il sonde les quatre noms de service standard (`_xmpp-client._tcp`, `_xmpp-server._tcp`, `_xmpps-client._tcp`, `_xmpps-server._tcp`), l'ancien `_jabber._tcp`, et se rabat sur `:5222` / `:5269` lorsqu'aucun enregistrement SRV n'est publié. + +{{% notice style="info" title="La posture TLS est vérifiée séparément" %}} +La chaîne de certificats, la correspondance du nom d'hôte (SAN), l'expiration et la posture des chiffrements sont **hors périmètre** ici : un vérificateur {{< relref "/reference/checkers/tls" >}} dédié s'en charge. Le vérificateur XMPP confirme seulement que STARTTLS aboutit, enregistre la version et le chiffrement TLS négociés à titre de contexte, et reverse les conclusions TLS dans le rapport du service XMPP via la règle `xmpp.tls_quality`. +{{% /notice %}} + +## Ce qui est vérifié + +| Règle | Ce qu'elle vérifie | Sévérité | +|-------|--------------------|----------| +| `xmpp.srv_c2s` | Les enregistrements SRV client vers serveur (`_xmpp-client` / `_xmpps-client` / `_jabber`) sont publiés et résolvables. | Critique | +| `xmpp.srv_s2s` | Les enregistrements SRV serveur vers serveur (`_xmpp-server` / `_xmpps-server`) sont publiés et résolvables. | Critique | +| `xmpp.c2s_reachable` | Au moins un point d'accès client vers serveur accepte le TCP et achève le TLS. | Critique | +| `xmpp.s2s_reachable` | Au moins un point d'accès serveur vers serveur accepte le TCP et achève le TLS. | Critique | +| `xmpp.starttls_required` | STARTTLS est annoncé et requis sur chaque point d'accès c2s/s2s joignable. | Critique | +| `xmpp.sasl_mechanisms` | L'offre SASL c2s est saine (présence de SCRAM, absence d'un PLAIN seul équivalent à un mot de passe en clair). | Critique | +| `xmpp.s2s_dialback` | Les points d'accès serveur vers serveur annoncent le dialback ou SASL EXTERNAL après le TLS (authentification de fédération). | Critique | +| `xmpp.ipv6_reachable` | Signale les déploiements joignables uniquement en IPv4. | Info | +| `xmpp.direct_tls` | Signale les déploiements c2s qui ne publient pas d'enregistrements SRV direct-TLS XEP-0368 (`_xmpps-*`). | Info | +| `xmpp.tls_quality` | Reverse sur le service XMPP les conclusions du vérificateur TLS sous-jacent (chaîne de certificats, correspondance du nom d'hôte, expiration). | Critique | + +La sonde couvre aussi l'accessibilité TCP des cibles A/AAAA, l'analyse des fonctionnalités de flux et la couverture IPv4/IPv6, exposées au travers des règles ci-dessus et du rapport HTML. + +## Options + +| Option | Signification | Défaut | +|--------|---------------|--------| +| Domaine | Domaine XMPP (domaine du JID) à tester. Renseigné automatiquement depuis le service. | (renseigné automatiquement) | +| Mode | Côté à sonder : `c2s` (client vers serveur), `s2s` (serveur vers serveur) ou `both` (les deux). | `both` | +| Délai par point d'accès (secondes) | Budget de temps alloué à chaque point d'accès sondé. | 10 | + +## Dans happyDomain + +Activez ce vérificateur depuis l'onglet **Vérifications** d'un service XMPP ; consultez {{< relref "/pages/checks" >}} pour savoir comment configurer et planifier les vérifications. Le domaine est renseigné automatiquement depuis le service. Pour le volet certificat de ces mêmes points d'accès, associez-le au vérificateur {{< relref "/reference/checkers/tls" >}}. diff --git a/content/reference/checkers/zonemaster.en.md b/content/reference/checkers/zonemaster.en.md new file mode 100644 index 0000000..de34501 --- /dev/null +++ b/content/reference/checkers/zonemaster.en.md @@ -0,0 +1,52 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Zonemaster +description: "Run the Zonemaster test suite against a domain through its JSON-RPC API and group the results by test category (delegation, consistency, DNSSEC…)." +weight: 350 +--- + +The **Zonemaster** checker runs the [Zonemaster](https://zonemaster.net/) test suite against a domain and reports its findings grouped by test category. Zonemaster is a well-established DNS health and delegation validator; this checker drives it through its JSON-RPC API, stores the full results as an observation, and renders an HTML report grouped by module and severity. + +This checker is **domain-level**: it evaluates the domain's delegation and zone content rather than a single service. + +## How it works + +For each run the checker submits the domain to a Zonemaster JSON-RPC endpoint (the official public API by default), waits for the test batch to complete, and stores every message Zonemaster returns. Each message carries a module, a test case and a Zonemaster severity (INFO / NOTICE / WARNING / ERROR / CRITICAL). + +{{% notice style="info" title="Point only at a trusted Zonemaster instance" %}} +The Zonemaster API URL is an administrator option. Because the checker issues requests to whatever URL is configured and surfaces the responses, point it only at a Zonemaster instance you trust. +{{% /notice %}} + +## What it checks + +The checker maps each Zonemaster test module onto a category rule. Every rule emits a `.summary` state, plus one state per WARNING-or-worse message (so downstream consumers can match on stable codes); INFO and NOTICE messages are folded into the summary counts. + +| Rule | What it covers | +|---|---| +| `zonemaster.dnssec` | DNSSEC tests (signatures, NSEC/NSEC3, DS/DNSKEY coherence). | +| `zonemaster.delegation` | Delegation tests (parent/child NS agreement, glue, referrals). | +| `zonemaster.consistency` | Consistency tests (SOA serial, NS set, zone content across servers). | +| `zonemaster.connectivity` | Connectivity tests (UDP/TCP reachability of authoritative servers, AS diversity). | +| `zonemaster.nameserver` | Nameserver tests (server behaviour, EDNS, unknown RR handling). | +| `zonemaster.syntax` | Syntax tests (domain name syntax, hostname legality). | +| `zonemaster.zone` | Zone tests (SOA values, MX presence, mandatory records). | +| `zonemaster.address` | Address tests (nameserver IP addresses, private/reserved ranges). | +| `zonemaster.basic` | Basic/system tests (initial reachability and fundamental requirements). | + +Zonemaster severities are mapped onto happyDomain statuses: CRITICAL and ERROR → Critical; WARNING → Warning; NOTICE, INFO and DEBUG → Info. Each summary takes the worst status among its category's messages. When Zonemaster returns no message for a category, that rule reports Unknown (not tested). + +## Options + +| Option | Meaning | Default | +|---|---|---| +| Domain name to check (`domainName`) | Domain submitted to Zonemaster. **Required.** | auto-filled | +| Profile (`profile`) | Zonemaster profile name to run the tests under. | `default` | +| Result language (`language`, per user) | Language of the returned messages (`en`, `fr`, `de`, `es`, `sv`, `da`, `fi`, `nb`, `nl`, `pt`). | `en` | +| Zonemaster API URL (`zonemasterAPIURL`, admin) | JSON-RPC endpoint to query. | `https://zonemaster.net/api` | + +## In happyDomain + +Enable this checker for the domain from the **Checks** view. See {{< relref "/pages/checks" >}} for scheduling and reading checks. + +Zonemaster overlaps in part with {{< relref "/reference/checkers/dnsviz" >}} on DNSSEC, but covers a broader range of delegation, connectivity and zone-content tests. For NSEC/NSEC3 hardening specifically, see {{< relref "/reference/checkers/dnssec" >}}. diff --git a/content/reference/checkers/zonemaster.fr.md b/content/reference/checkers/zonemaster.fr.md new file mode 100644 index 0000000..0e5d360 --- /dev/null +++ b/content/reference/checkers/zonemaster.fr.md @@ -0,0 +1,52 @@ +--- +date: 2026-06-11T09:00:00+02:00 +author: nemunaire +title: Zonemaster +description: "Lance la suite de tests Zonemaster sur un domaine via son API JSON-RPC et regroupe les résultats par catégorie de test (délégation, cohérence, DNSSEC…)." +weight: 350 +--- + +Le vérificateur **Zonemaster** lance la suite de tests [Zonemaster](https://zonemaster.net/) sur un domaine et rapporte ses constats regroupés par catégorie de test. Zonemaster est un validateur reconnu de la santé DNS et de la délégation ; ce vérificateur le pilote via son API JSON-RPC, conserve l'ensemble des résultats sous forme d'observation et produit un rapport HTML regroupé par module et par sévérité. + +Ce vérificateur s'applique au **niveau domaine** : il évalue la délégation et le contenu de zone du domaine plutôt qu'un service isolé. + +## Fonctionnement + +À chaque exécution, le vérificateur soumet le domaine à un point d'accès JSON-RPC Zonemaster (l'API publique officielle par défaut), attend la fin du lot de tests et conserve chaque message renvoyé par Zonemaster. Chaque message porte un module, un cas de test et une sévérité Zonemaster (INFO / NOTICE / WARNING / ERROR / CRITICAL). + +{{% notice style="info" title="Ne pointez que vers une instance Zonemaster de confiance" %}} +L'URL de l'API Zonemaster est une option d'administrateur. Comme le vérificateur émet des requêtes vers l'URL configurée et en restitue les réponses, ne le pointez que vers une instance Zonemaster en laquelle vous avez confiance. +{{% /notice %}} + +## Ce qui est vérifié + +Le vérificateur projette chaque module de test Zonemaster sur une règle de catégorie. Chaque règle émet un état `.summary`, plus un état par message de niveau WARNING ou pire (afin que les consommateurs en aval puissent s'appuyer sur des codes stables) ; les messages INFO et NOTICE sont agrégés dans les compteurs du résumé. + +| Règle | Ce qu'elle couvre | +|---|---| +| `zonemaster.dnssec` | Tests DNSSEC (signatures, NSEC/NSEC3, cohérence DS/DNSKEY). | +| `zonemaster.delegation` | Tests de délégation (accord NS parent/enfant, glue, renvois). | +| `zonemaster.consistency` | Tests de cohérence (numéro de série SOA, ensemble NS, contenu de zone entre serveurs). | +| `zonemaster.connectivity` | Tests de connectivité (joignabilité UDP/TCP des serveurs autoritaires, diversité d'AS). | +| `zonemaster.nameserver` | Tests des serveurs de noms (comportement du serveur, EDNS, traitement des RR inconnus). | +| `zonemaster.syntax` | Tests de syntaxe (syntaxe des noms de domaine, légalité des noms d'hôtes). | +| `zonemaster.zone` | Tests de zone (valeurs SOA, présence de MX, enregistrements obligatoires). | +| `zonemaster.address` | Tests d'adresses (adresses IP des serveurs de noms, plages privées/réservées). | +| `zonemaster.basic` | Tests de base/système (joignabilité initiale et prérequis fondamentaux). | + +Les sévérités Zonemaster sont projetées sur les statuts de happyDomain : CRITICAL et ERROR vers Critique ; WARNING vers Avertissement ; NOTICE, INFO et DEBUG vers Info. Chaque résumé retient le pire statut parmi les messages de sa catégorie. Lorsque Zonemaster ne renvoie aucun message pour une catégorie, la règle correspondante rapporte Inconnu (non testée). + +## Options + +| Option | Signification | Défaut | +|---|---|---| +| Nom de domaine à vérifier (`domainName`) | Domaine soumis à Zonemaster. **Obligatoire.** | prérempli | +| Profil (`profile`) | Nom du profil Zonemaster sous lequel exécuter les tests. | `default` | +| Langue des résultats (`language`, par utilisateur) | Langue des messages renvoyés (`en`, `fr`, `de`, `es`, `sv`, `da`, `fi`, `nb`, `nl`, `pt`). | `en` | +| URL de l'API Zonemaster (`zonemasterAPIURL`, admin) | Point d'accès JSON-RPC à interroger. | `https://zonemaster.net/api` | + +## Dans happyDomain + +Activez ce vérificateur pour le domaine depuis la vue **Vérifications**. Voir {{< relref "/pages/checks" >}} pour la planification et la lecture des vérifications. + +Zonemaster recoupe en partie {{< relref "/reference/checkers/dnsviz" >}} sur le DNSSEC, mais couvre un éventail plus large de tests de délégation, de connectivité et de contenu de zone. Pour le durcissement NSEC/NSEC3 en particulier, voir {{< relref "/reference/checkers/dnssec" >}}.