#!/bin/bash source _common.sh source /usr/share/yunohost/helpers #================================================= # TÉLÉCHARGEMENT ET VÉRIFICATION DES BINAIRES #================================================= ynh_script_progression "Installation des fichiers..." # `ynh_setup_source` télécharge l'archive déclarée dans le manifeste, **vérifie son # sha256** et la décompresse. Aucune compilation n'a lieu ici : l'archive est un # publish self-contained, elle embarque son propre runtime .NET. C'est ce qui évite # d'installer le SDK .NET sur le serveur YunoHost. # # En cas d'empreinte incorrecte ou de téléchargement interrompu, le helper interrompt # le script ; YunoHost déclenche alors `remove` pour nettoyer, et rien n'a encore été # configuré à ce stade. ynh_setup_source --dest_dir="$install_dir" # L'archive est un tar : le bit exécutable devrait survivre, mais un tar reconstruit # à la main pourrait l'avoir perdu, et l'unité systemd échouerait sans raison lisible. chmod +x "$install_dir/$mabibli_binaire" #================================================= # RÉPERTOIRE DE DONNÉES #================================================= ynh_script_progression "Préparation du répertoire de données..." # `data_dir` est créé par la ressource du manifeste. La base y sera créée au premier # démarrage : l'application applique ses migrations EF Core toute seule, il n'y a # aucune étape d'initialisation manuelle. chown "$app:$app" "$data_dir" chmod 750 "$data_dir" #================================================= # CONFIGURATION NGINX ET SYSTEMD #================================================= ynh_script_progression "Configuration de NGINX et du service..." ynh_config_add_nginx ynh_config_add_systemd # Les journaux partent dans journald (cf. `StandardOutput=journal`), il n'y a donc # pas de fichier de log à faire tourner par logrotate. yunohost service add "$app" --description="Bibliothèque personnelle MaBibli" #================================================= # DÉMARRAGE DU SERVICE #================================================= ynh_script_progression "Démarrage de $app..." # « Application started » est la ligne émise par ASP.NET Core une fois l'écoute # ouverte — vérifié sur le publish réel. Attendre cette ligne plutôt qu'un simple # `systemctl start` permet à l'installation d'échouer franchement si les migrations # EF Core ne passent pas, au lieu de rendre la main sur un service en boucle de # redémarrage. ynh_systemctl --service="$app" --action="start" --log_path="systemd" \ --wait_until="Application started" --timeout=60 #================================================= # FIN DU SCRIPT #================================================= ynh_script_progression "Installation de $app terminée"