Hecho con Chinaski

Soberanía

Chinaski está construido para correr en tu máquina, bajo tu control, para siempre, con o sin internet. El proyecto lo dice en una línea: self-hosted, sin telemetría, sin phone-home, corre en air-gap. Esta página explica qué significa en la práctica: qué corre en tu servidor, qué nunca ocurre después de instalar, cómo desplegar en un lugar sin conectividad alguna, y dónde están los límites honestos.

Qué cubre "self-hosted"

  • Cada dependencia está o en el gestor de paquetes de tu sistema operativo (Perl, SQLite, el servidor web) o en la propia aplicación. No hay Node, no hay runtime de Python, no hay orquestación de contenedores que seguir para ponerte al día con el calendario de releases de alguien más.
  • Todo el almacenamiento es local: un archivo SQLite para todo el estado, media como archivos en disco, salida estática como archivos que tu servidor web sirve directamente. El respaldo es una copia de archivo (o el respaldo programado integrado).
  • El core tiene licencia MIT. Los add-ons comerciales planeados (un nivel Pro) están diseñados para usar archivos de licencia firmados localmente, sin servidores de validación externos, deliberadamente compatibles con air-gap.

Qué cubre "no phone-home"

Después de la instalación, Chinaski no hace llamadas de red por su cuenta:

  • Ninguna telemetría se recoge ni sale del sistema, no existe mecanismo para enviarla.
  • Ninguna validación de licencia contra un servidor externo.
  • Ninguna fuente, icono o script de CDN va incrustado en tus páginas.
  • La feature de verificación de versión integrada solo se conecta cuando le das explícitamente una URL de manifest de actualizaciones y el modo air-gap está apagado, así que incluso el chequeo de actualizaciones viene apagado por defecto.

Todo lo orientado hacia afuera se divide entre feature que eliges activar (SMTP para notificaciones por correo, webhooks, respaldos push programados a un object store en la nube, chequeo de actualizaciones), y el modo air-gap desactiva todas a la vez.

El switch de air-gap y la instalación por defecto

Un único ajuste CHINASKI_AIRGAP=1 hace que el servidor rechace toda conexión saliente: los webhooks (form/post/publish/build) no se despachan, el despliegue por rsync o S3 no corre, la verificación de Cloudflare Turnstile se salta y el widget se quita de las páginas de login y de formularios, las notificaciones por correo del admin no se envían, y los chequeos de actualizaciones no ocurren. Los builders también eliminan cualquier código de snippet que referencie URLs externas, así que nada viaja desde un CDN. Las instalaciones frescas escriben este switch en el entorno por defecto y te lo avisan al momento de instalar.

Tus secretos también se quedan en tu servidor: la contraseña SMTP, los secretos de webhooks, las llaves de Spaces y similares se guardan cifrados en la base de datos local bajo una clave derivada de tu env var CHINASKI_SECRET, la aplicación nunca escribe credenciales en texto plano al disco.

Instalar un site sin internet en absoluto

Para máquinas que nunca tocan la red:

  1. En una máquina conectada, construye un bundle offline: empaqueta el código fuente de la aplicación, todos los tarballs de módulos de CPAN, un instalador de módulos incluido y el script de instalación, más un archivo de checksum SHA-256 al lado. Copia ambos a un medio removible.
  2. En la máquina objetivo, corre el instalador desde el bundle. Instala los módulos Perl solo desde el bundle ("no outbound connections are made"). Solo un puñado de paquetes de sistema (perl, make, gcc, sqlite3, librerías de imagen) necesita venir de la caché de tu propia distribución o de un set pre-descargado, en placas ARM, descarga las librerías de imagen explícitamente o el procesador de imágenes no compilará.
  3. Opcionalmente sáltate systemd por completo para setups de un solo servidor (--no-service); el env file que el instalador escribe ya contiene el session secret y el modo air-gap activado.

Modo air-gap sin certificados, para siempre

Para despliegues donde el DNS, las autoridades de certificación y la infraestructura cloud simplemente ya no existen, Chinaski documenta un modo permanente: servir la interfaz de administración directamente por HTTP con la configuración incluida, sin reverse proxy, sin certificados TLS que adquirir, renovar o que caduquen. La garantía de "funciona para siempre" es el punto.

También maneja correctamente las dependencias habituales del reverse proxy sin tenerlo: la detección de IP de cliente y el rate limiting hacen fallback a las direcciones TCP reales (los headers de proxy falsificados se ignoran cuando no hay proxy enfrente), así que los lockouts y el throttling funcionan sin configuración.

Lo que la soberanía no significa

  • No significa cero trabajo: las actualizaciones siguen siendo tu tarea, un proceso deliberado hecho a mano desde una URL de manifest (que puedes dejar sin configurar para siempre sin ningún impacto).
  • Las features de conectividad (envío de correo, respaldos en la nube, integraciones de webhooks) necesitan conectividad cuando las activas, solo que nunca se activan solas.
  • El set de paquetes viene de Debian stable; mantenerlo así es una elección operativa que te pertenece, como los respaldos.
Lee este sitio en