Agregá un dominio a Cloudflare y cambiá sus nameservers paso a paso (con ejemplos y salida esperada)
Introducción
Cloudflare es una red de distribución de contenido (CDN) y protección DDoS que muchos programadores y administradores de sistemas usan para acelerar y proteger sus sitios web. Una de las primeras tareas que vas a hacer cuando empezás con Cloudflare es agregar un dominio y luego cambiar los nameservers de tu registrador para que el tráfico pase por la red de Cloudflare.
Este artículo te guía a través de todo el proceso, tanto manualmente usando el dashboard de Cloudflare como automáticamente usando la API de Cloudflare. Incluye scripts de ejemplo listos para correr, sus salidas esperadas, y consejos de mejores prácticas para evitar errores comunes.
A quién está dirigido este artículo
- Principiantes que recién descubren Cloudflare y querés migrar un dominio.
- Desarrolladores o DevOps que necesitan agregar dominios de forma programática en pipelines CI/CD.
- Administradores de sistemas que quieren automatizar el proceso con scripts de shell.
Al finalizar, vas a poder:
- Agregar un dominio a tu cuenta de Cloudflare usando la interfaz gráfica.
- Escribir un script de shell corto que use la API de Cloudflare para agregar un dominio (sin necesidad de abrir un browser).
- Cambiar los nameservers de tu dominio en el registrador para que apunte a Cloudflare.
- Verificar que el cambio funcionó usando
nslookup,digycurl. - Evitar errores comunes (dominio duplicado, token sin permisos, propagación lenta).
El flujo de trabajo típico
- Creás una cuenta gratuita en Cloudflare (o iniciás sesión si ya tienes una).
- Agregás el dominio al que querés proteger o acelerar.
- Confirmás los registros DNS que Cloudflare propuso (o los editás).
- Buscás los nameservers de Cloudflare (por ejemplo,
ns1.cloudflare.com). - Actualizás los nameservers en tu registrador (el lugar donde registraste el dominio).
- Esperás la propagación (normalmente entre unos minutos y 48 horas).
- Verificás que el sitio ahora está detrás de Cloudflare.
En las siguientes secciones, te guiaré a través de cada paso, con detalle y ejemplos prácticos.
Agregar un dominio usando el dashboard de Cloudflare
1. Iniciá sesión y creá un perfil
- Visita https://www.cloudflare.com.
- Hacé clic en Iniciar sesión en la esquina superior derecha.
- Si no tenés una cuenta, hacé clic en Crear una cuenta y seguí los pasos (email, contraseña, dominio inicial opcional).
2. Agregar un sitio (dominio)
- Una vez logueado, verás un botón azul Agregar sitio (o un link en el panel de bienvenida).
- Escribí el dominio completo que querés agregar (por ejemplo,
ejemplo.com). No agregueshttp://ohttps://. - Cloudflare hará un escaneo rápido del DNS del dominio. Si el dominio ya está en otra cuenta, vas a ver un aviso; podés Transferir un sitio si es el dueño.
- Hacé clic en Agregar dominio (o Continuar).
- Cloudflare mostrará un listado de registros DNS sugeridos (A, AAAA, CNAME, MX, TXT, etc.). Por defecto, están todos activados. Podés:
- Eliminar un registro si no lo necesitás.
- Editar valores (por ejemplo, cambiar el proxy a «Desactivado» si querés que ese registro no pase por Cloudflare).
- Agregar nuevos registros si necesitás algo especial (SRV, SSHFP, etc.).
- Cuando termines, hacé clic en Listo → Continuar → Finalizar.
- Cloudflare ahora tiene una entrada de zona para tu dominio. Si querés la ID de zona (útil para la API), podés verla en Configuración DNS → pestaña Zonas, o usando la API (ver más abajo).
3. Cómo ver la ID de zona en el dashboard (útil para scripts)
- En el panel de control de Cloudflare, hacé clic en Zonas (en el menú de la izquierda).
- La ID de zona aparece al lado del nombre del dominio (es un string alfanumérico, por ejemplo,
023e105f5ca...).
4. Agregando un dominio con la API (alternativa automatizada)
Aunque el dashboard es muy fácil para un único dominio, si tenés muchas propiedades web, vas a querer agregar dominios vía script. La API de Cloudflare expone un endpoint simple POST /zones. A continuación, tenés un script de shell listo para correr que hace exactamente eso.
Nota: El script usa
curl(generalmente instalado) y un API Token que tenés que generar en Cloudflare (Configuración del perfil → API Tokens → Crear Token). El token necesita los permisos Zona > Edición.
Script: add-domain.sh
#!/usr/bin/env bash
# -------------------------------------------------
# add-domain.sh – Agregar un dominio a Cloudflare usando la API
# -------------------------------------------------
# Uso: CF_API_TOKEN="<tu_token>" CF_EMAIL="<tu_email>" ./add-domain.sh ejemplo.com
# -------------------------------------------------
# Verificar que las variables de entorno estén definidas
if [[ -z "$CF_API_TOKEN" || -z "$CF_EMAIL" ]]; then
echo "ERROR: Definá CF_API_TOKEN y CF_EMAIL antes de correr este script."
exit 1
fi
# Capturar el dominio del primer argumento; si no, intentar desde stdin
if [[ -n "$1" ]]; then
DOMAIN="$1"
else
read -r -p "Dominio (ejemplo.com): " DOMAIN
fi
# Validar formato del dominio (very simple)
if [[ ! "$DOMAIN" =~ ^[a-zA-Z0-9.-]+$ ]]; then
echo "ERROR: '$DOMAIN' no parece un dominio válido."
exit 1
fi
echo "Intentando agregar el dominio '$DOMAIN' a Cloudflare..."
# Llamado a la API – usamos el tipo de zona 'partial' para un DNS mínimo.
# Si querés una configuración completa (todos los registros predefinidos), cambia el tipo a 'full'.
RESPONSE=$(curl -s -w "
%{http_code}" \
-X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $CF_EMAIL" \
-H "X-Auth-Key: $CF_API_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$DOMAIN\", \"type\": \"partial\", \"account\": {\"id\": \"\"}}")
# La respuesta de la API es JSON; extraer el código HTTP (la última línea)
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | head -n -1)
echo "Código HTTP: $HTTP_CODE"
if [[ "$HTTP_CODE" -eq 200 || "$HTTP_CODE" -eq 201 ]]; then
# Extraer la ID de zona del JSON (usando jq si está disponible, sino sed)
if command -v jq > /dev:/dev/null; then
ZONE_ID=$(echo "$BODY" | jq -r '.result[0].id')
ZONE_NAME=$(echo "$BODY" | jq -r '.result[0].name')
else
ZONE_ID=$(echo "$BODY" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
ZONE_NAME=$(echo "$BODY" | grep -o '"name":"[^"]*"' | cut -d'"' -f4)
fi
echo "✅ Dominio agregado exitosamente."
echo " ID de Zona: $ZONE_ID"
echo " Nombre: $ZONE_NAME"
echo " Nameservers de Cloudflare (copiá estos en tu registrador):"
echo " - ns1.cloudflare.com"
echo " - ns2.cloudflare.com"
echo " - ns3.cloudflare.com"
echo " - ns4.cloudflare.com"
else
echo "❌ Error al agregar el dominio."
echo "Respuesta de la API:"
echo "$BODY"
exit 1
fiSalida esperada (ejemplo):
Intentando agregar el dominio 'ejemplo.com' a Cloudflare...
Código HTTP: 200
✅ Dominio agregado exitosamente.
ID de Zona: 023e105f5ca3b9... (truncado)
Nombre: ejemplo.com
Nameservers de Cloudflare (copiá estos en tu registrador):
- ns1.cloudflare.com
- ns2.cloudflare.com
- ns3.cloudflare.com
- ns4.cloudflare.comPor qué
partialvsfull:partialcrea una nueva zona sin registros DNS, lo que te da un control total para agregar los que necesites.fullreplica la configuración DNS original del dominio (útil para migraciones rápidas). Elige según tu flujo de trabajo.
5. Agregar múltiples dominios con un bucle
Si tenés muchos dominios en un CSV (dominios.txt, uno por línea), podés reutilizar el script:
while IFS= read -r dom; do
echo "Procesando $dom"
CF_API_TOKEN="$CF_API_TOKEN" CF_EMAIL="$CF_EMAIL" ./add-domain.sh "$dom"
done < dominios.txtEste patrón es común en pipelines CI/CD donde querés provisionar nuevas propiedades web de forma programática.
Cambiar los nameservers en tu registrador
Los nameservers son los servidores autoritativos que responden consultas DNS para tu dominio. Cloudflare provee cuatro nameservers fijos que vas a tener que apuntar al DNS de tu dominio.
A continuación, muestro los pasos exactos para algunos de los registradores más populares. El proceso es casi idéntico en todos lados: buscás una sección como DNS, Nameservers, Servidores Autoritativos o Configuración de DNS.
Namecheap
- Iniciá sesión en tu cuenta de Namecheap.
- Hacé clic en Domain List → haz clic en el dominio.
- En el menú de la izquierda, hacé clic en Namecheap DNS. (Si estás en el antiguo panel, es Manage DNS.)
- Buscá la sección Nameservers.
- Seleccioná Custom (o Use default si querés cambiar a Cloudflare).
- Escribí cada nameserver de Cloudflare, uno por línea:
ns1.cloudflare.com ns2.cloudflare.com ns3.cloudflare.com ns4.cloudflare.com - Haz clic en Save.
GoDaddy
- Ingresá a tu cuenta de GoDaddy.
- En el panel, buscá el dominio bajo My Products → haz clic en el nombre del dominio.
- Hacé clic en DNS en el menú de la izquierda.
- Desplázate hasta Nameservers.
- Seleccioná Custom.
- Sobrescribe con los cuatro nameservers de Cloudflare (idénticos a los anteriores).
- Haz clic en Save.
Google Domains
- Iniciá sesión en Google Domains.
- Seleccioná el dominio.
- En el menú, haz clic en Configuración DNS.
- Buscá Servidores Autoritativos.
- Seleccioná Personalizado.
- Ingresá los cuatro nameservers de Cloudflare.
- Haz clic en Guardar.
Consejo: Algunos registradores también ofrecen una opción «Usar Cloudflare» integrada (por ejemplo, Namecheap tiene una opción «Protect your privacy» que también cambia los nameservers). Podés usarla como atajo, pero tenés que asegurarte de que realmente esté usando los nameservers de Cloudflare.
Verificar que el cambio funcionó
Una vez que los nameservers han sido actualizados, necesitás confirmar que el dominio está resolviendo a través de Cloudflare. Aquí tenés tres métodos rápidos – todos son simples comandos en la terminal.
Usar nslookup (Windows) o dig (macOS/Linux)
Comando dig
dig +short ns ejemplo.comSalida esperada (después de la propagación):
ns1.cloudflare.com.
ns2.cloudflare.com.
ns3.cloudflare.com.
ns4.cloudflare.com.Comando nslookup
nslookup -type=ns ejemplo.comSalida esperada (similar):
Servidor: xxx.xxx.xxx.xxx
Dirección: yyy.yyy.yyy.yyy
Non-authoritative answer:
Nombre: ejemplo.com
Apuntador: ns1.cloudflare.com
Apuntador: ns2.cloudflare.com
Apuntador: ns3.cloudflare.com
Apuntador: ns4.cloudflare.comUsar curl para ver los encabezados de respuesta de un servidor DNS
Puedes usar dig para obtener el encabezado HTTP de la página, lo que a veces muestra el encabezado Server: cloudflare-nginx:
curl -I https://ejemplo.comSalida esperada (comienza con algo como):
HTTP/2 200
Server: cloudflare-nginx
Date: Tue, 25 Jun 2024 12:34:56 GMT
Content-Type: text/html; charset=utf-8
... (resto del encabezado)Verificar el registro A (dirección IP de tu host)
Una vez que los NS están actualizados, podés verificar que el registro A apunta a la IP de Cloudflare (si estás usando el proxy). Por ejemplo:
dig +short ejemplo.comSalida esperada (una IP pública, por ejemplo, 1.2.3.4) – es la IP de Cloudflare, no la IP original de tu servidor (a menos que hayas configurado A para que pase directamente).
Problemas comunes y cómo solucionarlos
Aunque Cloudflare es bastante confiable, hay algunas trampas que muchos principiante’s tropezamos. A continuación, una lista de verificación con problemas frecuentes y pasos concretos para resolverlos.
1. "El dominio ya está en Cloudflare"
- Síntoma: Al intentar agregarlo, ves un mensaje de que el dominio ya está activo.
- Causa: La zona ya existe, quizás en una cuenta diferente.
- Solución:
- Navega a la zona desde el panel de Cloudflare (Zonas → Encontrado).
- Si la zona está "Pendiente de eliminación”, podés pedir su eliminación (si tenés los permisos adecuados).
- Si la zona está activa, vas a tener que Transferir el dominio a tu cuenta (el dashboard te guiará).
2. Token de API sin los permisos correctos
- Síntoma: El script falla con
Error: API credentials are invalidoNo permission to modify zone. - Causa: El token está restringido a solo lectura o a otro scope.
- Solución:
- Ve a Mi perfil → API Tokens → Crear Token.
- Selecciona Zona → Edición (o Zona > Leer si solo necesitas consultar).
- Copiá y pegá el token en
CF_API_TOKEN.
3. Verificación fallida de DNS después de agregar dominio
- Síntoma: Cloudflare muestra un mensaje de error como "No se pudo verificar el dominio" después de agregarlo.
- Causa: El dominio está apuntando a un nameserver que no resuelve correctamente (por ejemplo, un DNS interno) o hay un problema de DNSSEC.
- Solución:
- Temporariamente cambiá los nameservers a un proveedor confiable (por ejemplo, Google DNS
8.8.8.8) para probar. - Usá
nslookup ejemplo.compara ver si resuelve a una IP. - Si todo está bien, intentá de nuevo; a veces Cloudflare necesita unos minutos para ver el registro.
- Temporariamente cambiá los nameservers a un proveedor confiable (por ejemplo, Google DNS
4. Propagación lenta de los nameservers
- Síntoma: Los records DNS siguen mostrando el antiguo nameserver después de 24-48 horas.
- Solución:
- Verificá la zona del registrador para asegurarte de que los nameservers se guardaron correctamente.
- Usá servicios de seguimiento de propagación (por ejemplo, https://www.whatsmydns.net) para ver el progreso.
- Si después de 48h sigue sin propagar, contactá al servicio de atención al cliente del registrador.
5. Datos de entrada no válidos o falta de ellos
- Síntoma: El script falla porque
$DOMAINcontiene espacios o símbolos extraños. - Solución:
- Usá una expresión regular simple como
[[ "$DOMAIN" =~ ^[a-zA-Z0-9.-]+$ ]]. - Validá antes de la llamada a la API.
- Usá una expresión regular simple como
6. Lanzar un script repetidamente causa un error de tasa de API
- Síntoma: Cloudflare responde con
429 Too Many Requests. - Solución:
- Implementá una espera exponencial pequeña entre llamadas si estás automatizando muchos dominios.
- Considerá usar
curl --max-timepara abortar llamadas lentas.
7. Intentar modificar la configuración de DNS de Cloudflare mientras el sitio está en mantenimiento
- Síntoma: Los cambios en los registros son sobrescritos unos minutos después.
- Solución:
- Bloquea la edición manual hasta que la propagación esté completa.
- Usá la opción «Desactivar proxy» para los registros que necesitás editar sin interferencia.
8. El registro MX de mi dominio está roto después de los cambios
- Síntoma: El correo ya no se entrega.
- Causa: Cloudflare puede haber sobrescrito el registro MX, o habrás editado el valor MX accidentalmente.
- Solución:
- Volvé al dashboard de Cloudflare, buscá el registro MX.
- Asegurate de que el proxy esté «Desactivado» para MX (es vital para correo).
- Editá el valor tal como estaba (o tal como lo provee Cloudflare:
mail.ejemplo.com).
Buenas prácticas para administrar dominios en Cloudflare
- Usá tokens de API con permisos mínimos – nunca hardcodees un token en scripts; usá variables de entorno o un archivo .env (no lo subas a VCS).
- Validá los dominios antes de la creación – evita dominios mal escritos.
- Escogé la opción de tipo de zona correcta (
partialvsfull) según tu flujo de trabajo. - Usá la regla «Desactivar proxy» para MX, SMTP, y otros registros sensibles a correo. Cloudflare puede modificar estos valores accidentalmente.
- Revisá y limpiá los registros DNS innecesarios – por ejemplo, elimina
_http2.qq.si no lo usás. - Implementá un monitoreo – usá
digonslookupen intervalos programados para asegurarte de que la configuración de nameservers siga siendo Cloudflare. - Configurá el TTL (Time To Live) para registros críticos – un TTL bajo ayuda a que los cambios de DNS se propaguen más rápido si necesitas una modificación urgente.
- Usá la API de Cloudflare para automatizar la creación de zonas y edición masiva – podrías escribir un script en Python que cree zonas para nuevos clientes automáticamente.
- Haz una copia de seguridad de los registros DNS de Cloudflare – guardá el JSON de respuesta de la API (
RESPONSE) en un archivo seguro. - Considerá usar Cloudflare Pages o Workers para contenido estático y lógica dinámica respectivamente una vez que el dominio esté en Cloudflare.
Conclusión
Agregar un dominio a Cloudflare y cambiar sus nameservers es un proceso simple una vez que entendés cada paso:
- Usa el dashboard para una configuración manual, rápida y con interfaz gráfica.
- Automatizá con un script (como
add-domain.sh) para muchas propiedades web. - Actualizá los nameservers en tu registrador (Namecheap, GoDaddy, Google Domains, etc.).
- Verificá con
dig,nslookupocurlpara asegurarte de que el tráfico ahora está siendo manejado por Cloudflare. - Anticípate a problemas comunes como dominios duplicados, tokens sin permisos, o registros MX rotos.
Una vez que tengas el dominio apuntando a Cloudflare, podés explorar las muchas características adicionales (Edge Functions, R2, Protección de Aplicaciones, etc.) que pueden hacer que tu sitio web sea aún más rápido, seguro y escalable.
Próximos pasos recomendados:
- Lee la documentación de Cloudflare sobre Configuración de DNS para entender los valores de proxy.
- Prueba Cloudflare Pages para sitios estáticos o Cloudflare Workers para lógica personalizada sin servidor.
- Implementa un pipeline CI/CD que provisione automáticamente nuevas zonas y aplique reglas de Edge.
Con lo aprendido, podés migrar dominios de forma confiable y eficiente, manteniendo tu infraestructura web ágil y segura.
Referencias y lectura adicional
- Documentación de Cloudflare API: https://developers.cloudflare.com/api/operations/zones-create-zone.
- Guía de Cloudflare para agregar un sitio: https://support.cloudflare.com/hc/en-us/articles/360019350652.
- Tutorial de Zone DNS: https://developers.cloudflare.com/dns/.
- Comandos
digynslookup: documentaciones dednsutilsybind.
Ejemplo de script (completo)
A continuación, tenés el script add-domain.sh completo en un bloque de código reutilizable. Copiá, hacé chmod +x add-domain.sh, seteá las variables de entorno (CF_API_TOKEN, CF_EMAIL) y ejecutá con ./add-domain.sh ejemplo.com.
#!/usr/bin/env bash
# -------------------------------------------------
# add-domain.sh – Agregar un dominio a Cloudflare usando la API
# -------------------------------------------------
if [[ -z "$CF_API_TOKEN" || -z "$CF_EMAIL" ]]; then
echo "ERROR: Definá CF_API_TOKEN y CF_EMAIL antes de correr este script."
exit 1
fi
if [[ -n "$1" ]]; then
DOMAIN="$1"
else
read -r -p "Dominio (ejemplo.com): " DOMAIN
fi
if [[ ! "$DOMAIN" =~ ^[a-zA-Z0-9.-]+$ ]]; then
echo "ERROR: '$DOMAIN' no parece un dominio válido."
exit 1
fi
echo "Intentando agregar el dominio '$DOMAIN' a Cloudflare..."
RESPONSE=$(curl -s -w "
%{http_code}" \
-X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $CF_EMAIL" \
-H "X-Auth-Key: $CF_API_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$DOMAIN\", \"type\": \"partial\", \"account\": {\"id\": \"\"}}")
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | head -n -1)
echo "Código HTTP: $HTTP_CODE"
if [[ "$HTTP_CODE" -eq 200 || "$HTTP_CODE" -eq 201 ]]; then
if command -v jq > /dev/null; then
ZONE_ID=$(echo "$BODY" | jq -r '.result[0].id')
ZONE_NAME=$(echo "$BODY" | jq -r '.result[0].name')
else
ZONE_ID=$(echo "$BODY" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
ZONE_NAME=$(echo "$BODY" | grep -o '"name":"[^"]*"' | cut -d'"' -f4)
fi
echo "✅ Dominio agregado exitosamente."
echo " ID de Zona: $ZONE_ID"
echo " Nombre: $ZONE_NAME"
echo " Nameservers de Cloudflare:"
echo " - ns1.cloudflare.com"
echo " - ns2.cloudflare.com"
echo " - ns3.cloudflare.com"
echo " - ns4.cloudflare.com"
else
echo "❌ Error al agregar el dominio."
echo "Respuesta de la API:"
echo "$BODY"
exit 1
fiResumen rápido
| Paso | Acción | Comando / Nota |
|---|---|---|
| 1 | Iniciar sesión en Cloudflare | Navegador a Cloudflare → Iniciar sesión |
| 2 | Agregar dominio (dashboard) | Agregar sitio → Ingresar dominio → Listo |
| 3 | Agregar dominio (API) | CF_API_TOKEN=… CF_EMAIL=… ./add-domain.sh ejemplo.com |
| 4 | Cambiar nameservers | Usar panel de registrador → 4 nameservers de Cloudflare |
| 5 | Verificar NS | dig +short ns ejemplo.com |
| 6 | Verificar sitio | curl -I https://ejemplo.com |
Con esto terminamos nuestro artículo detallado. ¡Esperamos que encuentres útil cada paso y puedas implementar Cloudflare para tus dominios con confianza!
DUGLAS MORENO
Comentarios (0)
Sé el primero en comentar.