You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: custom-domain/dstack-ingress/README.md
+55-28Lines changed: 55 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,9 +191,8 @@ environment:
191
191
| `EVIDENCE_SERVER` | `true` | Serve evidence files at `/evidences/` on the TLS port |
192
192
| `EVIDENCE_PORT` | `80` | Internal port for evidence HTTP server |
193
193
| `ALPN` | | TLS ALPN protocols (e.g. `h2,http/1.1`). Only set if backends support h2c |
194
-
| `ACME_CHALLENGE_ALIAS` | | Delegate the ACME DNS-01 challenge to this zone (see below) so the DNS token needs no access to the served domain's own zone |
195
-
| `ACME_CHALLENGE_PROPAGATION_SECONDS` | `30` | Wait after writing the delegated challenge TXT before validation (only with `ACME_CHALLENGE_ALIAS`). Keep well under ~250s — certbot is killed after a 300s per-run timeout |
196
-
| `ALLOW_MISSING_CAA` | `false` | In delegation mode, treat an unconfirmed `accounturi` CAA as a warning instead of a blocker. Default fails closed (see below) |
194
+
| `DELEGATION_ZONE` | | Zone this container writes into, so the DNS token needs no access to the served domain's own zone (see below) |
195
+
| `DELEGATION_PROPAGATION_SECONDS` | `120` | Wait after writing the delegated challenge TXT before validation. Must outlast the record TTL (60s), or a resolver still serving the previous attempt's value fails validation. Keep well under ~250s — certbot is killed after a 300s per-run timeout |
197
196
198
197
For DNS provider credentials, see [DNS_PROVIDERS.md](DNS_PROVIDERS.md).
199
198
@@ -205,38 +204,66 @@ served name lives under a shared production zone (e.g. `svc.example.com` under
205
204
`example.com`), that token can edit every record in the zone, which may be more
206
205
privilege than you want.
207
206
208
-
Set `ACME_CHALLENGE_ALIAS=<delegation-zone>` to answer the DNS-01 challenge in a
209
-
separate zone that your token controls, so the token never touches the served
210
-
domain's zone. In this mode dstack-ingress **only** manages the challenge TXT in
211
-
the delegation zone; you set the following records **once, statically**, in the
212
-
served domain's production zone (the container prints the exact values on start):
207
+
> **Renamed.** This was `ACME_CHALLENGE_ALIAS`, from when the challenge was the
208
+
> only thing delegated. The old name is **not** accepted — a deployment still
209
+
> setting it silently leaves delegation mode and starts writing to the served
210
+
> domain's zone, which is what delegation exists to avoid. Rename it when
211
+
> upgrading.
212
+
213
+
Set `DELEGATION_ZONE=<delegation-zone>` to move every name this deployment
214
+
needs into a zone your token controls. You create three CNAMEs in the served
215
+
domain's zone **once, before deploying**, and then never touch DNS again — not
216
+
when the app id moves, not when the ACME account is recreated, not when the
Everything they point at is published by the container, so this is the whole of
224
+
the operator's job — the app id can change afterwards and no DNS edit follows.
225
+
223
226
Then start the container with a real provider token and `ACME_STAGING=true`, and
224
227
watch for: the three records verifying, `Executing (challenge-delegation):` with
225
228
`--manual`and both hooks, the certificate arriving, and the challenge TXT being
@@ -251,7 +254,9 @@ These fail fast and are cheap, so run them on every change:
251
254
| Scenario | Expected |
252
255
|---|---|
253
256
| tls-alpn-01 + a wildcard domain | Refused before any ACME call, citing RFC 8737 |
257
+
| Delegation, CAA in the delegated zone changed to forbid the CA | Blocked before any ACME attempt — proves the published CAA is reachable through the CNAME |
254
258
| Delegation with no CAA record at all | Blocked — unlike normal issuance, where "no CAA" means unrestricted and passes |
259
+
| Delegation, later pass, gateway CNAME broken | Renewal proceeds — that record is for serving, and dns-01 does not use it |
255
260
| A CAA record with `validationmethods=dns-01`, mode tls-alpn-01 | Blocked with the restriction quoted back |
256
261
| TXT holding the wrong value | Reported as `want <x>, saw <y>`, not "missing" |
257
262
| An instance ID the gateway does not know | The CA reports a connection error — the gateway will not route to it |
0 commit comments