diff --git a/README.md b/README.md index 8a4ffd2..99ee92b 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,9 @@ Modifier `.env.exemple` en `.env` ### publish.sh `./script/publish.sh` : Publie le site dans le _PUBLISH_DIR_ de _.env_ +### publish-akbar.sh +`./script/publish-akbar.sh` : build (`publish.sh`) puis déploiement de `PUBLISH_DIR` vers akbar via `rclone`/SFTP (`SSH_USER`, `SSH_HOST`, `SSH_PORT`, `SSH_REMOTE_PATH` dans `.env`). Le compte de déploiement est restreint au SFTP côté serveur (YunoHost), d'où `rclone` plutôt que `rsync`/`scp` qui nécessitent un shell distant. + Ne pas oublier de vérifier que les - dossiers sont en 755 (`find /var/www -type d -exec chmod 755 {} \;`) - fichiers sont en 644 (`find /var/www -type f -exec chmod 644 {} \;`) @@ -85,7 +88,6 @@ En mode incognito sur Chromium, F12 puis Lighthouse. Tester smartphon Document does not have a meta description - ## Idées d'évolutions - Témoignages diff --git a/script/publish-akbar.sh b/script/publish-akbar.sh new file mode 100755 index 0000000..9d0da31 --- /dev/null +++ b/script/publish-akbar.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# +# Build le site (publish.sh) puis déploie le résultat vers akbar en une +# seule commande. +# +# Le compte SSH de déploiement (webapp YunoHost) est restreint au SFTP +# (ForceCommand internal-sftp côté serveur) : ni scp, ni rsync-sur-ssh ne +# fonctionnent (la commande distante est refusée, la connexion est coupée). +# On utilise donc rclone en backend SFTP, qui ne parle que le protocole +# SFTP et ne tente jamais d'exécuter de commande shell distante. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(dirname "${SCRIPT_DIR}")" + +if ! command -v rclone >/dev/null 2>&1; then + echo "Erreur : rclone est requis (apt install rclone)." + exit 1 +fi + +if [[ ! -f "${PROJECT_DIR}/.env" ]]; then + echo "Erreur : fichier .env introuvable." + exit 1 +fi + +set -a +source "${PROJECT_DIR}/.env" +set +a + +: "${SSH_USER:?Variable SSH_USER manquante dans .env}" +: "${SSH_HOST:?Variable SSH_HOST manquante dans .env}" +: "${SSH_PORT:=22}" +: "${SSH_REMOTE_PATH:?Variable SSH_REMOTE_PATH manquante dans .env}" + +PUBLISH_PATH="${PROJECT_DIR}/${PUBLISH_DIR}" + +echo "=== Étape 1/2 : build du site ===" +(cd "${PROJECT_DIR}" && "${SCRIPT_DIR}/publish.sh") + +echo +echo "=== Étape 2/2 : déploiement (SFTP) vers ${SSH_USER}@${SSH_HOST}:${SSH_REMOTE_PATH} ===" +rclone sync \ + "${PUBLISH_PATH}" \ + ":sftp:${SSH_REMOTE_PATH}" \ + --sftp-host "${SSH_HOST}" \ + --sftp-user "${SSH_USER}" \ + --sftp-port "${SSH_PORT}" \ + --sftp-ask-password \ + --sftp-shell-type none \ + --sftp-disable-hashcheck \ + --progress + +echo +echo "Déployé. Site visible sur :" +echo " https://${SSH_HOST}/"