7–11 minutos

de lectura

R2 Uploads: Cloudflare R2 para WordPress sin complicaciones

Hace algunos años escribí un artículo sobre cómo utilizar Cloudflare R2 con WordPress. En aquel momento, mi principal interés era reducir costos de almacenamiento y evitar los cargos por salida (egress fees) asociados a otros proveedores de almacenamiento de objetos.

Desde entonces, he utilizado R2 en múltiples proyectos WordPress, incluyendo plataformas educativas, comunidades, sitios de membresía y aplicaciones con grandes bibliotecas multimedia. Con el tiempo descubrí que R2 no solamente destaca por su costo, sino también por su rendimiento y por lo bien que encaja dentro de arquitecturas modernas donde la aplicación, la base de datos y los archivos se encuentran desacoplados.

Sin embargo, la mayoría de herramientas disponibles estaban pensadas principalmente para Amazon S3.

Por eso decidí crear R2 Uploads, un fork de S3 Uploads enfocado específicamente en Cloudflare R2.

En este artículo explicaré por qué considero que R2 es una excelente opción para WordPress, cómo funciona R2 Uploads y cómo puedes utilizarlo en tus propios proyectos.

El problema de almacenar uploads localmente

Por defecto, WordPress almacena todos los archivos dentro de:

wp-content/uploads

Para sitios pequeños esto suele ser suficiente.

Pero a medida que un proyecto crece, empiezan a aparecer algunos problemas.

El servidor se llena

Las imágenes, documentos, videos y otros archivos multimedia suelen ocupar mucho más espacio que la propia aplicación.

No es raro encontrar sitios donde WordPress ocupa menos de 500 MB mientras que la carpeta uploads supera los 100 GB.

Las migraciones se vuelven más complejas

Mover una aplicación de WordPress es relativamente sencillo.

Mover cientos de gigabytes de archivos multimedia no lo es.

Los respaldos tardan más

En muchos casos, la mayor parte del tamaño de un backup proviene de la carpeta uploads.

Escalar se vuelve más difícil

Si utilizas varios servidores, todos necesitan acceso a los mismos archivos.

Esto obliga a utilizar almacenamiento compartido o mecanismos de sincronización adicionales.

Por estas razones, muchas arquitecturas modernas separan:

  • Aplicación
  • Base de datos
  • Caché
  • Almacenamiento de objetos

¿Por qué Cloudflare R2?

Cloudflare R2 es un servicio de almacenamiento de objetos compatible con la API de Amazon S3.

Esto significa que muchas herramientas diseñadas para S3 pueden utilizarse con R2 con pocos cambios o incluso sin modificaciones.

Sus principales ventajas son:

Sin cargos por salida

Este es probablemente el beneficio más conocido.

Cuando un visitante descarga una imagen, un PDF o cualquier archivo almacenado en R2, Cloudflare no cobra tarifas de salida.

Dependiendo del volumen de tráfico, esto puede representar un ahorro significativo frente a Amazon S3.

Compatible con S3

La compatibilidad con la API de S3 facilita enormemente la integración con aplicaciones existentes.

No es necesario aprender una plataforma completamente nueva.

Integración con Cloudflare

Si ya utilizas Cloudflare para:

  • CDN
  • WAF
  • DNS
  • Cache Rules
  • Workers

R2 se integra de forma natural dentro del mismo ecosistema.

R2 también puede ser más rápido que S3

Cuando se habla de Cloudflare R2, normalmente la conversación gira alrededor de los costos.

Sin embargo, el rendimiento es igual de interesante.

Cloudflare publicó benchmarks donde R2 superó a Amazon S3 entre un 20% y un 40% al servir contenido multimedia mediante acceso público.

Esto es importante porque demuestra que R2 no es simplemente una alternativa más económica.

También puede ofrecer una mejor experiencia para los usuarios finales.

Para sitios WordPress esto puede traducirse en:

  • Menor tiempo de carga de imágenes.
  • Menor latencia en la entrega de archivos.
  • Mejor experiencia para usuarios distribuidos globalmente.
  • Mejor rendimiento en bibliotecas multimedia grandes.

Por supuesto, los resultados reales dependerán de la ubicación geográfica de los usuarios y de la arquitectura de cada proyecto, pero es importante entender que R2 compite tanto en precio como en rendimiento.

¿Por qué no usar directamente S3 Uploads?

Soy un gran admirador de S3 Uploads.

Es un proyecto creado por Human Made que sigue una filosofía que me gusta mucho:

  • Configuración mediante código.
  • Sin paneles innecesarios.
  • Sin dependencias complejas.
  • Cercano a WordPress Core.
  • Ligero y fácil de mantener.

Sin embargo, el proyecto está orientado principalmente a Amazon S3.

Aunque Cloudflare R2 es compatible con S3, quería una alternativa enfocada específicamente en R2, con documentación, configuraciones y ejemplos pensados para usuarios de Cloudflare.

Así nació R2 Uploads.

¿Qué es R2 Uploads?

R2 Uploads es un fork de S3 Uploads diseñado específicamente para Cloudflare R2.

Su objetivo es permitir que WordPress almacene archivos directamente en R2 manteniendo la experiencia habitual de la biblioteca multimedia.

Repositorio:

https://github.com/carnaval-studio/r2-uploads

Características principales

  • Integración nativa con Cloudflare R2.
  • Basado en S3 Uploads.
  • Compatible con la API de Amazon S3.
  • Mantiene la experiencia nativa de WordPress.
  • Compatible con WP-CLI.
  • Migración de archivos existentes.
  • Gestión de archivos desde terminal.
  • Ideal para arquitecturas desacopladas.

Cuando un usuario sube una imagen:

  1. WordPress procesa el archivo normalmente.
  2. El archivo se almacena en Cloudflare R2.
  3. WordPress guarda las referencias habituales en la base de datos.
  4. Los archivos se sirven desde el almacenamiento externo.

Desde la perspectiva del editor de contenidos, prácticamente nada cambia.

La biblioteca multimedia continúa funcionando como siempre.

Instalación

R2 Uploads se distribuye mediante GitHub.

  1. Descarga la última versión desde GitHub.
  2. Ve a Plugins → Añadir nuevo → Subir plugin.
  3. Selecciona el archivo ZIP descargado.
  4. Activa el plugin.

También puedes activarlo mediante WP-CLI:

wp plugin activate r2-uploads

Releases:

https://github.com/carnaval-studio/r2-uploads/releases

Configurando Cloudflare R2

Antes de utilizar el plugin necesitarás crear un bucket y generar credenciales de acceso.

Crear un bucket

Desde el panel de Cloudflare:

  1. Ve a R2.
  2. Crea un nuevo bucket.
  3. Define un nombre para el bucket.

Por ejemplo:

my-bucket

Crear credenciales API

Luego:

  1. Ve a Manage API Tokens.
  2. Crea un token con permisos para R2.
  3. Guarda el Access Key ID.
  4. Guarda el Secret Access Key.

También necesitarás tu Account ID de Cloudflare y agregar un dominio personalizado a tu bucket.

Configurando R2 Uploads

Una vez instalado el plugin, agrega las siguientes constantes a tu archivo wp-config.php:

define( 'R2_UPLOADS_BUCKET', 'my-bucket' );
define( 'R2_UPLOADS_ACCOUNT_ID', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'R2_UPLOADS_KEY', 'access-key-id' );
define( 'R2_UPLOADS_SECRET', 'secret-access-key' );
define( 'R2_UPLOADS_PUBLIC_URL', 'https://media.example.com' );

Configuración opcional

Región

Cloudflare R2 utiliza auto por defecto:

define( 'R2_UPLOADS_REGION', 'auto' );

Normalmente no es necesario modificar este valor.

Una vez configurado, puedes verificar que todo funcione correctamente:

wp r2-uploads verify

Administración mediante WP-CLI

Una de las ventajas de R2 Uploads es que incluye comandos WP-CLI para administrar y verificar el almacenamiento directamente desde la terminal.

Esto resulta especialmente útil para sitios grandes, procesos de automatización y entornos de despliegue modernos.

Verificar la configuración

wp r2-uploads verify

Listar archivos

wp r2-uploads ls

Listar una ruta específica:

wp r2-uploads ls uploads/2026/06

Copiar archivos

wp r2-uploads cp <from> <to>

Ejemplo:

wp r2-uploads cp uploads/logo.png backup/logo.png

Eliminar archivos

Eliminar un archivo:

wp r2-uploads rm uploads/logo.png

Eliminar mediante expresiones regulares:

wp r2-uploads rm uploads --regex='.*\.tmp$'

Habilitar la integración

wp r2-uploads enable

Deshabilitar la integración

wp r2-uploads disable

Migrando medios existentes

Si tu sitio ya tiene archivos almacenados localmente en:

wp-content/uploads

puedes migrarlos directamente a Cloudflare R2 utilizando el comando WP-CLI incluido en R2 Uploads.

Sintaxis

wp r2-uploads upload-directory <from> [<to>] [--concurrency=<concurrency>] [--verbose]

Ejemplos

Migrar toda la carpeta uploads:

wp r2-uploads upload-directory wp-content/uploads

Migrar a una ruta específica dentro del bucket:

wp r2-uploads upload-directory wp-content/uploads uploads

Incrementar concurrencia:

wp r2-uploads upload-directory wp-content/uploads uploads --concurrency=20

Mostrar información detallada:

wp r2-uploads upload-directory wp-content/uploads uploads --concurrency=20 --verbose

Antes de ejecutar la migración recomiendo:

  • Realizar un respaldo completo.
  • Verificar la configuración de R2.
  • Probar primero en staging.
  • Validar permisos del bucket.

Dependiendo de la cantidad de archivos, el proceso puede tardar desde unos minutos hasta varias horas.

Arquitecturas desacopladas para WordPress

Esta es probablemente la razón más importante por la que utilizo R2.

Cuando separas:

  • Aplicación WordPress
  • Base de datos
  • Redis
  • Almacenamiento de medios

obtienes una infraestructura mucho más flexible.

Por ejemplo:

  • Puedes mover WordPress entre AWS, Hetzner, DigitalOcean o cualquier otro proveedor sin mover cientos de gigabytes de archivos.
  • Puedes reemplazar servidores sin afectar el contenido multimedia.
  • Puedes escalar horizontalmente con mayor facilidad.
  • Puedes reducir considerablemente los tiempos de recuperación ante fallos.

En muchos proyectos modernos, WordPress deja de ser una aplicación monolítica y pasa a formar parte de una arquitectura compuesta por varios servicios especializados.

R2 encaja perfectamente en ese modelo.

Casos donde R2 Uploads tiene más sentido

R2 Uploads resulta especialmente útil para:

  • Plataformas educativas.
  • Sitios de membresía.
  • Comunidades BuddyBoss.
  • Sitios con miles de imágenes.
  • Proyectos con múltiples servidores.
  • Infraestructuras basadas en Cloudflare.

Probablemente no sea necesario para:

  • Blogs personales pequeños.
  • Sitios corporativos simples.
  • Proyectos con muy poco contenido multimedia.

Roadmap

R2 Uploads es un proyecto open source que continuará evolucionando.

Algunas áreas que me gustaría explorar incluyen:

  • Comandos adicionales de WP-CLI.
  • Mejor documentación.
  • Automatización de configuraciones comunes.
  • Compatibilidad con más escenarios de despliegue.
  • Herramientas de sincronización avanzadas.

Las contribuciones y sugerencias son bienvenidas.

Conclusión

Cloudflare R2 se ha convertido en una de mis opciones favoritas para almacenar archivos en proyectos WordPress modernos.

La combinación de:

  • Compatibilidad con S3.
  • Cero cargos por salida.
  • Excelente rendimiento.
  • Integración con el ecosistema Cloudflare.

lo convierten en una alternativa muy atractiva frente a otras soluciones de almacenamiento de objetos.

R2 Uploads nace con un objetivo sencillo: facilitar todavía más esa integración y ofrecer una experiencia enfocada específicamente en Cloudflare R2, manteniendo la simplicidad que hizo tan popular a S3 Uploads.

Si ya utilizas Cloudflare y estás buscando una forma más eficiente de gestionar los archivos multimedia de WordPress, te invito a probarlo.

Recursos

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *