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
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.zipReadme
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.
- Árbol jerárquico interactivo de
- Soporte
.deployignore: Respeta reglas tipo.gitignoreen 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
mysqldumpCLI 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.
- Volcado SQL rápido (vía
- 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
- Descarga o clona la carpeta
studio-sync-shdentro del directoriowp-content/plugins/de ambos sitios:- En tu WordPress local (WordPress Studio).
- En tu WordPress remoto (servidor Staging o Producción).
- En ambos paneles de administración, ve a Plugins → Plugins instalados y activa Studio Sync Self-Hosted.
- 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)
- Ve a Studio Sync → Conexiones.
- En la tarjeta Generar Token para este Sitio, haz clic en "Generar Nuevo Token de Conexión".
- 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)
- Ve a Studio Sync → Conexiones.
- En Conectar a un Sitio Remoto, pega la URL del servidor y el Token.
- Opcionalmente asigna un nombre (ej. "Servidor Staging" o "Producción").
- Haz clic en "Conectar Sitio".
- ¡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)
- En tu WordPress local, ve a Studio Sync → Sincronizar.
- Haz clic en el botón "Iniciar Pull...".
- 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).
- Haz clic en "Iniciar Sincronización".
- Observa la barra de progreso y la consola de logs en tiempo real.
2. PUSH (Enviar cambios locales hacia el Servidor Remoto)
- En tu WordPress local, ve a Studio Sync → Sincronizar.
- Haz clic en el botón "Iniciar Push...".
- Selecciona los componentes desarrollados (ej. un tema específico o un plugin).
- 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.
- 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.