Code générique de la page d'accueil personnalisée YunoHost (Makefile, scripts, éditeur visuel)

This commit is contained in:
mathieu
2026-09-19 17:47:32 +02:00
parent 44d01ea7cd
commit 455988e49c
16 changed files with 2025 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
#!/bin/sh
# Deploie le contenu de output/ (voir "make export") sur l'app YunoHost.
# Voir README.md pour le detail des parametres et l'authentification par cle SSH.
#
# Le compte SSH d'une app "Custom Webapp" YunoHost est en general limite a
# SFTP (ForceCommand internal-sftp) et chroote dans son propre dossier home
# (/var/www/<REMOTE_USER>) : rsync ne fonctionne donc pas (il a besoin
# d'executer un shell distant), et le chemin distant doit etre relatif a la
# racine du chroot, pas un chemin absolu du systeme de fichiers du serveur.
set -eu
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
PROJECT_ROOT="$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)"
OUTPUT_DIR="$PROJECT_ROOT/output"
if [ ! -f "${PROJECT_ROOT}/.env" ]; then
echo "Aucun .env trouve : lance 'make config' puis renseigne-le (voir .env.example)." >&2
exit 1
fi
# shellcheck disable=SC1090,SC1091
. "${PROJECT_ROOT}/.env"
if [ ! -f "${OUTPUT_DIR}/index.html" ]; then
echo "output/ est vide ou incomplet : lance d'abord 'make export' (ou le bouton Export de l'editeur)." >&2
exit 1
fi
if [ -z "${REMOTE_HOST:-}" ] || [ -z "${REMOTE_USER:-}" ]; then
echo "REMOTE_HOST et REMOTE_USER doivent etre renseignes dans .env (voir .env.example)." >&2
exit 1
fi
REMOTE_PORT="${REMOTE_PORT:-22}"
# Chemin relatif a la racine du chroot SFTP (pas le chemin absolu serveur).
REMOTE_PATH="${REMOTE_PATH:-/www/}"
SCP="scp"
if [ -n "${REMOTE_PASSWORD:-}" ]; then
if ! command -v sshpass > /dev/null 2>&1; then
echo "REMOTE_PASSWORD est defini dans .env mais sshpass n'est pas installe (apt install sshpass)." >&2
exit 1
fi
SCP="sshpass -p ${REMOTE_PASSWORD} scp"
fi
${SCP} -P "${REMOTE_PORT}" \
"${OUTPUT_DIR}/index.html" \
"${OUTPUT_DIR}/style.css" \
"${OUTPUT_DIR}/app.js" \
"${OUTPUT_DIR}/config.json" \
"${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"