fix(deploy): passe de DuckDNS à deSEC, filtré par l'école

Le filtrage du réseau de l'école bloque duckdns.org, site et API, depuis
les postes comme depuis la VM : sans API, pas de défi DNS-01. deSEC
(dedyn.io) répond depuis les deux.

- Domaine enervision-g3.dedyn.io ; provision-host.sh publie par l'API
  deSEC l'enregistrement du domaine et son joker vers la VM.
- make tls-desec remplace tls-duckdns. acme.sh recopie le jeton dans
  acme/account.conf : le dossier est retiré aux autres comptes.
- deploy.yml ne demande un certificat qu'à un .env déjà réaligné sur
  le domaine deSEC, pour ne pas faire échouer un déploiement en cours
  de migration.
This commit is contained in:
Johan LEROY
2026-09-23 11:38:44 +02:00
parent 3e871a3e8b
commit d687d7dc58
8 changed files with 74 additions and 48 deletions
+4 -4
View File
@@ -38,10 +38,10 @@ Apres l'apply, la machine porte `/srv/enervision/dev`, `/srv/enervision/rec` et
manuel, `make stack-up` dans chaque dossier ; les suivants sont joues par le runner a chaque push
sur `dev` et sur `main`, et a chaque lancement manuel d'une autre branche pour `dev`.
Noms et certificats (ADR 0018) : avant l'apply, l'enregistrement DuckDNS de `domaine` doit viser
`ssh_host`, et son jeton se trouver dans `<racine>/duckdns.token` (600, proprietaire). L'apply
obtient alors un certificat Let's Encrypt par environnement et planifie leur renouvellement ;
sans jeton, chaque environnement garde un certificat auto-signe. Le frontal SNI (`infra/front`)
Noms et certificats (ADR 0018) : avant l'apply, le jeton deSEC de `domaine` doit se trouver dans
`<racine>/desec.token` (600, proprietaire). L'apply fait alors pointer le domaine et son joker
vers la machine, obtient un certificat Let's Encrypt par environnement et planifie leur
renouvellement ; sans jeton, chaque environnement garde un certificat auto-signe. Le frontal SNI (`infra/front`)
se demarre une fois depuis le dossier de la prod, `make front-up`.
Retirer le runner se fait a la main, depuis les parametres du depot : `terraform destroy` ne le
+3 -3
View File
@@ -78,12 +78,12 @@ Renouvellement, à passer en tâche planifiée sur la machine :
### Let's Encrypt par DNS-01, le mode de la VM
La VM n'a qu'une IP privée : le défi HTTP-01 y est impossible. Ses trois noms sont chez DuckDNS,
La VM n'a qu'une IP privée : le défi HTTP-01 y est impossible. Ses trois noms sont chez deSEC,
dont l'API pose l'enregistrement TXT du défi DNS-01, et acme.sh le fait sans rien ouvrir
([ADR 0018](../../docs/adr/0018-noms-duckdns-certificats-dns01-et-frontal-sni.md)).
([ADR 0018](../../docs/adr/0018-noms-desec-certificats-dns01-et-frontal-sni.md)).
```bash
make tls-duckdns # PUBLIC_HOST lu dans .env, jeton dans ../duckdns.token (600)
make tls-desec # PUBLIC_HOST lu dans .env, jeton dans ../desec.token (600)
```
La cible est rejouable : acme.sh ne renouvelle qu'à trente jours de l'échéance, installe le
@@ -45,8 +45,8 @@ variable "depot_url" {
variable "domaine" {
type = string
description = "Nom DuckDNS de la prod, rec. et dev. en sous-domaines (ADR 0018). Son enregistrement doit viser ssh_host, et son jeton se trouver dans <racine>/duckdns.token sur la machine."
default = "enervision-g3.duckdns.org"
description = "Domaine deSEC de la prod, rec. et dev. en sous-domaines (ADR 0018). Son jeton doit se trouver dans <racine>/desec.token sur la machine : provision-host.sh y fait pointer le domaine et son joker vers la machine."
default = "enervision-g3.dedyn.io"
}
variable "adresse_publique" {