Fait avec Chinaski

Installation

Chinaski s'installe sur un serveur Debian/Ubuntu en une commande, ou entièrement hors ligne depuis un bundle. Cette page parcourt l'installation standard, le chemin hors ligne, comment vérifier ce que vous avez téléchargé, et comment fonctionnent les mises à niveau sur une instance installée.

Prérequis

  • Un serveur Debian/Ubuntu ; vous exécutez l'installateur en root.
  • D'autres systèmes fonctionnent aussi, mais l'installation automatique de paquets de l'installateur suppose Debian/Ubuntu ; ailleurs vous installez vous-même les paquets prérequis (documentés dans le README du projet) avant de lancer l'installateur.

L'installation en une commande

Sur un serveur neuf :

curl -fsSL https://chinaski.net/install | sudo bash -s -- 1 --repo https://github.com/bigjohncobb/chinaski

C'est tout. L'installateur servi est la version courante du script d'installation du projet lui-même. Remplacez 1 par votre nom d'instance.

Ce que fait l'installateur, dans l'ordre, tout automatique :

  1. Il installe lui-même tous les paquets système et dépendances Perl (en utilisant les versions packagées par Debian quand elles existent ; la poignée non packagée est récupérée depuis CPAN au moment de l'installation). Rien ne nécessite de compilation à la main.
  2. Il crée un utilisateur système dédié chinaski.
  3. Il clone le dépôt et dispose l'application sous /var/www/chinaski<instance> avec des permissions restrictives.
  4. Il crée et initialise la base de données SQLite.
  5. Il génère un secret unique, affiché une seule fois à la fin de l'installation ; notez-le quelque part de sûr.
  6. Il enregistre le service systemd et le temporisateur de sauvegarde quotidien, tous deux activés.

Options :

  • --repo URL : installer depuis une autre URL git (la valeur par défaut est le dépôt officiel).
  • --local / --src DIR : installer depuis une copie de travail locale au lieu de cloner.
  • --dir DIR : installer ailleurs que dans /var/www/chinaski<instance>.
  • --port PORT : le port d'écoute. Les noms d'instances numériques reçoivent automatiquement 3000 + N (instance 1 → 3001) ; les noms non numériques prennent 3001 par défaut, sauf surcharge.

Règles à connaître :

  • Les noms d'instances sont alphanumériques (1, 2, prod, staging).
  • L'installateur refuse un répertoire d'installation existant non vide ; exécutez d'abord le désinstallateur pour une réinstallation.
  • À la fin, la sortie de fin d'installation affiche votre secret. Sauvegardez-le.
  • Un temporisateur de sauvegarde quotidien est activé automatiquement dans le cadre de l'installation, voir Backup Schedule & Retention pour l'ajuster.

Premier lancement

La première visite du site redirige vers l'écran de configuration, où vous définissez le nom d'utilisateur et le mot de passe du premier administrateur (minimum 12 caractères plus majuscules, minuscules et un chiffre). Une fois la configuration terminée, l'écran de configuration disparaît définitivement. Les installations scriptées peuvent accomplir la même étape depuis la ligne de commande (voir le CLI & Server Reference).

Installer hors ligne (sans Internet, jamais)

Sur une machine connectée :

bash install/make-bundle.sh

produit un bundle de release plus sa somme de contrôle : code source de l'application, tous les modules Perl nécessaires, un installateur fourni ; tout ce dont la machine cible a besoin. Copiez le bundle vers la cible par USB ou tout support hors ligne, puis :

tar -xzf chinaski-<commit>.tar.gz
cd chinaski-<commit>
sudo bash install.sh

Pas de DNS, pas de certificats, pas de téléchargements : toutes les dépendances se résolvent depuis le bundle lui-même. L'installation hors ligne pré-définit le secret et le mode airgap dans le fichier env. Une variante en ligne du même installateur existe avec des drapeaux pour l'emplacement d'installation (--prefix), le saut de l'enregistrement du service (--no-service) et le saut des paquets système (--no-apt).

Vérifier un artefact

Les sorties de build peuvent être accompagnées d'un manifeste signé ; un fichier listant chaque artefact de release avec son hash cryptographique, signé avec la clé Ed25519 du projet. Un vérificateur fourni le contrôle hors ligne :

perl tools/verify-manifest.pl \
  --manifest build-manifest.json \
  --sig      build-manifest.json.sig \
  --pubkey   keys/chinaski_manifest.pub \
  --output   output/

Exit 0 signifie que la signature est valide et que chaque fichier listé correspond à sa somme de contrôle enregistrée ; tout le reste affiche exactement quels fichiers diffèrent (avec --strict-tree, il signale aussi les fichiers présents sur disque mais absents du manifeste). Aucun réseau nécessaire, utilisable sur des hôtes air-gapped.

Mettre à jour un site installé

Les mises à jour sont par instance et délibérées :

  1. Récupérez le nouveau code pour cette instance.
  2. Mettez à jour les dépendances (le script utilise un répertoire vendor/ fourni quand il est présent, si bien que les serveurs hors ligne se mettent à jour proprement).
  3. Vérifiez la syntaxe du nouveau code avant que quoi que ce soit ne soit touché.
  4. Rebuild le site: si le build échoue, la mise à jour s'abandonne plutôt que de redémarrer le service sur une sortie cassée. (Un drapeau d'environnement optionnel laisse passer un correctif de code seul quand le builder lui-même est bloqué.)
  5. Redémarrez le service et affichez le résultat ; la racine documentaire du serveur web est mise à jour automatiquement si votre mode d'URL de langue a changé.

Vous pouvez exécuter un déploiement explicitement (deploy.sh <instance>), le câbler derrière un webhook, ou laisser le Manager le piloter. Chaque tentative est sûre : le site en cours d'exécution continue de servir jusqu'à ce que le nouveau soit entièrement validé.

Après l'installation

  • Terminez la configuration du premier lancement (choisissez le nom d'utilisateur/mot de passe du premier administrateur).
  • Vérifiez que le temporisateur de sauvegarde automatique a tourné.
  • Les mises à jour arrivent via le script de déploiement ; les nouvelles installations commencent toujours depuis la version que l'installateur clone pour vous.
Lisez ce site en