Saltar al contenido
cloud-webv0.1.0
Documentación

El sitio de Zonda Cloud (zondacloud.com)

El sitio público de Zonda Cloud es un directorio de archivos planos, apps/zondacloud/ (HTML y CSS, sin construcción, sin dependencias y sin JavaScript). Es independiente del sitio de cloud-web (cloudweb.zondacloud.com: instaladores y documentación), que no cambia.

Producción corre en Cloudflare, como un Worker de solo assets (sin código de Worker): la zona zondacloud.com ya está ahí, así que el DNS se crea solo y el sitio no depende de ninguna máquina propia. La configuración está en deploy/zondacloud/wrangler.jsonc (fuera del directorio del sitio, para que no se publique con él). Las cabeceras de seguridad y la caché están en apps/zondacloud/_headers.

Desplegarlo

Opción 1 (recomendada): Workers Builds, sin credenciales en el CI

Cloudflare conecta el repositorio de GitLab (gitlab.com; las instancias autoalojadas no se admiten) y despliega en cada push.

  1. En el panel de Cloudflare: Workers & Pages → Create → Import a repository y elegí cloud-web1/cloud-web.
  2. Configuración del build (Settings → Build):
    • Root directory: vacío (la raíz del repositorio).
    • Build command: vacío. El sitio no se construye; un build de la raíz correría todo el monorepo para nada.
    • Deploy command: npx wrangler deploy --config deploy/zondacloud/wrangler.jsonc. El --config explícito es necesario: sin él, wrangler corre en la raíz de un workspace y falla con "application detection logic has been run in the root of a workspace".
  3. En Build watch paths limitá el despliegue a apps/zondacloud/* y deploy/zondacloud/* para que los demás pushes del repositorio no lo disparen.
  4. Primer despliegue: Cloudflare enlaza zondacloud.com y www.zondacloud.com (crea los registros DNS). Si ya hay un registro con ese nombre, borralo antes: el enlace no pisa registros.

Opción 2: wrangler deploy desde el CI

Sirve si preferís controlar cuándo se despliega. Hace falta un token de API de Cloudflare con permiso de editar Workers (Account → Workers Scripts → Edit) y el ID de la cuenta, cargados en Settings → CI/CD → Variables como CLOUDFLARE_API_TOKEN y CLOUDFLARE_ACCOUNT_ID, protegidas y enmascaradas (nunca en el repositorio). El job es una línea sobre una imagen de Node:

npx wrangler@4 deploy --config deploy/zondacloud/wrangler.jsonc

Para probar la configuración sin desplegar ni usar credenciales: npx wrangler@4 deploy --dry-run --config deploy/zondacloud/wrangler.jsonc.

www al dominio sin www

www.zondacloud.com queda enlazado al mismo Worker, y la URL canónica de la página es https://zondacloud.com/. Para que www redirija, creá una regla en la zona (Rules → Redirect Rules → Create rule → Single Redirect):

  • Cuando: el nombre de host es www.zondacloud.com.
  • Entonces: redirección dinámica a concat("https://zondacloud.com", http.request.uri.path) conservando la cadena de consulta, código 301.

(_redirects no distingue por nombre de host, por eso va como regla de la zona.)

Comprobar

curl -sI https://zondacloud.com | head -5          # 200, y las cabeceras de _headers (content-security-policy, x-content-type-options)
curl -sI https://www.zondacloud.com | head -3      # 301 hacia https://zondacloud.com/
curl -sI https://cloudweb.zondacloud.com/install.sh | head -1   # el instalador de cloud-web sigue donde estaba

Antes de publicar un cambio del sitio

node scripts/check-zondacloud.mjs      # axe, contraste AA, metadatos, cabeceras, contenido veraz, sin scripts ni recursos remotos, peso
scripts/zondacloud/og.sh               # si cambió el titular: vuelve a generar apps/zondacloud/og.png (Chromium + ImageMagick o Pillow)

El sitio solo puede prometer lo que el producto hace hoy: la comprobación rechaza precios, planes, niveles de servicio, regiones y testimonios.