Fait avec Chinaski

Publier depuis un téléphone

Chinaski peut tourner entièrement sur un téléphone Android : l'admin, la base de données et le build vivent tous dans le stockage du téléphone, tandis que le site public lui-même est servi depuis le stockage d'objets Cloudflare R2. Les éditeurs ouvrent l'admin dans le navigateur du téléphone pour écrire et publier ; les visiteurs ne touchent jamais au téléphone, de sorte que le site public reste en ligne même si le téléphone est éteint, à court de batterie ou hors ligne.

C'est une configuration à faire une seule fois, idéalement par la personne à l'aise avec quelques commandes de terminal. Après la configuration, la publication au quotidien ne demande rien de tout cela, juste l'admin dans un navigateur et un raccourci sur l'écran d'accueil.

Si un ordinateur portable est disponible, consultez plutôt Publier depuis un ordinateur portable : la même configuration sans coût, avec un vrai clavier et un vrai écran.

Faites la première installation en Wi-Fi : elle télécharge le bundle hors ligne complet et compile plusieurs modules Perl.

1. Installer les apps Android

Installez Termux, Termux:Boot et Termux:Widget, les trois depuis la même source, de préférence F-Droid (un release GitHub convient aussi ; ne mélangez simplement pas les sources, car leurs clés de signature diffèrent). Le Termux listé sur le Google Play Store est un build séparé, avec son propre dépôt de paquets, et n'est pas utilisé ici.

Ouvrez Termux:Boot une fois après l'avoir installé, et dans les paramètres des apps d'Android, exemptez Termux et Termux:Boot de l'optimisation de batterie ; sinon Android peut arrêter l'admin en arrière-plan.

2. Installer Chinaski

Dans Termux, exécutez :

curl -fsSL https://www.chinaski.net/dist/termux-quickstart.sh | bash

Cette seule commande installe les paquets dont Chinaski a besoin, télécharge et vérifie par somme de contrôle le bundle hors ligne, compile les dépendances Perl de Chinaski sur le téléphone (la partie lente, quelques minutes), met en place la base de données, démarre l'admin une fois pour confirmer qu'il fonctionne, et prépare les launchers de démarrage et d'écran d'accueil de l'étape 3. Aucun root n'est nécessaire.

Quand c'est terminé, ouvrez http://127.0.0.1:8080/admin dans le navigateur du téléphone. L'admin n'écoute que sur le téléphone lui-même, il n'est donc jamais joignable de l'extérieur. S'il ne se charge pas, consultez $HOME/chinaski/chinaski.log.

Étapes manuelles (identiques à la commande ci-dessus ; utile si quelque chose échoue)
pkg update
pkg install perl make clang sqlite openssl-tool libjpeg-turbo libpng giflib libwebp rclone rsync curl tar gzip
cd "$HOME"
curl -fSLO https://www.chinaski.net/dist/chinaski-latest.tar.gz
curl -fSLO https://www.chinaski.net/dist/chinaski-latest.tar.gz.sha256
sha256sum -c chinaski-latest.tar.gz.sha256
mkdir extracted
tar -xzf chinaski-latest.tar.gz -C extracted
cd extracted/chinaski-*
bash install.sh --termux --prefix "$HOME/chinaski"
bash "$HOME/chinaski/app/install/termux-start.sh"
mkdir -p "$HOME/.termux/boot" "$HOME/.shortcuts/tasks"
cp "$HOME/chinaski/app/install/termux-start.sh" "$HOME/.termux/boot/10-chinaski"
cp "$HOME/chinaski/app/install/termux-start.sh" "$HOME/.shortcuts/tasks/Restart My Website"
chmod 700 "$HOME/.termux/boot/10-chinaski" "$HOME/.shortcuts/tasks/Restart My Website"

Si la bibliothèque d'images (Imager) ne compile pas, enregistrez le log de build complet et la sortie de pkg list-installed pour le diagnostic.

3. Le faire tourner en continu

L'installation a déjà placé le launcher là où Termux:Boot et Termux:Widget le cherchent. Deux étapes uniques sur le téléphone terminent le travail :

  • Ouvrez l'app Termux:Boot une fois, pour que l'admin redémarre après un redémarrage du téléphone.
  • Ajoutez le widget Termux:Widget à l'écran d'accueil et choisissez Restart My Website. Un seul tap relance l'admin s'il s'est arrêté, sans terminal. Si l'admin tourne déjà, le tap ne fait rien.

4. Le pointer vers Cloudflare R2

C'est là que vit réellement le site public.

Dans Cloudflare :

  1. Créez un bucket R2 avec le stockage Standard. Utilisez ce bucket pour ce site uniquement : chaque publication fait correspondre le bucket exactement au site et supprime tout le reste qu'il contient.
  2. Sous R2 → Manage API tokens, créez un token d'API avec la permission Object Read & Write, limité à ce bucket. Copiez l'Access Key ID et la Secret Access Key (le secret n'est affiché qu'une seule fois). Notez votre Account ID sur la page de vue d'ensemble de R2.
  3. Dans les Settings du bucket, connectez un domaine personnalisé (par exemple www.example.com). Cloudflare crée l'enregistrement DNS et rend le bucket public à cette adresse ; il n'y a rien d'autre à activer. L'adresse r2.dev de R2 sert uniquement aux tests.
  4. R2 ne sert un fichier que sous son nom exact, tandis que Chinaski enregistre les pages sous .../index.html. Sur votre domaine (sous Rules, pas dans R2), ajoutez une URL Rewrite Rule :
    • Filtre (expression personnalisée) : (http.host eq "www.example.com" and ends_with(http.request.uri.path, "/")) (avec votre propre adresse)
    • Path : réécrire vers Dynamic concat(http.request.uri.path, "index.html")

Dans Chinaski : réglez Settings → General → Site URL sur votre adresse publique (par exemple https://www.example.com), puis dans Settings → Deploy :

Field Value
Deploy automatically after a successful build On
Enable S3 deploy On
Bucket Le nom de votre bucket R2
Endpoint https://<ACCOUNT_ID>.r2.cloudflarestorage.com (rien après le .com)
Region auto
Access Key / Secret Key Les identifiants d'API de R2

Ne mettez pas le nom du bucket à la fin de l'Endpoint. Cloudflare affiche parfois l'adresse comme https://<ACCOUNT_ID>.r2.cloudflarestorage.com/<bucket>. Copiée ainsi, le site est téléversé dans un dossier à l'intérieur du bucket et chaque page affiche le message de R2 "Error 404: Is this your bucket?", même si Test S3 Connection passe.

Enregistrez, puis utilisez Test S3 Connection pour confirmer que les identifiants fonctionnent. Publiez quelque chose, puis ouvrez votre adresse et une page à l'intérieur du site pour confirmer que tout se charge.

Publier une modification

Rien de spécifique au téléphone ici : modifiez et enregistrez une page ou un post comme d'habitude, et le build et le deploy tournent de la même manière que sur un serveur. Surveillez le bandeau d'état de l'admin pour voir "Publishing your update…" jusqu'à "Your update is live.". Une connexion mobile lente peut rendre cette étape longue ; le bandeau reste exact aussi longtemps que le téléversement tourne réellement.

Si un build réussit mais que le téléversement échoue (la connexion a coupé en plein téléversement, par exemple), le site publié la dernière fois sur R2 reste exactement comme il était. Les visiteurs ne voient jamais une publication à moitié finie. Réessayez une fois de retour sur une connexion.

Mettre à jour Chinaski

Pour installer la dernière version de Chinaski, exécutez ceci dans Termux :

curl -fsSL https://www.chinaski.net/dist/chinaski-update.sh | bash

Il vérifie si une nouvelle version est disponible, l'installe et relance l'admin. Votre base de données, vos réglages, vos téléversements et vos médias sont conservés. Les installations faites avant que rsync fasse partie de la liste des paquets en ont besoin une fois : pkg install rsync.

Bon à savoir

  • Formulaires et téléchargements de documents : le site public est servi par R2, et le téléphone n'est pas joignable depuis Internet, donc les formulaires de contact et les téléchargements de documents du site public ne fonctionnent pas dans cette configuration.
  • Coûts : le niveau gratuit de Cloudflare R2 couvre plusieurs fois un petit site typique, et le trafic vers les visiteurs n'est pas facturé. Vous payez toujours votre nom de domaine.
Lisez ce site en