Fait avec Chinaski

Variables d'environnement

Chinaski est configuré via une poignée de variables d'environnement : l'emplacement de la base de données, le répertoire de sortie statique, le secret de sécurité, et quelques overrides optionnels. L'installateur les écrit pour vous ; cette page est la référence complète pour quand vous devez les changer à la main.

Où les définir

  • Installations mono-instance : /etc/chinaski<N>/env (le fichier que l'unité systemd chinaski@<N> charge). Gardez le fichier en mode 0600.
  • Le serveur MCP : /etc/chinaski<N>/mcp-env, lu par chinaski-mcp@<N>.
  • Script de backup et script de deploy : dans l'environnement au moment de l'invocation.
  • Le fichier créé est livré avec CHINASKI_SECRET défini et CHINASKI_AIRGAP=1 actif.

Obligatoires

Variable Ce qu'elle fait Défaut
CHINASKI_SECRET Clé de signature des sessions, et clé utilisée pour chiffrer les secrets stockés (mot de passe SMTP) dans la base de données. Le CMS refuse de démarrer sans elle. L'installateur en génère une avec openssl rand -hex 32. none
CHINASKI_DB Chemin du fichier de base de données SQLite. <app root>/chinaski.db
CHINASKI_OUTPUT Répertoire où le builder statique écrit. <app root>/output
LISTEN_URL Adresse à laquelle le daemon du CMS se lie (utilisée par l'unité systemd). Doit être loopback (ex. http://127.0.0.1:3001) en production. Combinée à CHINASKI_SECRET, elle vit dans /etc/chinaski<N>/env. none

Changer CHINASKI_SECRET invalide les sessions admin (tout le monde est déconnecté) et rend indéchiffrables les valeurs chiffrées stockées précédemment (comme le mot de passe SMTP) : re-sauvegardez ces réglages après la rotation de la clé.

Liez LISTEN_URL au loopback, pas à une interface publique. Le CMS ne fait confiance à X-Forwarded-For que depuis des pairs loopback ; un bind public permettrait à n'importe quel client d'usurper les en-têtes qui alimentent le rate limiting IP et les lockouts de connexion.

Écoute

  • CHINASKI_LISTEN : adresse d'écoute en exécution sous hypnotoad. Défaut http://127.0.0.1:8080.
  • CHINASKI_WORKERS : nombre de workers hypnotoad. Défaut 2.
  • MOJO_MODE : mode Mojolicious standard. Les unités de production définissent production.

Les valeurs actuelles de CHINASKI_DB, CHINASKI_OUTPUT, CHINASKI_URL_BASE, CHINASKI_LISTEN, et le fait que CHINASKI_SECRET soit définie sont visibles sur la page de réglages admin.

Mode air-gap (CHINASKI_AIRGAP=1)

Désactive tout appel sortant et toute intégration externe en un seul interrupteur. Avec le mode air-gap actif :

  • Les webhooks build, form, post et publish ne sont jamais délivrés.
  • Le déploiement rsync et S3 ne s'exécute pas, et les retries de webhook s'arrêtent.
  • Cloudflare Turnstile est entièrement sauté : la vérification passe automatiquement et le widget est retiré des pages de connexion et de formulaire, quelles que soient les clés stockées dans les réglages.
  • Les notifications email admin sont sautées.
  • Le contrôle de manifest de mise à jour de version n'est pas effectué.
  • Le builder statique retire les analytics externes (GA4/GTM) et retire le code de snippet référençant des URL externes, de sorte qu'aucune page publique ne charge quoi que ce soit depuis un CDN.

L'installateur active cela par défaut.

Build statique

  • CHINASKI_INCREMENTAL=1 : demande un build incrémental. Le builder peut tout de même choisir un build full s'il juge qu'un est requis.
  • CHINASKI_FORCE_FULL=1 : force un rebuild complet (utilisé par bin/force-full-build.pl et le contrôle de rebuild admin).
  • CHINASKI_FORCE_PROMOTE=1 : promeut le build même quand le guard de qualité le retiendrait parce que le nombre de pages ou d'autres métriques ont chuté.
  • CHINASKI_JOBS : parallélisme du build. Ce doit être un nombre simple ; outrepasse le réglage build_jobs ; par défaut le nombre de CPU ; borné à 1-16.
  • CHINASKI_BLOCK_TEMPLATES : répertoire des templates de blocks. Défaut builder/block_templates dans le repo.
  • CHINASKI_MANIFEST_OPTIONAL=1 : un échec de production du manifest de build signé avorte normalement le build ; définir ceci en fait un avertissement à la place. Laissez désactivé en production : un build « vert » sans manifest signé utilisable est pire qu'un build en échec.

Signature, clés et mises à jour

  • CHINASKI_PRIVATE : répertoire détenant le manifest de build signé (build-manifest.json et son .sig). Défaut <repo root>/private.
  • CHINASKI_KEYS : répertoire détenant la paire de clés de signature de manifest Ed25519. Défaut <repo root>/keys.
  • CHINASKI_URL_BASE : outrepasse le réglage de site chinaski_url_base pour les URL construites et le sitemap.
  • CHINASKI_CMS_URL : outrepasse le réglage cms_base_url.
  • CHINASKI_UPDATE_MANIFEST_URL : si définie, le dashboard admin vérifie cette URL de manifest pour des releases plus récentes (sauté en mode air-gap). Récupère avec des timeouts courts de 3/5 secondes.
  • CHINASKI_RELEASE_PUBKEY : fichier de clé publique de vérification de release alternatif ; défaut keys/chinaski_release.pub dans le répertoire de l'app.

Runtime et opérations

  • CHINASKI_TRUSTED_PROXIES : liste séparée par des virgules d'IP de proxy ou de plages IPv4 CIDR dont les en-têtes X-Forwarded-For sont dignes de confiance. Le loopback est toujours de confiance ; les entrées supplémentaires comptent quand votre reverse proxy est autrement visible de l'app dans un réseau conteneur/bridge. Défaut : loopback seulement.
  • CHINASKI_SMTP_INSECURE_NOVERIFY=1 : désactive la vérification des certificats TLS pour le SMTP sortant. Uniquement pour des tests ou des configurations mail délibérément non sécurisées.
  • CHINASKI_SKIP_PERF_INDEXES=1 : saute l'application des index de performance automatiques ; pour les outils de migration, pas pour un usage normal.
  • CHINASKI_DOCS_DIR : répertoire des documents. Défaut : documents à côté du fichier de base de données.
  • CHINASKI_MEDIA_DIR : répertoire media (utilisé par le script de backup et la purge automatique des fichiers media mis à la trash). Défaut public/media dans l'arborescence de l'app (/var/www/chinaski<N>/public/media sur les installations systemd).
  • CHINASKI_ADMIN_PASSWORD : mot de passe pour les exécutions non interactives de bin/chinaski-setup.pl (alternative à --password).

Webhooks

  • WEBHOOK_MAX_CONCURRENT : nombre maximal de requêtes webhook sortantes simultanées. Défaut 8.

Serveur MCP

chinaski-mcp requiert CHINASKI_API_URL (URL de base du CMS) et CHINASKI_API_KEY ; il refuse de démarrer sans elles. Réglages fins optionnels :

  • CHINASKI_MCP_SESSION_TTL : durée de vie des sessions en secondes (défaut 86400).
  • CHINASKI_MCP_SESSION_DB : chemin de la base de données de sessions (défaut chinaski-mcp/sessions.db).
  • CHINASKI_MCP_LOG_DIR / CHINASKI_MCP_LOG_FILE : emplacement des logs (défauts logs/ et logs/mcp-server.log).
  • CHINASKI_MCP_MAX_RETRIES : défaut 3.
  • CHINASKI_MCP_CONTEXT_TTL : durée de vie du cache de contexte du site en secondes (défaut 300).

Backups et deploys

Utilisées par deploy/backup.sh :

  • CHINASKI_BACKUP_DIR : destination des backups ; défaut /var/backups/chinaski<N>.
  • CHINASKI_BACKUP_RETENTION_DAYS : durée de conservation des snapshots de base de données ; défaut 14.

Utilisées par deploy/deploy.sh :

  • CHINASKI_ALLOW_BUILD_FAIL=1 : normalement un build en échec avorte le deploy pour que le service ne redémarre jamais sur une sortie périmée ou partielle ; ce flag continue quand même en cas d'urgence.

Avertissements

  • Gardez /etc/chinaski<N>/env en mode 0600. Les backups contiennent la base de données complète (hash de mots de passe, secrets chiffrés) ; le script de backup resserre le répertoire de backup à 0700 à chaque exécution ; assurez-vous que rien d'autre ne l'élargit.
  • CHINASKI_AIRGAP=1 réduit au silence tout trafic sortant ; définissez-la avant le premier démarrage si votre déploiement ne touche jamais internet.
  • Faire tourner CHINASKI_SECRET est un événement délibéré, pas de la maintenance de routine : les sessions meurent et les réglages chiffrés doivent être re-sauvegardés.
Lisez ce site en