Files
mabibli_ynh/scripts/install
T
2026-08-18 15:15:53 +02:00

66 lines
2.7 KiB
Bash
Executable File

#!/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"