WP Manifestindependent plugin directory
manifest / updates / studio-sync-sh

Studio Sync Self-Hosted

Professional file and database sync between WordPress Studio (local) and self-hosted servers

by Fede Padilla · github.com/rosamajira-cell/studio-sync-sh · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/rosamajira-cell/studio-sync-sh/archive/refs/heads/main.zip

Readme

Studio Sync Self-Hosted (studio-sync-sh)

Plugin de WordPress para sincronizar archivos y base de datos de manera profesional, bidireccional y autónoma entre WordPress Studio (entorno local en el ordenador del desarrollador) y servidores WordPress self-hosted (staging o producción).

Replicando fielmente el flujo y la experiencia de usuario de WordPress Studio Sync, pero sin intermediarios ni dependencias de WordPress.com, Jetpack, Pressable o VaultPress.


🚀 Características Principales

  • Conexión Criptográfica Segura: Handshake con tokens efímeros de un solo uso y autenticación mediante firmas digitales HMAC-SHA256 en cada petición REST.
  • Protección Anti-Replay y Skew: Control estricto de nonces únicos y verificación de desfase temporal (reloj de servidor).
  • Sincronización Selectiva o Total:
    • Árbol jerárquico interactivo de wp-content/.
    • Selección individual de Plugins, Temas, Subidas (Uploads por año/mes) y Must-Use Plugins.
  • Soporte .deployignore: Respeta reglas tipo .gitignore en la raíz del sitio, además de exclusiones fijas de seguridad (.git, node_modules, cache, debug.log, backups y temporales).
  • Base de Datos y Search & Replace Preciso:
    • Volcado SQL rápido (vía mysqldump CLI con fallback automático a streaming PHP por lotes).
    • Search & Replace recursivo que recalcula con precisión longitudes de strings serializados de PHP (s:XX:"...") y JSON, preservando la integridad de los datos.
    • Opciones de exclusión de tablas (pedidos WooCommerce, transitorios, logs, colas de Action Scheduler) y opción para preservar usuarios del destino.
  • Transferencia por Lotes (Chunked Streaming): Paquetes divididos en bloques de 20 a 50 MB con validación de checksum SHA-256 para prevenir caídas por límites de memoria o tiempo de ejecución.
  • Copias de Seguridad Automáticas y Rollback: Snapshot previo en el destino antes de cualquier modificación. Si ocurre cualquier fallo, se revierte automáticamente el sitio a su estado anterior.
  • Panel WP-Admin en Español: Interfaz moderna, clara y pulida con avisos de peligro en rojo solo ante reemplazos de base de datos y consola de progreso en tiempo real.

📋 Requisitos del Sistema

  • PHP: 8.1 o superior (con extensiones curl, zip, openssl, json, mbstring).
  • WordPress: 6.5 o superior.
  • Permisos: Usuario con perfil de Administrador (manage_options).

📦 Instalación

  1. Descarga o clona la carpeta studio-sync-sh dentro del directorio wp-content/plugins/ de ambos sitios:
    • En tu WordPress local (WordPress Studio).
    • En tu WordPress remoto (servidor Staging o Producción).
  2. En ambos paneles de administración, ve a Plugins → Plugins instalados y activa Studio Sync Self-Hosted.
  3. Verás un nuevo menú lateral llamado Studio Sync.

🔗 Guía de Conexión (Handshake)

Paso 1: En el Servidor Remoto (Destino/Staging/Producción)

  1. Ve a Studio Sync → Conexiones.
  2. En la tarjeta Generar Token para este Sitio, haz clic en "Generar Nuevo Token de Conexión".
  3. Copia la URL del sitio y el Token de conexión (comienza por stk_...). Este token es de un solo uso y caduca en 15 minutos.

Paso 2: En tu WordPress Local (WordPress Studio)

  1. Ve a Studio Sync → Conexiones.
  2. En Conectar a un Sitio Remoto, pega la URL del servidor y el Token.
  3. Opcionalmente asigna un nombre (ej. "Servidor Staging" o "Producción").
  4. Haz clic en "Conectar Sitio".
  5. ¡Listo! Ambos extremos habrán intercambiado de forma segura su clave secreta compartida (shared_secret).

🔄 Cómo Sincronizar

1. PULL (Traer cambios desde el Servidor Remoto hacia Local)

  1. En tu WordPress local, ve a Studio Sync → Sincronizar.
  2. Haz clic en el botón "Iniciar Pull...".
  3. En el modal de configuración:
    • Selecciona si deseas "Todos los archivos" o "Archivos específicos" (marcando los plugins, temas o uploads que necesites).
    • Marca "Incluir base de datos" si deseas volcar y reemplazar la base de datos local con la del servidor remoto (las URLs se adaptarán automáticamente a tu entorno local).
  4. Haz clic en "Iniciar Sincronización".
  5. Observa la barra de progreso y la consola de logs en tiempo real.

2. PUSH (Enviar cambios locales hacia el Servidor Remoto)

  1. En tu WordPress local, ve a Studio Sync → Sincronizar.
  2. Haz clic en el botón "Iniciar Push...".
  3. Selecciona los componentes desarrollados (ej. un tema específico o un plugin).
  4. Si seleccionas "Incluir base de datos", el sistema mostrará un aviso de seguridad y requerirá confirmación explícita para evitar sobrescrituras accidentales en producción.
  5. El servidor remoto creará una copia de seguridad previa de forma automática antes de aplicar los cambios.

🛡️ Backups y Restauración (Rollback)

  • Antes de aplicar cualquier cambio en destino, Studio Sync genera un snapshot en wp-content/studio-sync-sh-backups/{job_id}/.
  • Reversión Automática: Si la transferencia o importación falla en cualquier paso, el sistema ejecuta un rollback inmediato restaurando los archivos y la base de datos originales.
  • Restauración Manual: Ve a la pestaña Backups en cualquier momento y haz clic en "Restaurar" en cualquiera de las copias guardadas.

🧪 Pruebas Automatizadas

El plugin incluye una suite completa de pruebas unitarias para validar HMAC, .deployignore, Search & Replace y manejo de tokens:

php tests/run_tests.php

📄 Licencia

Este plugin está bajo licencia GPL v2 o posterior.

Read the full README on GitHub →