Fait avec Chinaski

Souveraineté

Chinaski est construit pour tourner sur votre machine, sous votre contrôle, pour toujours, avec ou sans internet. Le projet l'énonce en une ligne : auto-hébergé, pas de télémétrie, pas d'appel à la maison, tourne en air-gap. Cette page explique ce que cela signifie en pratique : ce qui tourne sur votre serveur, ce qui n'arrive jamais après l'installation, comment déployer quelque part sans aucune connectivité, et où se situent les limites honnêtes.

Ce que couvre « auto-hébergé »

  • Chaque dépendance est soit dans le gestionnaire de paquets de votre système d'exploitation (Perl, SQLite, le serveur web), soit dans l'application elle-même. Pas de Node, pas de runtime Python, pas d'orchestration de conteneurs nécessaire pour suivre le calendrier de publication de quelqu'un d'autre.
  • Tout le stockage est local : un fichier SQLite pour tout l'état, les médias comme fichiers sur disque, la sortie statique comme fichiers que votre serveur web sert directement. La sauvegarde est une copie de fichier (ou la sauvegarde planifiée intégrée).
  • Le noyau est sous licence MIT. Les ajouts commerciaux prévus (un palier Pro) sont conçus pour utiliser des fichiers de licence signés localement, pas de serveurs de validation externes, délibérément compatibles air-gap.

Ce que couvre « pas d'appel à la maison »

Après l'installation, Chinaski ne fait aucun appel réseau de sa propre initiative :

  • Aucune télémétrie n'est collectée et ne quitte le système ; il n'existe aucun mécanisme pour l'envoyer.
  • Aucune validation de licence auprès d'un serveur externe.
  • Aucune police, icône ou script de CDN n'est embarqué dans vos pages.
  • La fonction intégrée de vérification de version ne se connecte que si vous lui donnez explicitement une URL de manifeste de mises à jour et que le mode air-gap est désactivé, si bien que même la vérification de mise à jour se livre désactivée par défaut.

Tout ce qui est orienté vers l'extérieur se scinde entre fonctionnalités que vous choisissez d'activer (SMTP pour les notifications par e-mail, webhooks, sauvegardes à poussée planifiée vers un stockage objet cloud, vérification de mises à jour), et le mode air-gap les désactive tous d'un coup.

Le commutateur air-gap et l'installation par défaut

Un unique réglage CHINASKI_AIRGAP=1 fait refuser au serveur toute connexion sortante : les webhooks (form/post/publish/build) ne sont pas dispatchés, le déploiement rsync ou S3 ne tourne pas, la vérification Cloudflare Turnstile est sautée et le widget retiré des pages de connexion et de formulaire, les notifications e-mail d'admin ne sont pas envoyées, et les vérifications de mises à jour n'ont pas lieu. Les builders retirent aussi tout code de snippet qui référence des URL externes, si bien que rien ne s'embarque depuis un CDN. Les installations fraîches écrivent ce commutateur dans l'environnement par défaut et vous le disent au moment de l'installation.

Vos secrets restent aussi sur votre serveur : le mot de passe SMTP, les secrets de webhooks, les clés Spaces et similaires sont stockés chiffrés dans la base locale sous une clé dérivée de votre variable d'environnement CHINASKI_SECRET ; l'application n'écrit jamais d'identifiants en clair sur le disque.

Installer un site sans internet du tout

Pour les machines qui ne touchent jamais le réseau :

  1. Sur une machine connectée, construisez un bundle hors ligne : il empaquette les sources de l'application, toutes les tarballs de modules CPAN, un installateur de modules livré avec, et le script d'installation, plus un fichier de sommes de contrôle SHA-256 à côté. Copiez les deux sur un support amovible.
  2. Sur la machine cible, exécutez l'installateur depuis le bundle. Il installe les modules Perl uniquement depuis le bundle (« aucune connexion sortante n'est établie »). Seule une poignée de paquets système (perl, make, gcc, sqlite3, bibliothèques d'images) doit venir du cache propre de votre distribution ou d'un jeu pré-téléchargé ; sur les cartes ARM, récupérez explicitement les bibliothèques d'images sinon le processeur d'images ne compilera pas.
  3. Optionnellement, sautez systemd entièrement pour les installations à serveur unique (--no-service) ; le fichier d'environnement que l'installateur écrit contient déjà le secret de session et le mode air-gap activés.

Le mode air-gap sans certificats : pour toujours

Pour les déploiements où le DNS, les autorités de certification et l'infrastructure cloud sont simplement partis, Chinaski documente un mode permanent : servir l'interface d'admin directement en HTTP avec la configuration livrée, pas de reverse proxy, pas de certificats TLS à acquérir, renouveler ou faire expirer. La garantie « fonctionne pour toujours » est le propos.

Il gère aussi correctement, sans proxy inverse, les dépendances habituelles du reverse proxy : la détection d'IP client et la limitation de débit retombent sur les vraies adresses TCP (les en-têtes de proxy falsifiés sont ignorés quand aucun proxy n'est en amont), si bien que les verrouillages et le bridage fonctionnent sans configuration.

Ce que la souveraineté ne signifie pas

  • Elle ne signifie pas zéro travail : les mises à jour restent votre affaire ; un processus délibéré fait à la main depuis une URL de manifeste (que vous pouvez laisser non définie pour toujours sans aucun impact).
  • Les fonctionnalités de connectivité (envoi d'e-mails, sauvegardes cloud, intégrations de webhooks) exigent de la connectivité quand vous les activez ; elles ne s'activent simplement jamais toutes seules.
  • Le jeu de paquets vient de Debian stable ; le garder ainsi est un choix opérationnel qui vous appartient, comme les sauvegardes.
Lisez ce site en