Sous-domaines publics : checklist operateur
Le code est pret (src/config/domains.ts, src/lib/subdomain-routing.ts, src/proxy.ts). Rien ne change pour un utilisateur tant qu'un sous-domaine n'est pas liste dans NEXT_PUBLIC_LIVE_SUBDOMAINS. L'etat des lieux et le…
Le code est pret (
src/config/domains.ts,src/lib/subdomain-routing.ts,src/proxy.ts). Rien ne change pour un utilisateur tant qu'un sous-domaine n'est pas liste dansNEXT_PUBLIC_LIVE_SUBDOMAINS. L'etat des lieux et le pourquoi :public-domains-audit.md.
Les sept
| Sous-domaine | Sert | Reecrit vers | Ancienne forme, toujours servie |
|---|---|---|---|
mcp.boostecom.app/<storeId> | endpoint MCP que le client colle | /api/mcp/v1/<storeId> | www…/api/mcp/v1/<id> et www…/api/mcp/<id> |
api.boostecom.app/<chemin> | API Intelligence (bei_…) | /api/intelligence/<chemin> | www…/api/intelligence/* |
hooks.boostecom.app/<fournisseur> | webhooks entrants | /api/webhooks/<fournisseur> | www…/api/webhooks/* |
status.boostecom.app | page de statut | /status, /status/history, /status/incidents.rss | www…/status |
docs.boostecom.app/<slug> | 308 vers https://www.boostecom.app/docs/<slug> (growth-web/3018) : ne sert rien lui-meme | aucune reecriture | www…/docs/*, la seule adresse de la doc |
cdn.boostecom.app/<label>/<chemin> | assets Vercel Blob | https://<label>.public.blob.vercel-storage.com/<chemin> | l'URL Blob, toujours en base |
preview.boostecom.app | proxy de preview storefront | /api/preview/* uniquement | boostecom.vercel.app (accepte cote serveur) |
Chaque sous-domaine ne repond QUE pour sa surface : mcp.boostecom.app/admin
est un 404, pas le panel sur un autre hote.
docs. est l'exception inverse (decision D15 du nettoyage du 2026-09-25) :
une page de doc indexee veut UNE adresse, donc ce sous-domaine redirige en
308 vers la meme page sur www au lieu de la servir une seconde fois.
docsUrl() (src/config/domains.ts) n'emet donc jamais docs., meme
allume. Lister docs dans NEXT_PUBLIC_LIVE_SUBDOMAINS ne change plus
rien ; il faut seulement le CNAME et le domaine Vercel pour que la
redirection reponde.
boostecom.fr n'est pas un domaine de la plateforme : c'est l'agence
emailing du fondateur, et il ne redirige PAS vers .app (decision du
proprietaire du 2026-09-25, qui corrige la reco D15 de l'audit). Rien ici
ne doit le configurer.
Ce que tu fais (une fois, dans cet ordre)
-
DNS, chez le registrar de
boostecom.app: unCNAMEpar sous-domaine verscname.vercel-dns.com. -
Vercel, projet BoostEcom, Settings > Domains : ajouter les sept domaines au meme projet. Attendre le certificat (colonne Valid).
-
Verifier chaque hote avant de l'allumer :
curl -I https://status.boostecom.apprend 200 ;curl -I https://mcp.boostecom.app/<un storeId>rend 401 avec un en-teteWWW-Authenticatequi pointe surhttps://mcp.boostecom.app/.well-known/oauth-protected-resource/<id>;curl https://mcp.boostecom.app/.well-known/oauth-protected-resource/<id>rendresource: https://mcp.boostecom.app/<id>etauthorization_servers: ["https://www.boostecom.app"].
-
Allumer : dans Vercel, variable
NEXT_PUBLIC_LIVE_SUBDOMAINS=mcp,api,cdn,hooks,status,docs,preview(ou seulement ceux verifies), puis redeployer : la variable est inlinee au build. -
Webhooks (seulement pour
hooks) : ressaisir l'URL chez chaque fournisseur. Les anciennes continuent de marcher, donc sans urgence.Fournisseur Nouvelle URL Stripe https://hooks.boostecom.app/stripeResend https://hooks.boostecom.app/resendGitHub https://hooks.boostecom.app/githubMeta / WhatsApp https://hooks.boostecom.app/whatsappShopify rien a faire : l'adresse est enregistree par le code a la prochaine connexion de boutique Verifier le nom exact de chaque route dans
src/app/api/webhooks/avant de ressaisir.
Ce qui est volontairement fixe
- L'emetteur OAuth reste
www. Le consentement/oauth/authorizea besoin de la session NextAuth, un cookie host-only quemcp.ne recoit jamais. Le document de ressource surmcp.nomme doncwwwcomme serveur d'autorisation. preview.est « meme site » quewww. C'est sans risque ici pour trois raisons, a garder vraies : le cookie de session n'a pas d'attributDomain(src/modules/auth/server.ts), une ecriture venant depreview.porte une origine quecheckStateChangingOriginrefuse, et une lecture reste derriere CORS. Ajouter unDomain=.boostecom.appau cookie de session casserait les trois d'un coup.- Les URLs Blob en base ne sont pas migrees.
cdnUrl()traduit a l'affichage ; un rendu renvoye au serveur (Reuse, Variation) est ramene a son URL Blob parcanonicalReferenceUrl()avant le controle de propriete. - Les formes en chemin ne sont jamais retirees. Un jeton OAuth est lie a l'URL appelee, une URL de webhook est saisie dans une console.
Pas fait, et pourquoi
partner., affiliate., blog., community. : ce sont des pages
marketing. En sous-domaine, Google les traite comme un site a part et
l'autorite SEO se divise. Si une adresse courte est utile a imprimer, une
redirection (partners.boostecom.app → /network/partners) suffit, sans
y heberger la page. og. : lu par des crawlers seulement.