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.
343 lines
13 KiB
Markdown
343 lines
13 KiB
Markdown
---
|
|
data: 2023-01-19T19:31:08+02:00
|
|
title: Avec Docker
|
|
weight: 15
|
|
---
|
|
|
|
happyDomain est sponsorisé par Docker.
|
|
Vous trouverez notre image officielle sur [le Docker Hub](https://hub.docker.com/r/happydomain/happydomain/).
|
|
|
|
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 et architectures supportées
|
|
|
|
Toutes les étiquettes (*tags*) sont construites pour `amd64`, `arm64` et `arm/v7` et sont basées sur Alpine.
|
|
|
|
Les étiquettes actuellement disponibles :
|
|
|
|
- `latest` : la version la plus récente, correspondant à la branche `master` de notre dépôt.
|
|
|
|
|
|
## Démarrage rapide (conteneur unique)
|
|
|
|
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 à 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
|
|
```
|
|
|
|
Pour une instance de production avec envoi d'e-mails :
|
|
|
|
```
|
|
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
|
|
```
|
|
|
|
|
|
## Déploiement complet avec tous les vérificateurs
|
|
|
|
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:
|
|
```
|
|
|
|
### 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_<ID>_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 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
|
|
```
|
|
|
|
`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
|
|
```
|