Saltar a contenido

Configuración de Cloudflare Images

Documento preexistente, migrado al estándar de documentación

Redactado antes de la adopción del estándar (última edición: 2025-11-24) y movido acá; el único cambio de contenido fue corregir pnpm dev por npm run dev. Los precios de Cloudflare Images son los vigentes a esa fecha: confirmar contra la tarifa actual antes de usarlos para presupuestar. El resto (credenciales, variantes, troubleshooting) coincide con lo que hace el código hoy.

Este documento te guiará en la obtención de las credenciales necesarias para integrar Cloudflare Images con PayloadCMS.

Paso 1: Obtener las Credenciales de Cloudflare

1.1 CLOUDFLARE_ACCOUNT_ID

  1. Inicia sesión en Cloudflare Dashboard
  2. En el panel lateral izquierdo, ve a Images
  3. En la URL verás algo como: https://dash.cloudflare.com/{ACCOUNT_ID}/images
  4. Copia el ACCOUNT_ID de la URL

Alternativa: - Ve a cualquier sitio en tu dashboard - Haz scroll hacia abajo en el panel derecho - Verás "Account ID" en la sección de información de la cuenta

1.2 CLOUDFLARE_IMAGES_TOKEN (API Token)

  1. Ve a API Tokens
  2. Click en "Create Token"
  3. Busca la plantilla "Cloudflare Images" y haz click en "Use template"
  4. Configura los permisos:
  5. Account → Cloudflare Images → Edit
  6. En "Account Resources":
  7. Selecciona "Include" → "All accounts" (o el account específico)
  8. Click en "Continue to summary"
  9. Click en "Create Token"
  10. IMPORTANTE: Copia el token inmediatamente (solo se muestra una vez)

1.3 CLOUDFLARE_ACCOUNT_HASH (Delivery Hash)

  1. Ve a Images Dashboard
  2. Sube cualquier imagen de prueba (o usa una existente)
  3. Click en la imagen para ver los detalles
  4. Verás una URL de ejemplo como:
    https://imagedelivery.net/{ACCOUNT_HASH}/{IMAGE_ID}/public
    
  5. El ACCOUNT_HASH es el string entre imagedelivery.net/ y el siguiente /
  6. Copia este hash (tiene formato de UUID)

Alternativa: - En el dashboard de Images, busca "Image Delivery URL" - El hash aparecerá en el formato de ejemplo de URL

Paso 2: Configurar Variables de Entorno

  1. Abre tu archivo .env en la raíz del proyecto
  2. Agrega las siguientes variables con tus valores reales:
# Cloudflare Images Configuration
CLOUDFLARE_ACCOUNT_ID=tu_account_id_aqui
CLOUDFLARE_IMAGES_TOKEN=tu_token_api_aqui
CLOUDFLARE_ACCOUNT_HASH=tu_account_hash_aqui

Paso 3: Configurar Variantes de Imagen

Las variantes definen los diferentes tamaños de imagen que Cloudflare generará automáticamente.

  1. Ve a Images Dashboard
  2. Click en la pestaña "Variants"
  3. Crea las siguientes variantes (click en "Create Variant" para cada una):
Nombre Fit Width Height Descripción
thumbnail scale-down 300 - Miniaturas admin
square cover 500 500 Imágenes cuadradas
small scale-down 600 - Móviles
medium scale-down 900 - Tablets
large scale-down 1400 - Desktop
xlarge scale-down 1920 - Full HD
og cover 1200 630 Open Graph/Social

Configuración recomendada para cada variante: - Fit: - scale-down para mantener aspect ratio y no agrandar - cover para recortar y llenar dimensiones exactas - Metadata: Strip all (para optimizar tamaño) - Format: Auto (Cloudflare elegirá WebP/AVIF automáticamente)

Paso 4: Verificar la Configuración

Una vez configuradas las variables de entorno y variantes, reinicia tu servidor de desarrollo:

npm run dev

Límites y Precios de Cloudflare Images

  • Almacenamiento: $5 USD por 100,000 imágenes/mes
  • Entregas: Ilimitadas (sin costo adicional)
  • Transformaciones: Ilimitadas (sin costo adicional)
  • Plan gratuito: Hasta 100,000 entregas/mes con 1,000 imágenes almacenadas

Recursos Adicionales

Troubleshooting

Error: "Authentication error"

  • Verifica que el CLOUDFLARE_IMAGES_TOKEN sea correcto
  • Asegúrate de que el token tenga permisos de "Edit" para Cloudflare Images

Error: "Account not found"

  • Verifica el CLOUDFLARE_ACCOUNT_ID
  • Asegúrate de tener Cloudflare Images habilitado en tu cuenta

Las imágenes no cargan

  • Verifica el CLOUDFLARE_ACCOUNT_HASH
  • Asegúrate de que las variantes estén configuradas en el dashboard
  • Revisa que las imágenes se hayan subido correctamente (busca el cfImageId en la DB)