← MasterGantt
Infraestructura

Guía de despliegue del worker MasterGantt Sync

10 min de despliegue — Abril 2026

Arquitectura

El worker utiliza Cloudflare Durable Objects para el WebSocket en tiempo real. Cada «sala» de colaboración = 1 Durable Object con conexiones WebSocket persistentes. Los cambios se transmiten al instante (<1 segundo) a todos los colaboradores.

El servidor solo ve blobs cifrados con AES-256-GCM — sin conocimiento de los datos.

Requisitos previos

Despliegue inicial (10 minutos)

1. Instalar Wrangler (CLI de Cloudflare)

npm install -g wrangler

2. Iniciar sesión

wrangler login

→ Abre el navegador, haz clic en «Allow»

3. Crear el namespace KV (almacenamiento de respaldo)

cd worker/
wrangler kv namespace create ROOMS

→ El comando muestra un ID. Actualiza wrangler.toml:

[[kv_namespaces]]
binding = "ROOMS"
id = "TU_ID_AQUI"

4. Desplegar el worker

wrangler deploy

→ Muestra la URL del worker: https://mg-sync.TU-SUBDOMINIO.workers.dev

5. Probar

curl "https://mg-sync.TU-SUBDOMINIO.workers.dev/room/test/presence?client=test1"
# Debe devolver: {"count":0}

6. Configurar MasterGantt

La URL del worker ya está rellenada en MasterGantt (Configuración → Colaboración → Servidor). Para utilizar tu propio worker, sustituye la URL.

Actualización del worker

Tras modificar sync-worker.js:

cd worker/
wrangler deploy

Eso es todo — el despliegue tarda unos 15 segundos.

Configuración actual (referencia)

Cuenta Cloudflare  : steevebecker
Subdominio         : mastergantt.workers.dev
URL del worker     : https://mg-sync.mastergantt.workers.dev
ID namespace KV    : c2fe1889c94b4d55ad68f9d244bd812f
Plan               : Workers Paid ($5/mes)

Archivos

ArchivoFunción
sync-worker.jsWorker principal + Durable Object SyncRoom
wrangler.tomlConfiguración de despliegue (KV, DO bindings)

Arquitectura técnica

Cliente A (navegador)        Cloudflare Worker         Cliente B (navegador)
     |                            |                          |
     |-- WebSocket connect ------>|                          |
     |                            |<-- WebSocket connect ----|
     |                            |                          |
     |-- WS: blob cifrado ------->|                          |
     |                       DO broadcast                    |
     |                            |---> WS: blob cifrado --->|
     |                            |         descifra + merge
     |                            |                          |

Costes

ComponentePlan gratuitoWorkers Paid ($5/mes)
Solicitudes de Worker100k/día10M/día
Durable Objects0,15 $/millón de solicitudes
Mensajes WebSocket0,50 $/millón de mensajes
Lecturas KV100k/díaIlimitadas
Escrituras KV1k/díaIlimitadas

Estimación realista: 10 usuarios activos × 8 h = ~0,05 $/día = ~1,50 $/mes de coste adicional.

Dominio personalizado (opcional)

Para utilizar sync.mastergantt.com:

  1. Panel de Cloudflare → Workers → mg-sync → Triggers
  2. Añadir Custom Domain: sync.mastergantt.com
  3. Cloudflare gestiona DNS y SSL automáticamente

Para clientes que quieren su propia instancia

Proporciona la carpeta worker/ — ellos la despliegan en su propia cuenta de Cloudflare. El worker solo ve blobs cifrados, ningún dato en claro.

Solución de problemas

ProblemaSolución
500 Internal Errorwrangler tail para ver los logs en tiempo real
WebSocket no se conectaComprueba que el plan sea Workers Paid (DO requerido)
Blobs no recibidosComprueba que los dos clientes estén en la misma sala/contraseña
«KV put limit exceeded»Cambia al plan Paid o espera al reinicio diario
Fallo en el desplieguewrangler login para renovar el token
🔒 Soberanía de los datos: Ya sea alojado en Cloudflare o en tu propia cuenta, el worker nunca ve tus datos en claro. La clave de cifrado AES-256-GCM es propiedad exclusiva de los colaboradores — no del servidor.

¿Listo para probar la colaboración?

El servidor por defecto está listo para usar. Desplegar tu propio worker solo es útil para requisitos específicos de soberanía.

Descargar MasterGantt