Variables de Entorno
Chinaski se configura mediante un puñado de variables de entorno, la ubicación de la base de datos, el directorio de output estático, el security secret y algunas overrides opcionales. El instalador las escribe por ti; esta página es la referencia completa para cuando necesites cambiarlas a mano.
Dónde establecerlas
- Instalaciones de instancia única:
/etc/chinaski<N>/env(el archivo que la unidad systemdchinaski@<N>carga). Mantén el archivo en modo0600. - El servidor MCP:
/etc/chinaski<N>/mcp-env, leído porchinaski-mcp@<N>. - Script de backup y script de deploy: en el entorno al momento de la invocación.
- El archivo creado viene con
CHINASKI_SECRETestablecida yCHINASKI_AIRGAP=1activo.
Requeridas
| Variable | Qué hace | Default |
|---|---|---|
CHINASKI_SECRET | Key de firma de sesiones, y la key usada para cifrar los secrets almacenados (contraseña SMTP) en la base de datos. El CMS se niega a arrancar sin ella. El instalador genera una con openssl rand -hex 32. | none |
CHINASKI_DB | Ruta del archivo de base de datos SQLite. | <app root>/chinaski.db |
CHINASKI_OUTPUT | Directorio en el que escribe el builder estático. | <app root>/output |
LISTEN_URL | Dirección a la que se enlaza el daemon del CMS (usada por la unidad systemd). Debe ser loopback (p. ej. http://127.0.0.1:3001) en producción. En combinación con CHINASKI_SECRET, esto vive en /etc/chinaski<N>/env. | none |
Cambiar CHINASKI_SECRET invalida las sesiones de admin (todos quedan deslogueados) y vuelve indescifrables los valores almacenados previamente cifrados (como la contraseña SMTP), re-guarda esas settings después de rotar la key.
Enlaza LISTEN_URL a loopback, no a una interfaz pública. El CMS solo confía en X-Forwarded-For de peers de loopback; un bind público permitiría a cualquier cliente falsificar headers que alimentan el rate limiting por IP y los bloqueos de login.
Escucha
CHINASKI_LISTEN, dirección de escucha al correr bajo hypnotoad. Defaulthttp://127.0.0.1:8080.CHINASKI_WORKERS, conteo de workers de hypnotoad. Default2.MOJO_MODE, modo estándar de Mojolicious. Las unidades de producción establecenproduction.
Los valores actuales de CHINASKI_DB, CHINASKI_OUTPUT, CHINASKI_URL_BASE, CHINASKI_LISTEN y si CHINASKI_SECRET está establecida son visibles en la página de settings de admin.
Modo air-gap (CHINASKI_AIRGAP=1)
Deshabilita cada llamada saliente e integración externa en un solo interruptor. Con el modo air-gap activado:
- Los webhooks de build, form, post y publish nunca se entregan.
- rsync y el deploy a S3 no corren, y los reintentos de webhook se detienen.
- Cloudflare Turnstile se omite por completo: la verificación auto-pasa y el widget se retira de las páginas de login y form, sin importar las keys almacenadas en settings.
- Las notificaciones por correo de admin se omiten.
- La verificación del manifest de actualizaciones de versión no se realiza.
- El builder estático elimina los analytics externos (GA4/GTM) y elimina el código de snippets que referencia URLs externas, así que ninguna página pública jala nada de un CDN.
El instalador habilita esto por defecto.
Build estático
CHINASKI_INCREMENTAL=1, pide un build incremental. El builder puede aún elegir un build completo si decide que se requiere uno.CHINASKI_FORCE_FULL=1, fuerza un rebuild completo (usada porbin/force-full-build.ply el control de rebuild de admin).CHINASKI_FORCE_PROMOTE=1, promueve el build incluso cuando el quality guard lo retendría porque los conteos de páginas u otras métricas cayeron.CHINASKI_JOBS, paralelismo de build. Debe ser un número simple; sobrescribe la settingbuild_jobs; por defecto al conteo de CPU; sujeta a 1–16.CHINASKI_BLOCK_TEMPLATES, directorio de block templates. Defaultbuilder/block_templatesen el repo.CHINASKI_MANIFEST_OPTIONAL=1, un fallo al producir el build manifest firmado normalmente aborta el build; establecer esto lo convierte en advertencia. Déjalo apagado en producción: un build "verde" sin un manifest firmado utilizable es peor que un build fallido.
Firma, keys y actualizaciones
CHINASKI_PRIVATE, directorio que contiene el build manifest firmado (build-manifest.jsony su.sig). Default<repo root>/private.CHINASKI_KEYS, directorio que contiene el keypair de firma Ed25519 del manifest. Default<repo root>/keys.CHINASKI_URL_BASE, sobrescribe la setting de sitechinaski_url_basepara las URLs construidas y el sitemap.CHINASKI_CMS_URL, sobrescribe la settingcms_base_url.CHINASKI_UPDATE_MANIFEST_URL, si está establecida, el dashboard de admin revisa esta URL de manifest por releases más nuevas (se omite en modo air-gap). Obtiene con timeouts cortos de 3/5 segundos.CHINASKI_RELEASE_PUBKEY, archivo alterno de public key de verificación de releases; defaultkeys/chinaski_release.puben el directorio de la app.
Runtime y operaciones
CHINASKI_TRUSTED_PROXIES, lista separada por comas de IPs de proxy o rangos CIDR IPv4 cuyos headersX-Forwarded-Forson confiables. Loopback siempre es confiable; las entradas extra importan cuando tu reverse proxy de otro modo es visible para la app en una red de contenedor/bridge. Default: solo loopback.CHINASKI_SMTP_INSECURE_NOVERIFY=1, deshabilita la verificación de certificados TLS para SMTP saliente. Solo para pruebas o setups de correo deliberadamente inseguros.CHINASKI_SKIP_PERF_INDEXES=1, omite aplicar los índices de rendimiento automáticos; para tooling de migración, no uso normal.CHINASKI_DOCS_DIR, directorio de documentos. Default:documentsjunto al archivo de base de datos.CHINASKI_MEDIA_DIR, directorio de media (usado por el script de backup y la purga automática de archivos de media trashed). Defaultpublic/mediaen el árbol de la app (/var/www/chinaski<N>/public/mediaen instalaciones systemd).CHINASKI_ADMIN_PASSWORD, contraseña para corridas no interactivas debin/chinaski-setup.pl(alternativa a--password).
Webhooks
WEBHOOK_MAX_CONCURRENT, máximo de peticiones de webhook salientes simultáneas. Default8.
Servidor MCP
chinaski-mcp requiere CHINASKI_API_URL (URL base del CMS) y CHINASKI_API_KEY; se niega a arrancar sin ellas. Afinado opcional:
CHINASKI_MCP_SESSION_TTL, vida útil de la sesión en segundos (default86400).CHINASKI_MCP_SESSION_DB, ruta de la base de datos de sesiones (defaultchinaski-mcp/sessions.db).CHINASKI_MCP_LOG_DIR/CHINASKI_MCP_LOG_FILE, ubicación del log (defaultslogs/ylogs/mcp-server.log).CHINASKI_MCP_MAX_RETRIES, default3.CHINASKI_MCP_CONTEXT_TTL, vida de la cache de site-context en segundos (default300).
Backups y deploys
Usadas por deploy/backup.sh:
CHINASKI_BACKUP_DIR, destino de backup; default/var/backups/chinaski<N>.CHINASKI_BACKUP_RETENTION_DAYS, cuánto se conservan los snapshots de base de datos; default14.
Usadas por deploy/deploy.sh:
CHINASKI_ALLOW_BUILD_FAIL=1, normalmente un build fallido aborta el deploy para que el servicio nunca se reinicie sobre output rancio o parcial; esta bandera continúa de todos modos en una emergencia.
Advertencias
- Mantén
/etc/chinaski<N>/enven modo0600. Los backups contienen la base de datos completa (hashes de contraseñas, secrets cifrados); el script de backup ajusta el directorio de backups a0700en cada corrida, asegúrate de que nada más lo ensanche. CHINASKI_AIRGAP=1silencia el tráfico saliente por completo; establécela antes del primer arranque si tu despliegue nunca toca internet.- Rotar
CHINASKI_SECRETes un evento deliberado, no mantenimiento de rutina: las sesiones mueren y las settings cifradas necesitan re-guardarse.