Hecho con Chinaski

El Interruptor de Air-gap

Una sola variable de entorno, CHINASKI_AIRGAP=1, cambia la postura de red de la aplicación. Establécela en el archivo de entorno de la instancia y reinicia. La línea del log de arranque dirá airgap: ENABLED (el instalador escribe el interruptor por ti por defecto; las instalaciones nuevas lo muestran activo desde el primer arranque).

La semántica de todo-o-nada

El interruptor apaga de una vez toda la lista de funciones salientes. No es un toggle por característica. Deshabilita, de un vistazo:

  • Webhooks (build, form, post, publish) nunca se entregan, y el worker de reintentos automáticos se detiene.
  • Los deploys desde el CMS: las rutas de push por rsync y S3 nunca se ejecutan.
  • La verificación de Cloudflare Turnstile se omite (registrada como tal), y el widget de Turnstile se elimina de las páginas de login y de formularios incluso si las claves están guardadas en los ajustes.
  • El correo del admin: cada envío (notificaciones de revisión, correo de aprobación/rechazo, avisos de build) devuelve no-enviado.
  • Las comprobaciones del manifiesto de actualizaciones no se realizan incluso si hay una URL de manifiesto configurada. La característica queda inerte hasta que se desactive el air-gap.
  • Las cargas de backup a Spaces no ocurren; los backups se siguen creando (y conservando) localmente.

Lo que sigue funcionando

  • El propio CMS: edición de contenido, uploads, menús, ajustes, UI de administración.
  • Builds estáticos con un matiz: los builds en air-gap son aún más estrictos con las referencias externas. Los analytics de GA4/GTM se eliminan de las plantillas incluso cuando están configurados, y cualquier código de snippet que haga referencia a una URL externa se elimina de las páginas construidas para que nada cargue desde un CDN.
  • Los backups locales siguen funcionando: el backup diario del sistema (DB + media), los backups tar.gz desde la app, la verificación, los flujos de restauración. Ninguno necesita conectividad. Solo queda fuera la copia externa opcional a Spaces.
  • Los formularios y el estado local siguen funcionando. Las submissions se almacenan como siempre; solo pausan la entrega de correo y la entrega de webhooks.

Una nota: el interruptor es firmado/completo, unidireccional y de una sola vez; reactivar una sola función saliente implica apagar el interruptor por completo (y luego elegir qué características usar).

Lee este sitio en