Le commit précédent portait le bon message mais pas les modifications : manifest.toml, README.md, conf/systemd.service et la valeur par défaut de --base-url référençaient encore gitea.example.org, ce qui faisait échouer l'installation au Prefetching asset main. A_FAIRE.md est réécrit : la visibilité privée du dépôt du code devient le point bloquant restant (Gitea répond 404, pas 403, à un anonyme). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.6 KiB
À faire avant la première installation
État au 2026-08-18. Ce qui est fait est conservé en bas de page : le savoir pourquoi c'était à faire reste utile à la prochaine version.
1. Rendre le dépôt du code accessible sans authentification — BLOQUANT
ynh_setup_source télécharge l'archive sans jeton. Tant que le dépôt mabibli
est privé, l'installation échoue au téléchargement.
Le symptôme, et pourquoi il induit en erreur
Constaté le 2026-08-18, sans authentification :
/mathieu/mabibli → 404
/mathieu/mabibli/releases → 404
/api/v1/repos/mathieu/mabibli → 404
Gitea répond 404 et non 403 à un visiteur anonyme sur un dépôt privé, pour ne pas révéler son existence. Le symptôme est donc exactement le même que « la release n'a pas été créée » ou « le fichier n'a pas été téléversé ». Ne pas chercher du côté de la release avant d'avoir réglé la visibilité : les deux causes sont indiscernables.
Que le dépôt existe bien est vérifiable autrement, par SSH (clé, donc authentifié) :
git ls-remote --tags origin
Ce qu'il faut faire
Dans Gitea, sur le dépôt mathieu/mabibli : Settings → Danger Zone → Make
repository public. Le code est déjà sous AGPL-3.0-or-later, la publication est
cohérente avec la licence.
Si le dépôt doit rester privé, il faut héberger l'archive ailleurs, sur une URL
publique, et faire pointer --base-url dessus. Un jeton dans l'URL du manifeste
serait à écarter : le manifeste est lu par YunoHost et lisible sur le serveur.
2. Créer la release et y téléverser l'archive
À faire (ou à vérifier — voir point 1, tant que le dépôt est privé on ne peut pas savoir si c'est déjà fait).
Le tag est déjà poussé : v0.1.0 → 922fd02. Reste à créer la release
correspondante dans l'interface Gitea et à y téléverser :
build/dist/mabibli-0.1.0-linux-x64.tar.gz
⚠️ L'archive à téléverser est celle produite le 2026-08-18, sha256
e3316bd05cd71234403695bab405f48009d8d6186b0074235396d622c8c0caef. Une archive plus
ancienne traînant sur le disque ne correspondrait plus au manifeste, et
l'installation s'interromprait à la vérification d'intégrité — comportement voulu,
mais autant ne pas s'y heurter.
⚠️ Elle fait 69 Mo : c'est normal, le publish est self-contained et embarque le
runtime .NET. C'est précisément ce qui évite d'installer dotnet-runtime sur le
serveur YunoHost.
Comment vérifier
curl -fsSLI "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" | head -1
Doit répondre HTTP/2 200, sans être connecté. Et le sha256 du manifeste doit
correspondre à l'archive réellement déposée :
sha256sum build/dist/mabibli-0.1.0-linux-x64.tar.gz
grep sha256 manifest.toml
3. Committer et pousser le paquet
Le manifeste corrigé n'est pas encore poussé. yunohost app install <url du dépôt>
lit le manifeste depuis Gitea, pas depuis la copie locale : sans ce push,
l'installation repartira sur l'ancienne URL fictive.
git add -A && git commit && git push
Contrainte permanente — ce n'est pas une tâche
L'application exige un domaine entier, pas un sous-chemin
Contrainte technique, pas un choix. MaBibli doit être installée sur
mabibli.mondomaine.tld, et non sur mondomaine.tld/mabibli.
Pourquoi
Deux éléments sont figés à la compilation du client Blazor WebAssembly :
- la balise
<base href="/">deindex.html, qui détermine la racine de toutes les URL de l'application ; - les empreintes d'intégrité inscrites dans
service-worker-assets.js, qui garantissent que le service worker sert bien les fichiers attendus.
Réécrire ces valeurs sur le serveur au moment de l'installation casserait les empreintes, donc le service worker, donc le fonctionnement hors-ligne. Et comme rien n'est recompilé côté serveur — c'est tout l'intérêt du déploiement self-contained —, il n'existe pas de solution propre pour un sous-chemin.
Le paquet déclare donc l'application en full_domain auprès de YunoHost, qui
demandera un domaine dédié à l'installation.
Si tu voulais lever cette contrainte plus tard
Il faudrait produire une archive par chemin d'installation, ou recompiler sur le serveur. Les deux annulent le bénéfice du self-contained. À moins d'un besoin réel, un sous-domaine reste la bonne réponse.
Fait
L'URL de démonstration a été remplacée — 2026-08-18
Le manifest.toml portait une URL fictive (gitea.example.org) : le paquet ne
pouvait pas connaître le vrai domaine Gitea au moment de sa création. Constaté en
conditions réelles — l'installation s'arrête net au Prefetching asset main.
Corrigé par ./build/publier-release.sh, qui recompile, vérifie le publish, produit
l'archive, calcule son sha256 et l'inscrit dans le manifeste avec la bonne URL.
https://git.akbar.nohost.me/mathieu/mabibli/releases/download est désormais la
valeur par défaut de --base-url dans le script : l'option n'est plus à passer.
Les occurrences hors manifeste, que le script ne touche pas, ont été traitées à la
main : README.md et conf/systemd.service (directive Documentation=). Le
contrôle reste grep -rn "gitea.example.org" . — il ne doit plus rien remonter que
ce fichier-ci.
L'archive ne va plus dans git — 2026-08-18
build/dist/ est ignoré. L'archive vit dans la release Gitea ; committée, elle
ajouterait 69 Mo d'historique par version, définitivement.