---
url: 'https://dxpr.com/es/hc/documentacion/aprender-dxpr-builder/primeros-pasos/tras-cortafuegos'
title: 'Cortafuegos y residencia de datos | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T00:12:21+00:00'
updated: '2026-10-24T20:03:43+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builder guarda tus páginas en tu propia base de datos Drupal. Contacta servicios de DXPR para controles de licencia, recursos del editor y peticiones de IA. Esta página lista cada conexión, qué lleva cada una, dónde se ejecutan los modelos DXAI Kavya, cómo se guarda la clave de producto, y qué funciona cuando el acceso saliente está restringido.'
tags:
  - 'Meet compliance requirements'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T20:03:43+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Cortafuegos y residencia de datos'
      description: 'DXPR Builder guarda tus páginas en tu propia base de datos Drupal. Contacta servicios de DXPR para controles de licencia, recursos del editor y peticiones de IA. Esta página lista cada conexión, qué lleva cada una, dónde se ejecutan los modelos DXAI Kavya, cómo se guarda la clave de producto, y qué funciona cuando el acceso saliente está restringido.'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T00:12:21+0000'
      dateModified: '2026-10-24T20:03:43+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/es/hc/documentacion/aprender-dxpr-builder/primeros-pasos/tras-cortafuegos'
      articleSection: 'Cumplimiento normativo'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/es/hc/documentacion/aprender-dxpr-builder/primeros-pasos/tras-cortafuegos'
      description: 'DXPR Builder guarda tus páginas en tu propia base de datos Drupal. Contacta servicios de DXPR para controles de licencia, recursos del editor y peticiones de IA. Esta página lista cada conexión, qué lleva cada una, dónde se ejecutan los modelos DXAI Kavya, cómo se guarda la clave de producto, y qué funciona cuando el acceso saliente está restringido.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Inicio
            item: 'https://dxpr.com/es'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: es
---
[Centro de ayuda](/es/hc)/[Documentación](/es/hc/documentacion) /[Aprende DXPR Builder](/es/hc/documentation/learn-dxpr-builder) /[Gestionar el sitio](/es/hc/documentation/learn-dxpr-builder/manage) /[Cumplimiento normativo](/es/hc/documentation/learn-dxpr-builder/manage/compliance) # Cortafuegos y residencia de datos.

 Aprende DXPR BuilderGestionar el sitioCumplimiento normativo

   ## En esta guía

 Guías relacionadas

- [Instala DXPR Builder en tu sitio Drupal](/es/hc/documentacion/aprender-dxpr-builder/primeros-pasos/instalacion)
- [Seguridad](/es/hc/documentacion/aprender-dxpr-builder/avanzado/seguridad)
- [Errores de licencia y clave de producto](/es/hc/documentacion/aprender-dxpr-builder/solucion-problemas/licencia-clave-producto)

DXPR Builder guarda tus páginas en tu propia base de datos Drupal. Contacta servicios de DXPR para controles de licencia, recursos del editor y peticiones de IA. Esta página lista cada conexión, qué lleva cada una, dónde se ejecutan los modelos DXAI Kavya, cómo se guarda la clave de producto, y qué funciona cuando el acceso saliente está restringido.

## Conexiones de un vistazo

| Anfitrión | Hecho por | Propósito | Necesario para |
|---|---|---|---|
| `dxpr.com` | Servidor Drupal | Estado de licencia, control de dominio, sincronización de usuarios con licencia | Edición |
| `cdn2.dxpr.com` | Navegador de la persona que edita | JavaScript y CSS del editor (primario) | Edición |
| `cdn.dxpr.com` | Navegador de la persona que edita | JavaScript y CSS del editor (reserva) | Edición |
| `kavya.dxpr.com` | Servidor Drupal | Peticiones de IA y saldo de créditos de IA | Funciones de IA |
| `html-extract.dxpr.com` | Navegador de la persona que edita | "clone from URL" de IA | Funciones de IA |
| `r.jina.ai` (tercero) | Navegador de la persona que edita | Lee páginas web cuyas URLs aparecen en un prompt | Funciones de IA |
| `tuur.dxpr.com` | Navegador de la persona que edita | Analíticas de uso del editor | Opcional |

Todas las conexiones usan HTTPS en el puerto 443. Las visitas del sitio nunca cargan nada de servidores DXPR: las páginas publicadas se generan desde HTML guardado en la base de datos, y el script de la parte pública (`dxpr_builder/dxpr_frontend.min.js`) viene dentro del módulo. `app.dxpr.com` solo aparece en enlaces mostrados a cuentas administradoras.

## Controles de licencia (`dxpr.com`)

El servidor Drupal llama cuatro endpoints definidos en `src/Service/DxprBuilderLicenseServiceInterface.php`, cada uno con la clave de producto como cabecera `Authorization: Bearer`.

| Endpoint | Cuándo | Datos enviados |
|---|---|---|
| `GET /api/user-license` | Cada 24 horas con autorización, cada 30 minutos sin ella | `gba` y `users_tier` (número de cuentas con el permiso `edit with dxpr builder` y el nivel en que cae), `values_count` (contenidos que usan un campo del constructor), `site_base_url`, `site` (un HMAC del hash salt del sitio; el salt mismo no se envía), `site_mail` (de `system.site`), `project`, `version` |
| `GET /api/domain-blacklist/{hostname}` | Cada hora | Solo el hostname; sin cabecera de autorización |
| `POST /api/central-user-storage/{add,remove,sync}` | Cuando cambian cuentas, permisos o la clave de producto; los seguimientos se ponen en cola y se ejecutan en cron | Hostname más, por cada cuenta con el permiso de edición, su dirección de correo y nombres de rol. Las cuentas sin una dirección de correo válida se omiten |
| `GET /api/user-license/users` | Cuando se abre la página User Licenses | Nada más que la clave |

El contenido de la página nunca forma parte de una petición de licencia. El módulo también imprime un `<div>` oculto en la portada con una cadena marcadora fija, el nivel de licencia, el conteo de personas que editan y el conteo de guardados (`dxpr_builder_page_bottom()` en `dxpr_builder.module`). Se puede leer en el código de la página.

## Recursos del editor (`cdn2.dxpr.com`, `cdn.dxpr.com`)

Cuando **Editor Assets** está en **Cloud** (el valor predeterminado), el navegador de la persona que edita carga el JavaScript y CSS del constructor desde `https://cdn2.dxpr.com/<version>/`, con reserva a `https://cdn.dxpr.com/<version>/` tras una sonda `/health` fallida. La clave de producto se añade a cada URL de recurso como parámetro de consulta `jwt` (`dxpr_builder_library_info_build()`). El CDN comprueba esa clave: una respuesta 401 hace que `js/editor_validation.js` muestre "Your product key is not valid".

Las opciones **Local (minified)** y **Local (unminified)** solo aparecen en el formulario de ajustes cuando existe una compilación del editor en el directorio `dxpr_builder/` del módulo, y tal copia se usa automáticamente incluso cuando se elige Cloud. El repositorio git no rastrea estos archivos compilados, así que una versión descargada de drupal.org carga el editor desde el CDN.

## Peticiones de IA (`kavya.dxpr.com`)

El navegador nunca contacta `kavya.dxpr.com`. El editor envía a rutas de tu propio sitio (`/dxpr_builder/ajax/ai/chat`, `/dxpr_builder/ajax/ai/image`, `/dxpr_builder/ajax/ai/image/edit`; todas requieren el permiso `edit with dxpr builder`, un token CSRF y una cuenta con licencia). El sitio retransmite cada petición con el proveedor DXPR del módulo AI de Drupal (`ai_provider_dxpr`) a `https://kavya.dxpr.com/v1/chat/completions`, `/v1/images/generations` o `/v1/images/edits`, autenticado con la clave de API de DXPR guardada en el módulo Key. El ajuste `host` del proveedor (`ai_provider_dxpr.settings`) puede dirigir las peticiones a otro anfitrión. Aparte, la página de ajustes de IA llama `GET https://kavya.dxpr.com/v1/account/balance` con la clave de producto para mostrar tu saldo de créditos.

### Qué contiene una petición de IA

Solo las funciones de IA envían contenido de página fuera del sitio, y solo cuando una persona que edita las activa (`dxpr_builder/build/dxpr-global/ai-service.js`).

| Petición | Contenido enviado |
|---|---|
| Generación de texto y páginas | Prompt del sistema, el prompt de la persona que edita, historial de chat |
| Con un elemento seleccionado | El HTML exterior del elemento: entero si tiene 500 caracteres o menos, si no sus primeros y últimos 200 caracteres |
| Operaciones a nivel de página | El HTML existente de la página, hasta 50.000 caracteres; la página completa cuando se reemplaza toda la página |
| Campos opcionales | Nombre del modelo, orden de proveedores activados, un resultado HTML predicho, etiquetas y clases permitidas, un marcador `web_search`, un formato de respuesta |
| Generación de imágenes | Prompt, tamaño, calidad, fondo |
| Edición de imágenes | Lo mismo más la imagen de origen, codificada en base64 |

Dos utilidades traen páginas web desde el navegador de la persona que edita (`ai-service-url-fetch.js`): una URL en un prompt se pide con `.md` añadido y, si eso falla, con `https://r.jina.ai/<url>`, un servicio lector de terceros no operado por DXPR; un prompt que pide clonar una página envía la URL a `https://html-extract.dxpr.com/?url=...`. En ambos casos solo se envía la URL.

La salida de IA se filtra al volver. Dominios permitidos, etiquetas bloqueadas y etiquetas permitidas se definen en `/admin/dxpr_studio/dxpr_builder/ai_settings` bajo **AI Output Filtering**.

## Dónde se ejecutan los modelos DXAI Kavya

DXPR Builder ofrece tres modelos (`src/Constants/AiModelConstants.php`):

| Modelo | Nombre de API | Descripción en el formulario de ajustes |
|---|---|---|
| DXAI Kavya M1 | `kavya-m1` | Best performance (OpenAI, Google Gemini, Anthropic) |
| DXAI Kavya M1 EU | `kavya-m1-eu` | Privacy-focused (MistralAI) |
| DXAI Kavya M1 Fast | `kavya-m1-fast` | Fastest responses, lower quality |

No hay ajuste de región en ningún módulo. La residencia de datos se elige por modelo y por qué proveedores ascendentes activas:

- `kavya-m1` alterna entre cinco proveedores, listados con su país en el formulario de ajustes del proveedor DXPR AI: Anthropic (Estados Unidos), Google Gemini (Estados Unidos), MistralAI (Francia), OpenAI (Estados Unidos), XAI (Estados Unidos). En modo **Manual priority** arrastras proveedores entre **Enabled** y **Disabled** y defines su orden.
- `kavya-m1-eu` usa solo MistralAI. El README del proveedor DXPR AI afirma que "keeps data within European boundaries (servers in Netherlands)"; su documentación afirma que el servidor Kavya funciona en los Países Bajos con respaldo en Alemania, que las peticiones pasan por servidores MistralAI en Francia, y que nunca recurre a un proveedor fuera de la UE. Estas ubicaciones las documenta DXPR, no las impone nada en el código Drupal.

Con `ai_provider_dxpr` instalado, el modelo se elige en `/admin/config/ai/providers/dxpr`, y su ajuste `allowed_models` controla qué modelos pueden elegir las personas que editan. Sin él, el modelo y el orden de proveedores se definen en `/admin/dxpr_studio/dxpr_builder/ai_settings`.

## Cómo se guarda la clave de producto

La sección **License** de `/admin/dxpr_studio/dxpr_builder/settings` ofrece dos opciones de **Storage method** (`src/Form/DxprBuilderSettingsForm.php`, `src/Service/DxprBuilderKeyService.php`):

- **Key module**: la clave se lee de la entidad Key elegida en **Key**. `dxpr_builder_update_9020()` mueve una clave hallada en `dxpr_builder.settings` a la entidad Key `dxpr_builder_jwt`, cuyo proveedor **Configuration** aún la exporta. Solo el proveedor **File** o **Environment** mantiene la clave fuera de las exportaciones de configuración.
- **Configuration storage**: la clave se guarda en texto claro como `dxpr_builder.settings.json_web_token` y se incluye en las exportaciones de configuración.

La clave de producto es un JSON Web Token que autentica llamadas de licencia, la llamada de saldo de créditos y las URLs de recursos del CDN; trátala como una credencial.

## Configuración del cortafuegos

| Desde | Permite HTTPS saliente a | Notas |
|---|---|---|
| Servidor Drupal | `dxpr.com` | Licencia |
| Servidor Drupal | `kavya.dxpr.com` | Solo IA |
| Estaciones de trabajo de edición | `cdn2.dxpr.com`, `cdn.dxpr.com` | Recursos del editor |
| Estaciones de trabajo de edición | `html-extract.dxpr.com`, `r.jina.ai` | Solo IA; bloquearlos solo desactiva investigación de URLs y clonación |
| Estaciones de trabajo de edición | `tuur.dxpr.com` | Analíticas; bloquear no afecta la edición |

Analíticas (`dxpr_builder/build/dxpr-analytics/`, PostHog) identifican eventos por la dirección de correo de la persona que edita y el hostname del sitio. Desactívalas con `drush config:set dxpr_builder.settings record_analytics 0`; la clave no tiene campo de formulario. Otras dos claves sin campo de formulario se leen de `dxpr_builder.settings`: `cloud_url` reemplaza la URL base del CDN (`VERSION` se sustituye con la versión del módulo) y `license_endpoint` reemplaza el endpoint central de almacenamiento de usuarios. Defínelas con una sobreescritura de configuración en `settings.php`.

## Configuración del proxy

Las llamadas de licencia e IA usan el cliente HTTP de Drupal, así que un proxy se configura en `settings.php`:

```php
$settings['http_client_config']['proxy'] = [
  'http' => 'http://proxy.example.com:8080',
  'https' => 'http://proxy.example.com:8080',
  'no' => ['localhost', '127.0.0.1'],
];

```

Los navegadores de las personas que editan cargan los recursos del CDN y llaman los servicios de analíticas y lectura directamente, así que esas peticiones siguen los ajustes de proxy de la estación de trabajo.

## Despliegues aislados y en local

DXPR Builder funciona en tu propio servidor; ningún contenido pasa por un componente alojado. Cuando ni el servidor ni las personas que editan pueden llegar a DXPR:

| Capacidad | Sin ningún acceso a DXPR |
|---|---|
| Servir páginas publicadas | Funciona; nada se carga desde DXPR |
| Almacenamiento de contenido | Funciona; las páginas son valores de campo en tu base de datos |
| Cargar el editor | Falla salvo que haya una compilación local del editor en `dxpr_builder/` |
| Validación de licencia | Falla. El módulo registra el error, muestra "We are having trouble connecting to the DXPR servers" a cuentas administradoras y reintenta cada 30 minutos. La edición no se bloquea mientras hay una clave de producto configurada |
| Página User Licenses | Vacía; necesita `dxpr.com` |
| Funciones de IA | No disponibles; cada petición pasa por `kavya.dxpr.com` |
| Analíticas, investigación de URLs, clonación desde URL | Se omiten en silencio |

Sin clave de producto, el módulo aplica los límites del nivel gratuito en código: una persona que edita y 100 contenidos.

Un despliegue totalmente en local sirve para mostrar y guardar contenido; editar necesita acceso al CDN o una compilación local del editor, y la validación de licencia necesita `dxpr.com`. Contacta DXPR si necesitas una compilación del editor para alojar internamente.

## ¿Qué sigue?

- [Instala DXPR Builder en tu sitio Drupal](/es/hc/documentacion/aprender-dxpr-builder/primeros-pasos/instalacion): configura la clave de producto y el método de guardado
- [Funciones de IA](/hc/documentation/learn-dxpr-builder/ai): activa la IA y elige un modelo
- [Seguridad](/es/hc/documentacion/aprender-dxpr-builder/avanzado/seguridad): permisos y filtrado de salida
- [Licencia y clave de producto](/es/hc/documentacion/aprender-dxpr-builder/solucion-problemas/licencia-clave-producto): solución de errores de licencia