# Dominios y DNS

Zonas DNS de la empresa en Cloudflare, registros con guardas para MX, NS y apex, y subdominios de la zona de ArduMaker.

Fuente: https://ardumaker.com/docs/dominios-y-dns/

- Categoría: Servidores e infraestructura
- Estado: Disponible
- Requisitos: Una empresa en ArduMaker; Para agregar o borrar un dominio y para editar registros: ser admin de la empresa; Para crear registros: ser miembro o admin de la empresa; Acceso al panel del registrador donde se compró el dominio, para cambiar sus nameservers
- Herramientas MCP (Solo leen): `listar_dominios_empresa`, `ver_dominio_empresa`, `ver_estado_ns_dominio`, `listar_registros_dns`, `verificar_dominio_vps`
- Herramientas MCP (Escriben o modifican): `crear_dominio_empresa`, `crear_registro_dns`, `crear_dominio_vps`
- Herramientas MCP (Destructivas): `eliminar_dominio_empresa`, `editar_registro_dns`

## ¿Qué permite hacer?

### Dominios propios de la empresa

- Agregar un dominio: ArduMaker crea su zona en Cloudflare y devuelve los nameservers a los que hay que apuntarlo.
- Consultar si los nameservers ya apuntan (`is_connected`) y el estado de la zona.
- Listar, crear y editar registros A, AAAA, CNAME, MX, TXT, NS, SRV y CAA.
- Quitar un dominio de la empresa (borrado lógico: la zona y sus registros no se tocan, y se puede reactivar).

### Subdominios de la zona de ArduMaker

- Crear un subdominio de la zona de la plataforma que apunte a un VPS, sin tener dominio propio.
- Verificar a dónde resuelve cualquier dominio antes de publicarlo en un VPS.

## ¿Cuándo conviene usarlo?

- Mover la gestión DNS de un dominio propio a ArduMaker para usarlo con VPS, correo y apps.
- Agregar los registros que pide un servicio externo (verificación TXT, MX de correo, CAA).
- Probar una app rápido con un subdominio de la zona de ArduMaker.

## ¿Cómo funciona en ArduMaker?

### Conectar un dominio propio

1. Un admin agrega el dominio (`crear_dominio_empresa`). Se crea la zona en Cloudflare y se devuelven `name_servers`. Si el dominio estaba borrado en la misma empresa, se reactiva en vez de duplicarse. Si es de otra empresa, se rechaza.
2. En el registrador se reemplazan los nameservers por los que devolvió ArduMaker.
3. `ver_estado_ns_dominio` consulta Cloudflare en vivo y guarda el estado; `is_connected: true` indica que la delegación ya está activa.
4. Desde ahí los registros se gestionan en ArduMaker.

### Registros y sus guardas

- **Registros críticos**: cualquier `MX` o `NS`, y un `A` o `AAAA` en el apex (nombre vacío, `@` o el dominio mismo). Crearlos o editarlos sin `confirmado=true` responde 409 con `requiere_confirmacion` y el motivo.
- **Contenido**: un `A` tiene que ser una IPv4 y un `AAAA` una IPv6 (`dns_contenido_invalido`). El resto lo valida Cloudflare, y su rechazo llega como `dns_rechazado`.
- **Límite**: 10 altas o cambios por empresa por minuto. El presupuesto de la API de Cloudflare se comparte entre todos los clientes; pasado el tope la respuesta es 429.
- **Editar reemplaza** el registro entero (no es una mezcla de campos).
- `ttl: 1` significa automático. `proxied` solo aplica a A, AAAA y CNAME; `priority` a MX y SRV.

### Subdominios de la zona de ArduMaker

`crear_dominio_vps` crea siempre un **CNAME** hacia el `dnsip` del VPS (`<slug>.<zona>`), con el proxy de Cloudflare activado. Reglas del nombre: uno o dos niveles antes de la zona, cada uno de al menos 3 caracteres, con letras, números y guiones en el medio. Si el registro ya existe y apunta a otro destino, se rechaza; si ya apunta a este VPS, se devuelve como `exists`.

Cada VPS tiene su `dnsip`, un nombre en la zona de ArduMaker que reemplaza a la IP real del host en toda la API. Para un dominio propio, alcanza con un CNAME a ese `dnsip` o un registro A a la IP que resuelve.

## ¿Qué cambia realmente?

- En Cloudflare: la zona del dominio y los registros creados o editados. Los cambios DNS tardan en propagarse aunque se corrijan enseguida.
- En ArduMaker: la fila del dominio (estado `active` o `deleted`) y una entrada de auditoría por cada alta, edición o baja de registro, con quién la hizo, el dominio y el registro.
- Si la empresa queda pendiente de verificación de identidad, sus zonas pueden quedar pausadas hasta que se verifique.

## Esquema

**Cadena DNS de un dominio hacia un VPS**

```text
Registrador (nameservers de Cloudflare)
  ↓
Zona en Cloudflare (registros de la empresa)
  ↓
CNAME / A (hacia el dnsip del VPS o la IP que resuelve)
  ↓
Host del VPS (nginx publica el dominio (ver Nginx))
```

## Resultado esperado

- `crear_dominio_empresa` devuelve `name_servers`, `cloudflare_status` y `already_existed`.
- `ver_estado_ns_dominio` y `ver_dominio_empresa` muestran `is_connected` y `name_servers`; si Cloudflare no contesta, el dominio sale igual con `cloudflare_error`.
- Los registros creados o editados vuelven con el objeto completo de Cloudflare (`id`, `type`, `name`, `content`, `proxied`, `ttl`).
- Para publicar el dominio en un VPS, seguir con [Nginx](https://ardumaker.com/docs/nginx) y [Certificados SSL](https://ardumaker.com/docs/ssl).

## Errores y resolución

| Respuesta | Causa | Qué hacer |
| --- | --- | --- |
| 409 `requiere_confirmacion` | Registro crítico (MX, NS, A/AAAA en el apex) | Revisar y reenviar la misma llamada con `confirmado=true` |
| 429 | Más de 10 cambios DNS por minuto en la empresa | Esperar un minuto |
| 400 `dns_contenido_invalido` | IP mal escrita para A o AAAA | Corregir el contenido |
| 400 `dns_rechazado` | Cloudflare rechazó el registro (duplicado, formato) | Leer el mensaje y corregir |
| 424 `dependencia_externa` | Cloudflare no contestó; no se cambió nada | Reintentar en un momento |
| 403 `unauthorized_admin_access_required` | La operación es solo para admins de la empresa | Pedirla a un admin |
| `is_connected: false` | Los nameservers del registrador aún no apuntan a Cloudflare | Cambiarlos en el registrador y esperar la propagación |

> **PRECAUCION:** `crear_registro_dns` y `crear_dominio_empresa` no son idempotentes por sí solos: para reintentar tras un corte, usar la misma `idempotency_key` y los mismos argumentos, o se duplica el registro.

## Relación con MCP

Sí. Las herramientas de dominios de empresa están en los perfiles `/mcp` e `/mcp/infra`; las de subdominios de un VPS, en `/mcp` y `/mcp/vps`.

| Herramienta | Tipo | Notas |
| --- | --- | --- |
| `listar_dominios_empresa`, `ver_dominio_empresa`, `ver_estado_ns_dominio`, `listar_registros_dns` | Lectura | Estado de zonas y registros |
| `crear_dominio_empresa` | Escritura | Solo admin; acepta `idempotency_key` |
| `crear_registro_dns` | Escritura | Miembro o admin; `confirmado` para registros críticos |
| `editar_registro_dns` | Destructiva | Solo admin; reemplaza el registro entero |
| `eliminar_dominio_empresa` | Destructiva | Solo admin; borrado lógico, reversible con `crear_dominio_empresa` |
| `verificar_dominio_vps`, `crear_dominio_vps` | Lectura / Escritura | Subdominios de la zona hacia un VPS |

**Borrar un registro DNS no tiene herramienta MCP**, a propósito: es irreversible en el momento y su efecto se propaga hacia afuera. Se hace desde el panel. Referencia en [/mcp/docs](https://ardumaker.com/mcp/docs) y ejemplos en [/mcp/dominios](https://ardumaker.com/mcp/dominios).

## Funciones relacionadas

- [Nginx](https://ardumaker.com/docs/nginx/)
- [Certificados SSL](https://ardumaker.com/docs/ssl/)
- [Correo profesional](https://ardumaker.com/docs/correo-profesional/)
- [Servidores VPS](https://ardumaker.com/docs/vps/)
