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 editoria
Go to file
Brasdrive d4087f5299 2.0.2 2025-11-06 22:47:44 -04:00
config 2.0.0 2025-11-06 19:15:34 -04:00
src 2.0.2 2025-11-06 22:47:44 -04:00
.gitignore 2.0.0 2025-11-06 19:15:34 -04:00
README.md 2.0.0 2025-11-06 19:15:34 -04:00
composer.json 2.0.0 2025-11-06 19:15:34 -04:00
flysystem-offload.php 2.0.0 2025-11-06 19:15:34 -04:00

README.md

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 wrapper fly:// 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

  1. Clona este repositorio dentro del árbol de tu sitio: git clone https://git.brasdrive.com.br/Brasdrive/flysystem-offload.git
  2. Entra en la carpeta del plugin y ejecuta Composer para traer las dependencias:
cd flysystem-offload
composer install --no-dev --optimize-autoloader
  1. 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).
  2. 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/plugins para que esté disponible desde el primer arranque.

  • Extensión Redis habilitada, WP-CLI disponible y módulos rewrite, headers, expires, deflate activos.

    Nota sobre Composer

    En entornos que no usan Docker, asegúrate de ejecutar <plugin>/composer install antes de empaquetar o desplegar. WordPress no ejecuta Composer automáticamente durante la activación de un plugin.

    Configuración inicial (S3 / compatible)

  1. En el escritorio de WordPress abre Ajustes > Flysystem Offload.
  2. Selecciona Amazon S3 / Compatible.
  3. 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)
  1. 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_dir cambian basedir a fly://....

  • El stream wrapper reenvía lecturas/escrituras a Flysystem y este al cliente S3.

  • wp_get_attachment_url reescribe 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

  1. Haz fork y crea una rama (feature/tu-feature).
  2. Sigue los WordPress Coding Standards.
  3. Ejecuta tests si están disponibles y actualiza la documentación si corresponde.
  4. Abre un Pull Request describiendo el cambio.

Desarrollado por Brasdrive.