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
- Pulsa «Añadir cuenta» y elige el proveedor.
- Escribe un nombre que reconozcas (por ejemplo, el de la empresa titular de la cuenta de Cloudflare).
- Pega el token o las claves que pide ese proveedor.
- 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.
- 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
| Proveedor | Qué se guarda | Prueba automática |
|---|---|---|
| Cloudflare | Token de API (+ Account ID) | Sí: comprueba el token y cuenta las zonas que ve |
| DigitalOcean, Hetzner, Vultr, Linode, Gandi | Token de API | Todavía no |
| Porkbun | API key y Secret API key | Todavía no |
| PowerDNS | URL de la API, API key e ID del servidor | Todavía no |
| Amazon Route53 | Access key ID, Secret access key y región | Todavía no |
| OVH | Endpoint, Application key/secret y Consumer key | Todavía no |
| Namecheap | Usuario de API, API key, usuario e IP autorizada | Todavía no |
| RFC2136 (BIND) | Servidor, nombre y secreto de la clave, algoritmo | Todaví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_KEYoAPP_KEYdel.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íntoma | Causa 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 esperadas | Al 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 token | Cloudflare 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 cuenta | Añade aquí la cuenta de Cloudflare que contiene esa zona, o publica a mano el TXT que muestra el panel. |