MOTIR-4208Done
Register the tenant base domain, point it at the motir-marketing Fly app, and issue its wildcard certificate (manual)
Buy the base domain the ADR chose, point it and its wildcard at the motir-marketing Fly app, and get both certificates ISSUED — read back from the platform. No pull request; done on your confirmation, with the readings pasted here. Every statement below about the registrar's or Fly's CURRENT state is a hypothesis until you read it — the exits are written in.
Steps
- Pick the name. Take the top candidate the ADR's Q1 shortlist reports as available (the decision); re-check it at the registrar before paying — RDAP said available at authoring time and availability is a moving fact.
- Register it at Spaceship, the registrar that already holds
motir.co(marketing-site-hosting.md§3 — no new vendor). Turn on auto-renew and registrar lock. - Point it at the marketing app. Read the app's addresses first —
fly ips list -a motir-marketing— then create, in the new zone: apexA→ the app's IPv4 andAAAA→ its IPv6;*(wildcard)A/AAAAto the same, so every tenant subdomain lands on the app. (The shapemotir.co's apex already uses — §3's table.) - Ask Fly for the two certificates and delegate the ACME challenge.
fly certs add <base> -a motir-marketingandfly certs add "*.<base>" -a motir-marketing; the wildcard needs DNS-01, so create the_acme-challenge.<base>CNAMEto the targetfly certs addprints (a*.flydns.netname). Thenfly certs check <base>andfly certs check "*.<base>"until both report the certificate issued — paste the outputs. - Mail hygiene for a domain that sends no mail: a
TXTv=spf1 -allat the apex and a_dmarcTXTv=DMARC1; p=reject;. (This is a NEW zone — the do not write a secondv=spf1warning inmarketing-site-hosting.md§3 is aboutmotir.co's apex, which this card does not touch.) - Read it all back and paste:
dig +short <base> A AAAA @1.1.1.1,dig +short random.<base> A @1.1.1.1,dig +short _acme-challenge.<base> CNAME @1.1.1.1,fly certs list -a motir-marketing.curl -sI https://anything.<base>/should answer with a valid certificate — a404body is fine at this point (the router is a later card); a TLS error is not.
If a step's premise is wrong — the name is gone, Fly refuses the wildcard, the registrar has no AAAA — stop, paste what you saw, and comment; do not improvise a different domain shape than the ADR decided.
Acceptance criteria
- The registered domain is the one the ADR's Q1 shortlist ranked first among available names (or a comment explains the substitution), registered at Spaceship with auto-renew on.
fly certs list -a motir-marketingshows BOTH<base>and*.<base>issued — the output is pasted on this card, dated.digreadings for the apex, a random subdomain and_acme-challengeare pasted, andcurl -sI https://<random>.<base>/completes a TLS handshake without a certificate error.- The apex carries
v=spf1 -alland_dmarcp=reject, read back withdig. - No record on the
motir.cozone was touched.
Context refs
- the decision — Q1 (the shortlist) and Q5 (why the wildcard on the marketing app)
motir-core/docs/decisions/marketing-site-hosting.md§3 — the Spaceship zone, FlyA/AAAA, themotir.coapex records this card must not touchmotir-marketing/fly.toml— the app name and org;motir-core/docs/decisions/application-hosting.mdAmendment 7 — this file configures; it does not provision- Fly —
https://fly.io/docs/networking/custom-domain/(wildcards need the_acme-challengeCNAME) ·https://fly.io/docs/flyctl/certs/ - MOTIR-1455 — the earlier provisioning card that did this for
motir.co, as the shape to copy