Cuentas DNS: un solo sitio para las claves de Cloudflare y otros proveedores

Las Cuentas DNS son el sitio único del CMS donde se guardan las claves de Cloudflare y de otros proveedores de DNS. Lo que pongas ahí lo usan todos los plugins y módulos (Domain Manager, Cloud, Search Console…): si cambias o añades una clave, funciona en todos a la vez, sin copiarla en cada sitio.

Por qué existe

Antes cada plugin guardaba su propia copia del token de Cloudflare (en su configuración, en el .env, en su propia tabla…). Eso significaba cambiar la clave en varios sitios cada vez que Cloudflare la caducaba o la revocabas, y que un módulo gratuito dependiera de un plugin de pago solo para leer una clave. Ahora hay un registro único en el núcleo del CMS, gratuito, y los demás lo consultan.

Dónde está

En el panel de superadministración: Ajustes → Cuentas DNS (/musedock/settings/dns-accounts). Cada cuenta muestra su proveedor, su nombre, su referencia (el Account ID en Cloudflare), la credencial enmascarada, el resultado de la última prueba y su estado.

Añadir una cuenta

  1. Pulsa «Añadir cuenta» y elige el proveedor.
  2. Escribe un nombre que reconozcas (por ejemplo, el de la empresa titular de la cuenta de Cloudflare).
  3. Pega el token o las claves que pide ese proveedor.
  4. En Cloudflare, indica además el rol (Primary: tus zonas; Domains: dominios de clientes; Read-only: solo consultar) y el modo SSL de los dominios nuevos.
  5. Pulsa «Guardar y probar». El CMS guarda la cuenta cifrada y la prueba al momento con el proveedor; verás un aviso de progreso mientras tarda.

Para Cloudflare, crea el token con permisos de leer zonas (Zone → Zone → Read) y editar DNS (Zone → DNS → Edit) sobre las zonas que quieras gestionar. Si usas Email Routing desde el CMS, añade también su permiso.

Proveedores

ProveedorQué se guardaPrueba automática
CloudflareToken de API (+ Account ID)Sí: comprueba el token y cuenta las zonas que ve
DigitalOcean, Hetzner, Vultr, Linode, GandiToken de APITodavía no
PorkbunAPI key y Secret API keyTodavía no
PowerDNSURL de la API, API key e ID del servidorTodavía no
Amazon Route53Access key ID, Secret access key y regiónTodavía no
OVHEndpoint, Application key/secret y Consumer keyTodavía no
NamecheapUsuario de API, API key, usuario e IP autorizadaTodavía no
RFC2136 (BIND)Servidor, nombre y secreto de la clave, algoritmoTodavía no

Puedes tener varias cuentas del mismo proveedor (por ejemplo, dos cuentas de Cloudflare de dos empresas distintas) y de proveedores distintos. Cada plugin decide qué proveedores sabe usar; hoy el alta de dominios en Search Console y el Domain Manager funcionan con Cloudflare.

Acciones de cada cuenta

  • Probar (icono de antena): comprueba la conexión y guarda el resultado. Con Cloudflare indica también cuántas zonas ve.
  • Editar (lápiz): cambia el nombre, el rol o la clave. Si dejas un campo secreto vacío se conserva el guardado; si escribes uno nuevo, se sobrescribe para todos los plugins.
  • Predeterminada (estrella): la cuenta que se usa por defecto de ese proveedor, por ejemplo para los dominios nuevos.
  • Habilitar / deshabilitar: una cuenta deshabilitada se conserva pero ningún plugin la usa.
  • Borrar: pide tu contraseña de administrador en un aviso emergente, porque otros plugins pueden depender de la cuenta.

Importar las cuentas que ya tenías

El botón «Importar cuentas existentes» copia al registro lo que hubiera en el Domain Manager (su tabla antigua) y los tokens del .env. Es seguro repetirlo: no duplica nada y no toca ni borra el origen. Antes de copiar cada token se comprueba con Cloudflare, y los tokens que Cloudflare rechaza no se importan (te avisa de cuáles).

Quién usa estas cuentas

  • Domain Manager: zonas, registros DNS, dominios personalizados y Email Routing de Cloudflare.
  • Cloud: los dominios de los clientes del hosting.
  • Search Console: publica el TXT de verificación de Google en la zona del dominio.
  • Cualquier plugin o módulo nuevo, con solo pedir las cuentas al servicio del núcleo.

Seguridad

  • Las credenciales se guardan siempre cifradas con AES-256-GCM (cifrado autenticado). En la base de datos nunca hay un token en claro.
  • Los listados solo muestran versiones enmascaradas (cfut••••••2f53); la clave completa no se vuelve a mostrar nunca.
  • El cifrado depende de APP_ENCRYPTION_KEY o APP_KEY del .env. Si cambias esa clave, las cuentas guardadas no se pueden descifrar y aparecerán como «Ilegible»: tendrás que volver a escribir sus tokens.
  • Las pruebas no escriben el token en ningún registro ni mensaje de error.

Una excepción: Caddy, el servidor web que gestiona los certificados, lee su token de /etc/default/caddy y no puede consultar la base de datos. El botón «Guardar token de Cloudflare» del Domain Manager actualiza a la vez el registro, el .env y Caddy; si cambias el token solo desde Cuentas DNS, Caddy seguirá con el anterior hasta que lo sincronices.

Para desarrolladores

El registro es el servicio Screenart\Musedock\Services\DnsAccounts (tabla dns_provider_accounts). Para localizar en qué cuenta está el DNS de un dominio y publicar un registro:

$registry = \Screenart\Musedock\Services\DnsAccounts::make();
$zones = new \Screenart\Musedock\Services\Dns\DnsZones($registry);

$found = $zones->locate('ejemplo.com');   // cuenta + cliente + zona, o null
if ($found) {
    $found['client']->ensureTxt($found['zone']['id'], 'ejemplo.com', 'valor-del-txt');
}

No leas tokens del .env ni guardes los tuyos: pide siempre las cuentas al registro. Añadir otro proveedor es implementar la interfaz DnsZoneClient y registrarlo en DnsZones::clientFor().

Preguntas frecuentes

¿Qué diferencia hay entre «Habilitada» y «Funciona»?

«Habilitada» solo significa que el CMS puede usar la cuenta. «Funciona» es el resultado de la última prueba contra el proveedor. Una cuenta puede estar habilitada y fallar (por ejemplo, con un token caducado): pulsa la antena para comprobarlo.

¿Qué pasa con el token que ya tengo en el .env?

Se importa al registro con «Importar cuentas existentes» y a partir de ahí el CMS lee primero del registro. El .env se mantiene como respaldo y para Caddy; no se borra.

Si cambio un token aquí, ¿lo notan todos los plugins?

Sí. Todos leen la misma cuenta del registro, así que no hay que cambiarlo en ningún otro sitio (salvo Caddy, ver «Seguridad»).

¿Puedo tener varias cuentas de Cloudflare?

Sí. Al buscar la zona de un dominio, el CMS prueba las cuentas habilitadas y usa la que la contiene; una cuenta con el token roto se salta sin afectar a las demás.

Solución de problemas

SíntomaCausa y solución
«Cloudflare respondió 401» o «el token no está activo»El token se revocó o caducó. Crea uno nuevo en Cloudflare y pégalo con el lápiz de la cuenta.
La prueba dice «Ve 0 zonas» o menos de las esperadasAl token le faltan permisos o no incluye esas zonas. Edítalo en Cloudflare para añadir Zone → Read y DNS → Edit sobre las zonas que necesites.
Una cuenta aparece como «Ilegible (¿cambió APP_KEY?)»Se cambió la clave de cifrado del .env después de guardar la cuenta. Edítala y vuelve a escribir su token.
«Importar cuentas existentes» no copia un tokenCloudflare lo rechaza (caducado o revocado). El aviso indica cuál; añade uno válido con «Añadir cuenta».
El alta de un dominio en Search Console dice que su DNS no está en ninguna cuentaAñade aquí la cuenta de Cloudflare que contiene esa zona, o publica a mano el TXT que muestra el panel.