@@ -159,7 +159,7 @@ environment:
159159| `DOMAIN` | Your domain (single-domain mode). Supports wildcards (`*.example.com`) |
160160| `TARGET_ENDPOINT` | Backend address, e.g. `app:80` or `http://app:80` |
161161| `GATEWAY_DOMAIN` | dstack gateway domain (e.g. `_.dstack-prod5.phala.network`) |
162- | `CERTBOT_EMAIL` | Email for Let's Encrypt registration. Not required in tls-alpn-01 mode, where the preferred name is `ACME_EMAIL` |
162+ | `CERTBOT_EMAIL` | *(optional)* ACME contact address. `ACME_EMAIL` is accepted too, and is the preferred name in tls-alpn-01 mode |
163163| `DNS_PROVIDER` | DNS provider (`cloudflare`, `linode`, `namecheap`) |
164164
165165# ## Optional
@@ -172,7 +172,7 @@ environment:
172172| `SET_CAA` | `false` | Enable CAA DNS record (dns-01 only; tls-alpn-01 cannot write DNS) |
173173| `TXT_PREFIX` | `_dstack-app-address` | DNS TXT record prefix |
174174| `CERTBOT_STAGING` | `false` | Use Let's Encrypt staging server. `ACME_STAGING` is the preferred name in tls-alpn-01 mode |
175- | `ACME_EMAIL` | | Optional ACME contact address in tls-alpn-01 mode. Falls back to `CERTBOT_EMAIL`; there is no certbot on that path |
175+ | `ACME_EMAIL` | | ACME contact address, in either mode. Falls back to `CERTBOT_EMAIL`. Optional — see below |
176176| `CHALLENGE_TYPE` | `dns-01` | `dns-01` (certbot + DNS credentials) or `tls-alpn-01` (lego, no DNS credentials) |
177177| `DNS_SETUP_MODE` | `wait` | tls-alpn-01 only : ` wait` , `print` or `webhook` — see below |
178178| `DNS_SETUP_TIMEOUT` | `1800` | tls-alpn-01 only : seconds to wait for the records to appear |
@@ -307,16 +307,20 @@ Two consequences:
307307 means updating DNS. `DNS_SETUP_MODE=webhook` exists so this can be automated;
308308 doing it by hand means downtime on every redeploy.
309309
310- # ## The ACME contact address is optional, and public
310+ # # The ACME contact address is optional, and public
311311
312- ` ACME_EMAIL` may be left unset. RFC 8555 makes the ACME `contact` field
313- optional, and Let's Encrypt stopped sending expiry notification mail in 2025, so
314- setting one buys little.
312+ ` ACME_EMAIL` (or `CERTBOT_EMAIL`) may be left unset in **either** mode. RFC 8555
313+ makes the ACME `contact` field optional, and Let's Encrypt stopped sending expiry
314+ notification mail in 2025, so setting one buys little.
315315
316316It also does not stay private. The ACME account document is published as
317- attestation evidence at `/evidences/acme-account.json`, so an address set here
318- is readable by anyone who fetches the evidence endpoint. Leave it unset unless
319- you specifically want a contact on the account.
317+ attestation evidence at `/evidences/acme-account.json`, so an address set here is
318+ readable by anyone who fetches the evidence endpoint. Leave it unset unless you
319+ specifically want a contact on the account.
320+
321+ Under the hood the two clients differ : lego simply omits the flag, while certbot
322+ needs `--register-unsafely-without-email` — its "unsafely" naming predates Let's
323+ Encrypt dropping expiry mail, and the container passes it for you.
320324
321325# ## Limitations
322326
0 commit comments