5.0 KiB
Flysystem Offload — Almacenamiento universal para WordPress
Flysystem Offload sustituye el sistema de archivos local de WordPress por un backend remoto operado con Flysystem v3. Los medios se suben, sirven y eliminan directamente desde el proveedor seleccionado (S3 y compatibles en la primera versión) sin modificar el flujo editorial.
Características
-
Proveedor seleccionable: Amazon S3 y endpoints compatibles (MinIO, DigitalOcean Spaces, Wasabi, etc.).
-
Integración transparente: hooks de
upload_dir,wp_get_attachment_url, stream wrapperfly://y borrado sincronizado. -
Arquitectura modular: preparada para añadir SFTP, WebDAV y otros adaptadores en iteraciones futuras.
-
Panel de ajustes: selector de proveedor y credenciales gestionadas desde la administración.
Requisitos
-
PHP 8.0+
-
WordPress 6.0+
-
Extensiones PHP:
curl,mbstring,xml -
Acceso a Composer durante la construcción del paquete (o usar la imagen Docker proporcionada)
-
Credenciales válidas de S3 o servicio compatible
Instalación
Opción A · Proyecto existente de WordPress
- Clona este repositorio dentro del árbol de tu sitio:
git clone https://git.brasdrive.com.br/Brasdrive/flysystem-offload.git - Entra en la carpeta del plugin y ejecuta Composer para traer las dependencias:
cd flysystem-offload
composer install --no-dev --optimize-autoloader
- Empaqueta el plugin con la carpeta
vendor/incluida y súbelo a/wp-content/plugins/del sitio que corresponda (vía SCP, rsync o panel de hosting). - Activa Flysystem Offload desde Plugins > Plugins instalados en el escritorio de WordPress.
Opción B · Imagen Docker (multi-stage)
El repositorio incluye un Dockerfile que construye una imagen basada en wordpress:6.8.3-php8.4-apache y prepara el plugin en tiempo de build:
# Etapa 1: composer:2.8.12 instala las dependencias en /app/wp-content/plugins/flysystem-offload
# Etapa 2: copia el plugin con vendor/ dentro de /usr/src/wordpress y /var/www/html
# Instala redis, WP-CLI y algunas utilidades
# Habilita módulos de Apache y carga configuraciones personalizadas de PHP/Apache
Pasos para usarla:
# Desde la raíz del repositorio
docker build -t flysystem-offload-wp .
# Arranca el contenedor exponiendo el puerto 80 (puedes convertirlo en un stack Compose si lo prefieres)
docker run --rm -p 8080:80 flysystem-offload-wp
La imagen resultante ya contiene:
-
El plugin con todas sus dependencias PHP en
/usr/src/wordpress/wp-content/plugins/flysystem-offload. -
Copia pre-sincronizada en
/var/www/html/wp-content/pluginspara que esté disponible desde el primer arranque. -
Extensión Redis habilitada, WP-CLI disponible y módulos
rewrite,headers,expires,deflateactivos.Nota sobre Composer
En entornos que no usan Docker, asegúrate de ejecutar
<plugin>/composer installantes de empaquetar o desplegar. WordPress no ejecuta Composer automáticamente durante la activación de un plugin.Configuración inicial (S3 / compatible)
- En el escritorio de WordPress abre Ajustes > Flysystem Offload.
- Selecciona Amazon S3 / Compatible.
- Completa los campos:
- Access Key
- Secret Key (permanece oculta tras guardarla)
- Región (
us-east-1,eu-west-1, etc.) - Bucket
- Prefijo opcional (subcarpeta dentro del bucket)
- Endpoint personalizado (solo para servicios compatibles con S3)
- URL CDN opcional (sustituye la URL pública del bucket por tu dominio CDN)
- Guarda los cambios. El plugin reconstruye automáticamente el filesystem y el stream wrapper.
Prefijo base: Puedes definir un prefijo global (
wordpress/uploads/) que se añadirá a todas las rutas remotas antes de delegar en el adaptador.
Flujo de funcionamiento
-
WordPress sigue usando
wp_handle_upload(). -
Los filtros de
upload_dircambianbasedirafly://.... -
El stream wrapper reenvía lecturas/escrituras a Flysystem y este al cliente S3.
-
wp_get_attachment_urlreescribe la URL base con el dominio del bucket o el CDN configurado. -
Al eliminar un adjunto, se borran el archivo principal y sus derivadas desde el almacenamiento remoto.
Roadmap inmediato
-
Campos y validaciones para SFTP y WebDAV.
-
Health check vía WP-CLI.
-
Herramientas de migración para copiar la biblioteca existente al proveedor remoto.
-
Adaptadores adicionales (GCS, Azure Blob) y conectores OAuth (Drive, OneDrive, Dropbox).
Contribuir
- Haz fork y crea una rama (
feature/tu-feature). - Sigue los WordPress Coding Standards.
- Ejecuta tests si están disponibles y actualiza la documentación si corresponde.
- Abre un Pull Request describiendo el cambio.
-
Documentación: Este archivo.
-
Issues/Contacto: jdavidcamejo@gmail.com
Licencia
GPL v2. Consulta LICENSE para más detalles.
Desarrollado por Brasdrive.