Ajoute le script de publication vers akbar (SFTP via rclone)
Le compte SSH de déploiement est restreint au SFTP côté serveur (ForceCommand internal-sftp, YunoHost) : rsync/scp échouent car ils ont besoin d'exécuter une commande shell distante. rclone en backend SFTP ne parle que le protocole SFTP et fonctionne avec ce type de compte. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e91d644531
commit
aed16efdfc
Executable
+56
@@ -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}/"
|
||||
Reference in New Issue
Block a user