Pointer réellement le manifeste vers la release Gitea

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>
This commit is contained in:
mathieu
2026-08-18 19:16:13 +02:00
co-authored by Claude Opus 5
parent ffc3db2dcc
commit 33bab173bc
5 changed files with 103 additions and 45 deletions
+97 -39
View File
@@ -1,68 +1,101 @@
# À faire avant la première installation
Deux points restés en suspens à la livraison du paquet, à traiter quand tu voudras
déployer. Rien ici n'est bloqué par le code : tout fonctionne, il manque des
informations que seul toi peux fournir.
É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. Remplacer l'URL de démonstration et déposer la release
## 1. Rendre le dépôt du code accessible sans authentification — BLOQUANT
Le `manifest.toml` porte une URL **fictive** (`gitea.example.org`) : le paquet ne
pouvait pas connaître ton vrai domaine Gitea au moment de sa création. En l'état,
l'installation échouerait au téléchargement de l'archive.
`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
**a. Créer la release du code.** Sur le dépôt `mabibli` (celui du code C#, pas
celui-ci) :
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 :
```
git tag v0.1.0
git push origin v0.1.0
build/dist/mabibli-0.1.0-linux-x64.tar.gz
```
Puis créer la release correspondante dans l'interface Gitea et y téléverser
l'archive `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.
⚠️ L'archive fait **68 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.
**b. Régénérer le manifeste avec la vraie URL :**
```
./build/publier-release.sh --base-url <ton URL Gitea réelle>
```
Le script recompile, produit l'archive, calcule son `sha256` et l'inscrit dans le
`manifest.toml` avec la bonne URL. Committer ensuite le manifeste modifié.
**c. Chercher les autres occurrences du domaine fictif**, qui ne sont pas couvertes
par le script :
```
grep -rn "gitea.example.org" .
```
Elles se trouvent dans `manifest.toml` (champ `upstream.code`), `README.md`, et
`conf/systemd.service` (directive `Documentation=`).
⚠️ 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
Le `sha256` du manifeste doit correspondre à l'archive réellement déposée :
```
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
```
S'ils diffèrent, l'installation s'interrompra à la vérification d'intégrité — ce qui
est le comportement souhaité, mais autant le savoir avant.
---
## 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
```
---
## 2. L'application exige un domaine entier, pas un sous-chemin
# 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`.
@@ -89,3 +122,28 @@ demandera un domaine dédié à l'installation.
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.
+1 -1
View File
@@ -1,6 +1,6 @@
# Paquet YunoHost pour MaBibli
Paquet d'installation de [MaBibli](https://gitea.example.org/mathieu/mabibli), application de
Paquet d'installation de [MaBibli](https://git.akbar.nohost.me/mathieu/mabibli), application de
gestion de bibliothèque personnelle (catalogue, prêts, scan ISBN).
Ce dépôt **ne contient aucun code C#**. Il porte uniquement de quoi installer sur YunoHost une
+1 -1
View File
@@ -28,7 +28,7 @@ racine_paquet="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source_dir="${MABIBLI_SOURCE_DIR:-$(cd "$racine_paquet/../mabibli" 2>/dev/null && pwd || true)}"
version="${MABIBLI_VERSION:-}"
base_url="${MABIBLI_BASE_URL:-https://gitea.example.org/mathieu/mabibli/releases/download}"
base_url="${MABIBLI_BASE_URL:-https://git.akbar.nohost.me/mathieu/mabibli/releases/download}"
output_dir="${MABIBLI_OUTPUT_DIR:-$racine_paquet/build/dist}"
maj_manifeste=1
runtime="linux-x64"
+1 -1
View File
@@ -1,6 +1,6 @@
[Unit]
Description=MaBibli — gestion de bibliothèque personnelle
Documentation=https://gitea.example.org/mathieu/mabibli
Documentation=https://git.akbar.nohost.me/mathieu/mabibli
After=network.target
[Service]
+3 -3
View File
@@ -13,7 +13,7 @@ maintainers = ["mathieu"]
[upstream]
license = "AGPL-3.0-or-later"
code = "https://gitea.example.org/mathieu/mabibli"
code = "https://git.akbar.nohost.me/mathieu/mabibli"
[integration]
yunohost = ">= 12.1.38"
@@ -73,8 +73,8 @@ ram.runtime = "200M"
# self-contained (CLAUDE.md, « Ne jamais compiler sur le serveur »).
#
# Ces deux valeurs sont réécrites par `build/publier-release.sh`.
amd64.url = "https://gitea.example.org/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz"
amd64.sha256 = "a202f59b4d55aac172d78defd7733bee30d8a115d899ed0da55cd935f6bf679d"
amd64.url = "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz"
amd64.sha256 = "e3316bd05cd71234403695bab405f48009d8d6186b0074235396d622c8c0caef"
# L'archive dépose ses fichiers à la racine, sans dossier intermédiaire.
in_subdir = false