# Red y exposición

> **TODO (fase 2+):** explicar cada dominio, por qué está proxied vs
> DNS-only en Cloudflare, y el manejo de TLS extremo a extremo. Tabla
> de dominios abajo es real, pendiente de expandir con capturas/ejemplos.

## Dominios activos

| Dominio | Servicio | Namespace | TLS |
|---|---|---|---|
| `shop.cruzcloud.net` | Frontend Next.js (storefront) | `ecommerce` | Cloudflare (edge) |
| `commerce.cruzcloud.net` | Medusa Store/Admin API | `ecommerce` | Cloudflare (edge) |
| `media.cruzcloud.net` | MinIO (imágenes de producto) | `ecommerce` | Cloudflare (edge) |
| `gitea.cruzcloud.net` | Gitea | — | Cloudflare (edge) |
| `docs.cruzcloud.net` | Este portal | `docs` | Cloudflare (edge) |

## TODO

- Diagrama de TLS termination (dónde termina TLS realmente: en
  Cloudflare, no en Traefik — el tráfico interno NPM→k3d es HTTP plano).
- Explicar por qué el transporte del túnel se fijó a HTTP/2 en vez de
  QUIC (ver [ADR 0003](../decisiones/0003-por-que-http2-sobre-quic-tunnel.md)
  y el [playbook del 504](../playbooks/incidente-504-gitea-tunnel.md)).
- Patrón de diagnóstico "interno sano, público roto" (ver
  [playbook de imágenes NPM](../playbooks/incidente-imagenes-npm.md)).
