Skip to content

Proyecto: cliente completo ​

Es momento de juntar todo. En este proyecto final vas a configurar, de punta a punta, el dominio de un cliente real: compra, Cloudflare, sitio, SSL en Full (strict), correo profesional autenticado, Search Console, redirecciones y seguridad. Al final tendrás tres entregables que puedes reutilizar con cada cliente: una checklist imprimible, una plantilla de documentación para entregar y una guía para cobrar este servicio.

El cliente ​

Mi Tienda es una boutique de ropa en Querétaro. Quieren mitienda.com, un sitio en WordPress (ya contrataron hosting cPanel, IP 203.0.113.10), correo profesional para 3 personas (hola@, ventas@ y laura@, la dueña) en Google Workspace, aparecer en Google y que "no los hackeen". Además, ya compraron mitienda.mx y quieren que lleve al sitio principal.

Tu objetivo: que todo funcione, que sea seguro, que no paguen nada innecesario (como un certificado SSL) y que el cliente quede como dueño de todo, con documentación clara.

Concepto: el orden importa ​

txt
FASE 0  Accesos y propiedad      ← quién es dueño de cada cuenta
FASE 1  Dominio                  ← comprar/verificar, renovación, bloqueo
FASE 2  Cloudflare               ← zona, nameservers, Active
FASE 3  Sitio                    ← registros web, WordPress
FASE 4  SSL                      ← AutoSSL + Full (strict) + HTTPS
FASE 5  Correo                   ← Workspace, MX
FASE 6  Autenticación de correo  ← SPF, DKIM, DMARC
FASE 7  Google                   ← Search Console (TXT)
FASE 8  Redirecciones            ← www, http, mitienda.mx
FASE 9  Seguridad                ← WAF, Turnstile, DNSSEC, 2FA
FASE 10 Pruebas y entrega        ← checklist + documentación

Configurar el correo antes que Cloudflare, o el SSL antes que los registros, te obliga a hacer trabajo dos veces.

Fase 0: accesos y propiedad ​

La regla profesional: las cuentas son del cliente; tú eres invitado.

  1. El cliente crea (contigo en videollamada, si hace falta) sus cuentas con un correo que controle a largo plazo: registrador, Cloudflare, Google Workspace.
  2. Activa la verificación en dos pasos en todas.
  3. Te invita como miembro/administrador (Cloudflare: Manage Account → Members; Google Workspace: un usuario administrador o rol delegado).
  4. Las contraseñas se guardan en un gestor (Bitwarden, 1Password), nunca en un chat.

Error común: el dominio a nombre del programador

Es la causa número uno de pleitos. Si el día de mañana dejas de trabajar con el cliente (o te pasa algo), el negocio queda secuestrado. Aunque tú hagas la compra con tu tarjeta para agilizar, el titular y la cuenta deben ser del cliente. Ver el escenario 8 de Escenarios reales.

Fase 1: el dominio ​

  • Si aún no existe, cómpralo donde la renovación sea transparente (Cloudflare Registrar a precio de costo, Namecheap, Porkbun; .mx en Akky). Mira el precio de renovación, no el de promoción. Repasa Qué es un dominio.
  • Activa renovación automática con una tarjeta vigente del cliente y añade varios años si el presupuesto lo permite.
  • Verifica que el bloqueo de transferencia esté activo.
  • Datos de contacto: los del cliente (con privacidad WHOIS si está disponible).
  • En el carrito quita los extras innecesarios: "SSL Premium", "protección de sitio", "correo básico", "constructor web". Ya sabes por qué.

Fase 2: Cloudflare ​

  1. Agrega mitienda.com (plan Free) e importa registros. Revisa contra la zona del hosting.
  2. Cambia los nameservers en el registrador a los asignados (ana.ns.cloudflare.com, bob.ns.cloudflare.com).
  3. Espera Active y verifica:
bash
dig NS mitienda.com @a.gtld-servers.net

Repaso: Cloudflare desde cero.

Fase 3: el sitio ​

En cPanel el dominio ya está como principal. En Cloudflare:

txt
A      @        203.0.113.10    🟠
CNAME  www      mitienda.com    🟠
A      cpanel   203.0.113.10    ⚪   (opcional, acceso cómodo al panel)
A      ftp      203.0.113.10    ⚪   (solo si se usará FTP; mejor SFTP o el administrador de archivos)

Instala WordPress (Softaculous o manual) con la dirección https://mitienda.com.

Fase 4: SSL en Full (strict) ​

  1. cPanel → SSL/TLS Status: AutoSSL válido para mitienda.com y www.mitienda.com (ejecútalo si hace falta; si falla detrás del proxy, usa un Origin Certificate).
  2. Cloudflare → SSL/TLS → Full (strict).
  3. Edge Certificates: Always Use HTTPS ✅, Automatic HTTPS Rewrites ✅, TLS mínimo 1.2.
  4. .htaccess con la redirección http→https a prueba de bucles.
  5. HSTS: todavía no. Lo activas en la revisión de las 2–4 semanas.

Verifica ambos tramos:

bash
# Tramo 1 (lo que ve el visitante)
curl -sI https://mitienda.com | grep -iE "^HTTP|server"
# Tramo 2 (el origen, saltándose Cloudflare)
curl -sI --resolve mitienda.com:443:203.0.113.10 https://mitienda.com | head -1

Repaso completo: SSL sin pagar.

Fase 5: correo profesional (Google Workspace) ​

  1. En Google Workspace agrega mitienda.com y verifica con el TXT google-site-verification=....
  2. Crea los usuarios (laura@) y alias/grupos (hola@, ventas@ como grupos que reenvían a quien corresponda: no pagas licencias por cada dirección).
  3. En Cloudflare, elimina cualquier MX que apunte al hosting y crea MX @ smtp.google.com prioridad 1.
  4. En cPanel → Email Routing → Remote Mail Exchanger (para que el WordPress entregue a Google, no al buzón local).
  5. Configura WordPress para enviar por SMTP autenticado (plugin de SMTP con la cuenta de Workspace o un servicio transaccional), en lugar de la función mail() del hosting.

¿Y los envíos masivos (Mailchimp, Brevo, SendGrid)?

Estos servicios normalmente no necesitan un include: en tu SPF, porque envían con su propio Return-Path (el dominio que evalúa SPF es el suyo). Lo que sí importa es configurar su DKIM con tu dominio (los CNAME o TXT que te piden), para que DMARC pase alineado. Más en DKIM y Correo con tu dominio.

Repaso: MX y cómo funciona el correo y Correo con tu dominio.

Fase 6: SPF, DKIM y DMARC ​

txt
TXT  @                  v=spf1 include:_spf.google.com ~all
TXT  google._domainkey  v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...
TXT  _dmarc             v=DMARC1; p=none; rua=mailto:dmarc@mitienda.com; adkim=r; aspf=r
  • SPF: solo Google, porque el sitio envía por el SMTP de Google. Si el sitio enviara desde el hosting, agregarías ip4:203.0.113.10. Un solo registro SPF.
  • DKIM: consola de administración → Gmail → Autenticar correo → generar (2048) → publicar TXT → Iniciar autenticación.
  • DMARC con plan de endurecimiento:
SemanaPolíticaQué haces
0–2p=noneRecibir reportes; confirmar que todo envío legítimo pasa SPF/DKIM.
3–4p=quarantine; pct=25 → pct=100Lo que falle va a spam.
5+p=rejectNadie puede suplantar @mitienda.com.

Usa el generador SPF/DMARC y repasa SPF, DKIM y DMARC.

Fase 7: Google Search Console ​

Usa la propiedad de tipo Dominio (cubre http, https, www y todos los subdominios):

  1. Search Console → Agregar propiedad → Dominio → mitienda.com.
  2. Google muestra un TXT google-site-verification=xyz.... Créalo en Cloudflare en @. (Si Google ofrece "verificar automáticamente con Cloudflare", también sirve; el resultado es el mismo TXT.)
  3. Pulsa Verificar. Si falla, espera unos minutos y comprueba con dig TXT mitienda.com +short.
  4. Envía el sitemap: https://mitienda.com/wp-sitemap.xml (o el de tu plugin SEO).

Puede haber varios TXT en @

SPF, verificación de Workspace y verificación de Search Console pueden convivir como TXT separados en @. Lo único que no puede repetirse es el SPF (v=spf1). Más en TXT y verificaciones.

Fase 8: redirecciones ​

  1. www → raíz: Redirect Rule en Cloudflare (301, conservar query). Asegúrate de que WordPress use https://mitienda.com como dirección y de no tener la regla opuesta en .htaccess.
  2. http → https: Always Use HTTPS + .htaccess.
  3. mitienda.mx → mitienda.com: zona propia en Cloudflare, AAAA @ 100:: y AAAA www 100:: en naranja, Redirect Rule 301, y protección anti-suplantación (MX nulo, v=spf1 -all, DMARC p=reject).

Comprueba que cada variante llegue con un solo salto al destino final:

bash
for u in http://mitienda.com http://www.mitienda.com https://www.mitienda.com http://mitienda.mx https://www.mitienda.mx; do
  echo "== $u"; curl -sIL "$u" | grep -iE "^HTTP|^location"
done

Fase 9: seguridad ​

MedidaDóndeConfiguración
WAF administradoSecurity → WAFActivo (por defecto)
Proteger loginCustom rule/wp-login.php fuera de MX → Managed Challenge
Bloquear archivos sensiblesCustom rulerutas con /.env, /.git, xmlrpc.php → Block
Fuerza brutaRate limitingPOST /wp-login.php, 5 en 10 s por IP
FormulariosTurnstileWidget en contacto + validación en servidor
BotsBot Fight ModeActivo (si no rompe integraciones)
IP realHostingCF-Connecting-IP (mod_remoteip o plugin)
DNSSECDNS → SettingsActivar + DS en el registrador
CuentasTodas2FA, contraseñas en gestor, mínimo privilegio
CAA (opcional)DNSSi lo agregas, autoriza la CA de AutoSSL (letsencrypt.org o sectigo.com); Cloudflare añade solo las suyas

Repaso: Cloudflare a fondo.

La zona final ​

txt
mitienda.com — Cloudflare (ana.ns.cloudflare.com / bob.ns.cloudflare.com)
Tipo   Nombre              Contenido                                                Proxy  Prio
──────────────────────────────────────────────────────────────────────────────────────────────
A      @                   203.0.113.10                                             🟠
CNAME  www                 mitienda.com                                             🟠
A      cpanel              203.0.113.10                                             ⚪
MX     @                   smtp.google.com                                          —      1
TXT    @                   v=spf1 include:_spf.google.com ~all                      —
TXT    @                   google-site-verification=WORKSPACE_abc123...             —
TXT    @                   google-site-verification=SEARCHCONSOLE_xyz789...         —
TXT    google._domainkey   v=DKIM1; k=rsa; p=MIIBIjANBgkqh...                       —
TXT    _dmarc              v=DMARC1; p=none; rua=mailto:dmarc@mitienda.com          —
DNSSEC: activo (DS publicado en el registrador)
SSL/TLS: Full (strict) · Always Use HTTPS · TLS mín. 1.2 · HSTS pendiente (semana 4)

Checklist imprimible ​

Imprime esta lista (o cópiala a tu gestor de tareas) y márcala con cada cliente.

txt
CLIENTE: ______________________   DOMINIO: ______________________   FECHA: ___/___/______

FASE 0 · ACCESOS
[ ] Cuentas del registrador, Cloudflare y correo a nombre del cliente
[ ] 2FA activo en todas las cuentas
[ ] Yo tengo acceso como miembro/invitado (no con la contraseña del cliente)
[ ] Contraseñas guardadas en gestor compartido

FASE 1 · DOMINIO
[ ] Titular y contactos = cliente          [ ] Renovación automática activa
[ ] Bloqueo de transferencia activo         [ ] Fecha de vencimiento anotada: ___/___/______
[ ] Sin extras innecesarios (SSL de pago, etc.)

FASE 2 · CLOUDFLARE
[ ] Zona importada y comparada con la original (MX, TXT, DKIM, SRV, subdominios)
[ ] Solo los 2 nameservers de Cloudflare en el registrador
[ ] Estado: Active

FASE 3-4 · SITIO Y SSL
[ ] @ y www en naranja; mail/cpanel/ftp en gris
[ ] Certificado válido en el origen (AutoSSL / Origin Certificate)
[ ] SSL/TLS en Full (strict)
[ ] Always Use HTTPS + Automatic HTTPS Rewrites + TLS mín. 1.2
[ ] Sin contenido mixto (consola del navegador limpia)
[ ] HSTS programado para la revisión de la semana 4

FASE 5-6 · CORREO
[ ] MX correctos (sin MX viejos)            [ ] Email Routing correcto en cPanel
[ ] Un solo SPF, sin "+a" si @ está en naranja
[ ] DKIM publicado y activado en el proveedor
[ ] DMARC p=none con rua → plan a quarantine/reject
[ ] Prueba: enviar y recibir desde/hacia Gmail y Outlook
[ ] mail-tester.com: ___/10    "Mostrar original": SPF PASS · DKIM PASS · DMARC PASS
[ ] Formulario del sitio entrega al buzón correcto

FASE 7-8 · GOOGLE Y REDIRECCIONES
[ ] Search Console (propiedad Dominio) verificada + sitemap enviado
[ ] www → raíz (301, un solo salto)        [ ] http → https
[ ] Dominios secundarios → principal (301) con MX nulo, SPF -all, DMARC reject

FASE 9 · SEGURIDAD
[ ] WAF administrado + reglas propias       [ ] Rate limiting en login
[ ] Turnstile en formularios                [ ] Bot Fight Mode revisado
[ ] IP real del visitante restaurada        [ ] DNSSEC activo (DS en registrador)

FASE 10 · ENTREGA
[ ] SSL Labs: calificación ___              [ ] whatsmydns: propagado
[ ] Documento de entrega enviado al cliente
[ ] Recordatorio de revisión en 2-4 semanas (DMARC, HSTS)

Plantilla de documentación para el cliente ​

Entrégala en PDF o en un documento compartido. Nunca incluyas contraseñas: solo dónde están y quién tiene acceso.

txt
═══════════════════════════════════════════════════════════════════
  DOCUMENTACIÓN DE DOMINIO Y CORREO — Mi Tienda
  Preparado por: [Tu nombre] · [tu correo] · Fecha: 02/11/2026
═══════════════════════════════════════════════════════════════════

1. RESUMEN
   Dominio principal: mitienda.com      Secundario: mitienda.mx (redirige)
   Sitio web:  WordPress en hosting [Proveedor], IP 203.0.113.10
   Correo:     Google Workspace (3 usuarios: laura@, grupos hola@ y ventas@)
   DNS / CDN / Seguridad: Cloudflare (plan Free)
   Certificado SSL: GRATUITO (Cloudflare Universal SSL + AutoSSL del hosting).
                    No es necesario comprar certificados.

2. CUENTAS (todas a nombre de Mi Tienda, con verificación en 2 pasos)
   | Servicio          | Cuenta / correo dueño   | Quién más tiene acceso | Contraseña en |
   | Registrador       | laura@mitienda.com      | [Tu nombre] (invitado) | Bitwarden     |
   | Cloudflare        | laura@mitienda.com      | [Tu nombre] (miembro)  | Bitwarden     |
   | Google Workspace  | laura@mitienda.com      | [Tu nombre] (admin)    | Bitwarden     |
   | Hosting / cPanel  | laura@mitienda.com      | [Tu nombre]            | Bitwarden     |

3. FECHAS Y PAGOS
   | Concepto           | Proveedor   | Vence / se cobra | Costo aprox. | Renovación auto |
   | mitienda.com       | [Registrador]| __/__/____      | $____        | Sí              |
   | mitienda.mx        | Akky        | __/__/____       | $____        | Sí              |
   | Hosting            | [Proveedor] | __/__/____       | $____        | Sí              |
   | Google Workspace   | Google      | mensual          | $____ x 1    | Sí              |

4. REGISTROS DNS (Cloudflare)
   [pegar la tabla de "La zona final"]

5. CONFIGURACIÓN DE SEGURIDAD
   SSL/TLS: Full (strict) · Always Use HTTPS · TLS 1.2+
   WAF: reglas administradas + login protegido + límite de intentos
   DNSSEC: activo · Turnstile en el formulario de contacto

6. QUÉ HACER SI...
   - El sitio no carga: revisar status.cloudflare.com y el estado del hosting; contactar a [Tu nombre].
   - No llegan correos: revisar spam y status de Google Workspace; NO tocar los registros MX/TXT.
   - Alguien ofrece "renovar su certificado SSL": NO es necesario, el certificado es gratuito y automático.
   - Llega un aviso de vencimiento del dominio: verificar que la tarjeta esté vigente.

7. PENDIENTES PROGRAMADOS
   - Semana 2-4: endurecer DMARC a quarantine y luego reject.
   - Semana 4: activar HSTS (1 mes, luego 6-12 meses).

Cuánto cobrar por este servicio ​

Este trabajo tiene mucho valor para el cliente: correo que no cae en spam, sitio seguro, cero pagos innecesarios y un negocio que no depende de nadie. Usa el método de Cómo cotizar (tarifa por hora × horas estimadas, con margen para imprevistos). Como referencia de horas:

TareaHoras aprox.
Inventario, accesos, reunión con el cliente1 – 1.5
Dominio + Cloudflare + nameservers0.5 – 1
SSL Full (strict), redirecciones, contenido mixto0.5 – 1.5
Correo profesional (alta, usuarios, MX, migración de buzones si existe)1 – 3
SPF, DKIM, DMARC + pruebas0.5 – 1
Search Console, dominios secundarios, seguridad1 – 1.5
Documentación y entrega1
Total5.5 – 10.5 h

Paquetes orientativos (México, valores de referencia; ajústalos a tu mercado y experiencia):

PaqueteIncluyeRango orientativo (MXN)
BásicoDominio + Cloudflare + SSL Full (strict) + redirecciones$1,500 – $3,000
ProfesionalBásico + correo profesional + SPF/DKIM/DMARC + Search Console + documentación$3,500 – $7,000
MigraciónCambio de hosting o de proveedor de correo sin caída, con migración de buzones$4,000 – $10,000
Mantenimiento mensualMonitoreo, renovaciones, reportes DMARC, ajustes de seguridad, soporte$500 – $1,500 / mes

Vende el ahorro

Si el cliente pagaba un certificado de $89 USD al año y un "correo básico" del registrador que caía en spam, enséñale la cuenta: tu servicio se paga solo en uno o dos años y además funciona mejor. No cobres "por mover unos registros": cobras por el conocimiento de no romper nada.

No revendas lo gratuito

Cobrar por tu trabajo de configurar el SSL está bien. Cobrar al cliente un "certificado SSL anual" que en realidad es el gratuito de Cloudflare o AutoSSL no es ético. Sé transparente: tu valor es el servicio, no el certificado.

Ejercicios ​

  1. Haz el proyecto completo con un dominio propio (uno barato de práctica sirve) y llena la checklist. Anota cuánto tardaste en cada fase.
  2. Variante: el cliente quiere el correo en el hosting (cPanel) en lugar de Google Workspace. Escribe la tabla final de registros que cambia.
  3. A las 3 semanas, los reportes DMARC muestran que una herramienta de facturación electrónica envía correos "de" facturas@mitienda.com desde los servidores de facturador.example y fallan SPF. ¿Qué haces antes de pasar a p=reject?
  4. Prepara una cotización con el paquete Profesional para Mi Tienda, incluyendo el mantenimiento mensual opcional.
Ver solución
  1. Práctica libre. Lo normal la primera vez: 8–12 horas; con práctica baja a 3–5 horas. Esa diferencia es tu ganancia como profesional.
  2. Cambian el correo y el SPF/DKIM:
txt
A      mail                203.0.113.10                               ⚪
A      webmail             203.0.113.10                               ⚪
MX     @                   mail.mitienda.com                          0
TXT    @                   v=spf1 ip4:203.0.113.10 mx ~all
TXT    default._domainkey  v=DKIM1; k=rsa; p=...   (de cPanel → Email Deliverability)
TXT    _dmarc              v=DMARC1; p=none; rua=mailto:dmarc@mitienda.com

Se eliminan el MX de Google y google._domainkey; en cPanel, Email Routing → Local Mail Exchanger. 3. Agregar el include: que documente el proveedor de facturación al SPF (sin pasar de 10 consultas DNS) y, si lo permite, configurar DKIM con el dominio mitienda.com en esa herramienta. Esperar a que los reportes muestren PASS alineado y solo entonces endurecer DMARC. 4. Ejemplo:

txt
COTIZACIÓN — Configuración profesional de dominio y correo · Mi Tienda
Incluye: Cloudflare (DNS, CDN, seguridad), SSL gratuito en Full (strict),
correo profesional Google Workspace (3 direcciones), SPF/DKIM/DMARC,
Search Console, redirección de mitienda.mx, documentación de entrega.
Inversión: $5,500 MXN + IVA (50% anticipo, 50% a la entrega)
No incluye: licencias de Google Workspace ni renovación de dominios (las paga el cliente directamente).
Opcional: mantenimiento mensual $900 MXN (monitoreo, renovaciones, DMARC, soporte).
Tiempo de entrega: 3 días hábiles tras recibir accesos.

Resumen ​

  • Orden: accesos → dominio → Cloudflare → sitio → SSL → correo → SPF/DKIM/DMARC → Google → redirecciones → seguridad → entrega.
  • Todas las cuentas son del cliente, con 2FA; tú eres invitado.
  • SSL gratis en Full (strict); nada de certificados de pago.
  • Correo autenticado con DMARC que se endurece por etapas; Search Console por TXT.
  • Entrega siempre una checklist marcada y una documentación sin contraseñas.
  • Cobra por el conocimiento y el ahorro, con paquetes claros y mantenimiento opcional (Cómo cotizar).
  • ¡Terminaste el curso! Ya puedes configurar con confianza el dominio de cualquier cliente.

Academia Web — aprende, copia y construye.