# Dominio propio de un proveedor

> Cómo se sirve el portal de un proveedor Pro en portal.theircompany.com. La ruta de origen de respaldo y la ruta de captura de producción están activas.

En Pro, un proveedor puede configurar su propia dirección de portal en **Configuración → Branding**, como `portal.theircompany.com` o `order.theircompany.com`. El proveedor se lee desde ese host. Una persona solo ve un portal al que pertenece. El personal inicia sesión en esa misma dirección y abre el espacio de trabajo allí. Al cerrar sesión, se devuelve a la página de inicio de sesión de esa dirección. Los compradores siguen abriendo el portal comercial.

Use `portal.` o `order.` en lugar del dominio sin formato. El dominio sin formato es donde se establece el correo electrónico del proveedor, y un CNAME allí lucha contra esos registros de correo. La aplicación rechaza un nombre sin formato como `theircompany.com`.

`theirname.tradecatalog.app` y `tradecatalog.app/p/theirname` siguen funcionando. El correo sigue enviándose desde `orders@tradecatalog.app`. Las páginas en la dirección del proveedor envían `X-Robots-Tag: noindex`. `/mcp`, `/oauth` y `/api/v1` permanecen en `tradecatalog.app`.

## Conecte su dirección

Abra **Configuración → Branding → Su dirección de portal** en Pro.

1. Elija **Usar su marca** para colocar su nombre, logo y colores en la pantalla de inicio de sesión, el portal, correos electrónicos y documentos de pedido. La información del servicio permanece en la página de inicio de sesión.
2. Ingrese una dirección como `portal.theircompany.com` y elija **Guardar dirección y marca**. Esto guarda la dirección y la marca juntas y comienza la verificación.
3. Agregue el CNAME mostrado en su proveedor de DNS. Los botones de copia copian el nombre y el destino exactos. Si su proveedor agrega automáticamente su dominio, ingrese solo la parte antes de su dominio en **Nombre**.
4. Siga **Dirección guardada**, **Dominio verificado** y **Conexión segura**. La activación del nombre de host y la emisión del certificado son verificaciones separadas. Un dominio verificado no significa que HTTPS esté listo.
5. Las verificaciones se refrescan cada 30 segundos durante hasta diez minutos mientras esta página está visible. Elija **Verificar conexión nuevamente** para intentar de nuevo después de cambiar DNS o si las verificaciones automáticas se han detenido.
6. Una vez que aparezca **Su certificado está listo**, verifique que su CNAME apunte al destino mostrado y use **Abrir su página de inicio de sesión** para verificar que su portal propio se abra de forma segura antes de compartirla. La preparación del proveedor no verifica independientemente a dónde envía su registrador el tráfico. Su enlace al portal existente permanece disponible durante toda la configuración.

Las nuevas direcciones usan validación de certificado HTTP automática. Una verificación de conexión puede reintentar con seguridad un certificado pendiente en el mismo nombre de host, sin eliminarlo. Las configuraciones antiguas de TXT pueden pasar a la validación HTTP cuando sean elegibles. La validación de DNS delegado y comodín retienen su método existente.

Cuando se necesita validación de DNS, se muestran todos los valores TXT requeridos, incluidos ambos valores cuando dos registros comparten un nombre. Los registros CNAME de delegación son una alternativa cuando se ofrece. Mantenga los registros de delegación para renovaciones; un registro CNAME y un registro TXT no pueden compartir el mismo nombre. Para la validación HTTP automática, se encuentran disponibles otros registros de verificación de certificado bajo **Registros adicionales de verificación de certificado** en lugar de presentarse como un paso adicional requerido.

La página muestra la hora de la última verificación y cualquier problema informado por el servicio de certificados. Un intento fallido mantiene su dirección actual y los registros de verificación. Si necesita ayuda, utilice **Obtener ayuda para conectar su dirección**. No necesita administrar las credenciales de la API de TradeCatalog ni buscar un botón de plataforma oculto.

Dejar en blanco la dirección guardada y elegir **Eliminar dirección y guardar la marca** la eliminará. Cuando la plataforma esté conectada a Cloudflare, el antiguo nombre de host personalizado también se eliminará allí. No cambia los registros DNS de su registrador.

## Para operadores de plataforma

Las secciones siguientes describen la infraestructura de TradeCatalog, no los pasos que deben completar los proveedores. El origen de respaldo y la ruta de captura de producción se configuran por separado. No cambie las credenciales del proveedor o las rutas de zona al seguir la configuración del proveedor anterior.

## Cloudflare para SaaS

Hágalo en la zona `tradecatalog.app`, manualmente, cuando esté listo para activar los dominios personalizados. [Habilite Cloudflare para SaaS](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/enable/) para esa zona primero.

### 1. Origen de respaldo

El tráfico con nombre de host personalizado se envía a un origen de respaldo en su zona. Para un Worker, ese registro es sin origen:

| Tipo | Nombre     | Contenido | Proxy   |
| ---- | ---------- | --------- | ------- |
| AAAA | `fallback` | `100::`   | Proxied |

Luego establezca el origen de respaldo en `fallback.tradecatalog.app`. En el panel de control, es **SSL/TLS → Nombres de host personalizados → Origen de respaldo**. Con la API:

```
PUT /zones/{zone_id}/custom_hostnames/fallback_origin
{ "origin": "fallback.tradecatalog.app" }
```

Espere a que ese origen de respaldo esté **Activo**. Vea [Workers como origen de respaldo](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/worker-as-origin/).

### 2. Ruta de Worker

Esa ruta ya está en las rutas **de producción** en `wrangler.jsonc`. Wrangler reemplaza las rutas al desplegar, por lo que eliminarla allí detendría que el dominio propio de un proveedor llegue a este Worker. No la agregue a la fase de prueba.

```json
{ "pattern": "*/*", "zone_name": "tradecatalog.app" }
```

Esa ruta envía a este Worker todo host que ingrese a la zona, incluido el dominio propio de un cliente. Las rutas más específicas ganan, así que deje las rutas que ya están allí:

```json
{ "pattern": "tradecatalog.app", "custom_domain": true }
```

```json
{ "pattern": "*.tradecatalog.app/*", "zone_name": "tradecatalog.app" }
```

Y deje la ruta del Worker de prueba como está:

```json
{ "pattern": "staging.tradecatalog.app", "custom_domain": true }
```

No coloque `*/*` en la fase de prueba. No cree un nombre de host personalizado igual a `tradecatalog.app`, `www.tradecatalog.app` o `fallback.tradecatalog.app`.

### 3. API de nombres de host personalizados

La aplicación llama a la [API de nombres de host personalizados](https://developers.cloudflare.com/api/resources/custom_hostnames/methods/create/) cuando un proveedor verifica una dirección, y solo después de que estos estén configurados en el Worker de producción:

- `CLOUDFLARE_API_TOKEN` como secreto, con permiso para editar nombres de host personalizados y sus certificados
- `CLOUDFLARE_ZONE_ID` como el id de zona `tradecatalog.app`

```
POST /zones/{zone_id}/custom_hostnames
{
  "hostname": "portal.theircompany.com",
  "ssl": { "method": "http", "type": "dv", "settings": { "min_tls_version": "1.2" } }
}
```

La encuesta de estado usa `GET /zones/{zone_id}/custom_hostnames/{id}`. Una verificación de conexión iniciada por el proveedor puede `PATCH` un certificado DV gestionado por el proveedor pendiente y luego leer su estado nuevamente, preservando sus configuraciones SSL. Nunca elimina o vuelve a crear un nombre de host. Los certificados personalizados activos y cargados no se reinician, y la validación delegada o de comodín permanece en TXT. Al borrar o reemplazar una dirección, se envía `DELETE` para el id anterior.

Las nuevas direcciones usan validación de certificado HTTP: una vez que el CNAME apunte al origen de respaldo, Cloudflare puede validar automáticamente. Las direcciones existentes mantienen su método de validación original hasta que se cambie.

El personal de la plataforma puede ejecutar **Verificar dirección** para cualquier empresa desde la cuenta de cliente de esa empresa, y al abrir el espacio de trabajo y usar Configuración → Marca. **Restablecer validación de certificado** solo es para el personal de la plataforma. Pide a Cloudflare que establezca el método de certificado en HTTP. Si Cloudflare no cambia el método en el nombre de host existente, el nombre de host se elimina y se vuelve a crear con la misma dirección y configuración de certificado, y se guarda el nuevo id. La confirmación indica que esto cambia el nombre de host personalizado en vivo de Cloudflare. Mientras se ejecuta el restablecimiento, el botón de confirmación muestra "Restableciendo...", muestra una animación y no se puede presionar nuevamente. Después, la página muestra el estado y cualquier registro DNS que enviar a los proveedores. Verificar dirección en la cuenta del cliente hace lo mismo mientras se ejecuta la verificación. Un propietario de proveedor no puede ejecutar el restablecimiento.

Para una dirección que aún usa TXT o delegación después de un reintento seguro, el proveedor elige **Verificar conexión nuevamente**, agrega cada registro de certificado mostrado bajo **Agregue estos registros** en el proveedor de DNS, y vuelve a verificar. El DNS puede conectarse mientras el certificado aún necesita estos registros. No reemplace un token TXT con otro cuando se muestren dos. Si se ofrece delegación, use sus registros CNAME en lugar de los registros TXT conflictivos. La aplicación no redirige `/.well-known/acme-challenge/` ni `/.well-known/pki-validation/` en ese host. Deje esos caminos intactos en cualquier regla de redirección, para que una verificación de certificado no se reescriba.

### Lo que el cliente agrega

Un CNAME para `portal.theircompany.com` (o `order.`) que apunte a `fallback.tradecatalog.app`.

Recomienda este nombre. Un dominio básico como `theircompany.com` no puede ser un CNAME normal sin mover el correo electrónico, y la proxying de nivel raíz de Cloudflare es una configuración separada. No lo uses.
