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/uploadsPara 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:
- WordPress procesa el archivo normalmente.
- El archivo se almacena en Cloudflare R2.
- WordPress guarda las referencias habituales en la base de datos.
- 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.
- Descarga la última versión desde GitHub.
- Ve a Plugins → Añadir nuevo → Subir plugin.
- Selecciona el archivo ZIP descargado.
- Activa el plugin.
También puedes activarlo mediante WP-CLI:
wp plugin activate r2-uploadsReleases:
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:
- Ve a R2.
- Crea un nuevo bucket.
- Define un nombre para el bucket.
Por ejemplo:
my-bucketCrear credenciales API
Luego:
- Ve a Manage API Tokens.
- Crea un token con permisos para R2.
- Guarda el Access Key ID.
- 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 verifyAdministració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 verifyListar archivos
wp r2-uploads lsListar una ruta específica:
wp r2-uploads ls uploads/2026/06Copiar archivos
wp r2-uploads cp <from> <to>Ejemplo:
wp r2-uploads cp uploads/logo.png backup/logo.pngEliminar archivos
Eliminar un archivo:
wp r2-uploads rm uploads/logo.pngEliminar mediante expresiones regulares:
wp r2-uploads rm uploads --regex='.*\.tmp$'Habilitar la integración
wp r2-uploads enableDeshabilitar la integración
wp r2-uploads disableMigrando medios existentes
Si tu sitio ya tiene archivos almacenados localmente en:
wp-content/uploadspuedes 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/uploadsMigrar a una ruta específica dentro del bucket:
wp r2-uploads upload-directory wp-content/uploads uploadsIncrementar concurrencia:
wp r2-uploads upload-directory wp-content/uploads uploads --concurrency=20Mostrar información detallada:
wp r2-uploads upload-directory wp-content/uploads uploads --concurrency=20 --verboseAntes 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
- Repositorio: https://github.com/carnaval-studio/r2-uploads
- Releases: https://github.com/carnaval-studio/r2-uploads/releases
- Artículo anterior: https://oscarhugopaz.com/como-usar-cloudflare-r2-con-wordpress/
Prueba Plak
Prueba cualquiera de los planes de Digital Ocean de Plak gratis por 3 días. Dale a tu sitio web la velocidad que sus usuarios merecen.
Deja una respuesta