#!/usr/bin/env bash # deploy-monitoring-sites.sh — rsync generated HTML to DEPLOY_WWW_ROOT on koopa. # Does NOT reload Caddy (needs root — see ROOT-ON-KOOPA.md). set -uo pipefail HERE=$(cd "$(dirname "$0")" && pwd) SUITE_ROOT=$(cd "$HERE/../.." && pwd) SITE_GEN="${SITE_GEN_DIR:-$SUITE_ROOT/site-gen}" ROOT="$HERE" SETTINGS="${SITE_GEN_SETTINGS:-$SITE_GEN/settings.conf}" [ -f "$SETTINGS" ] || SETTINGS="$SITE_GEN/settings.conf.example" # shellcheck disable=SC1090 set -a source <(grep -v '^\s*#' "$SETTINGS" | grep -v '^\s*$' | sed 's/\r$//') set +a WORK_ROOT="${WORK_ROOT:-/tmp/taler-monitoring-sites-work}" HTML_DIR="$WORK_ROOT/html" DEPLOY_SSH="${DEPLOY_SSH:-}" DEPLOY_WWW_ROOT="${DEPLOY_WWW_ROOT:-}" if [ ! -d "$HTML_DIR" ]; then echo "no HTML_DIR $HTML_DIR — run generate-monitoring-sites.sh first" >&2 exit 1 fi echo "deploy $HTML_DIR → ${DEPLOY_SSH}:${DEPLOY_WWW_ROOT}/" # Prefer writing to a hernani-owned staging dir if /var/www not writable STAGE_REMOTE="${DEPLOY_STAGING:-${DEPLOY_STAGING:-$HOME/monitoring-sites-staging}}" ssh -o BatchMode=yes -o ConnectTimeout=20 "$DEPLOY_SSH" \ "mkdir -p '$STAGE_REMOTE' '$DEPLOY_WWW_ROOT' 2>/dev/null || mkdir -p '$STAGE_REMOTE'" rsync -az --delete "$HTML_DIR/" "${DEPLOY_SSH}:${STAGE_REMOTE}/" echo "staged on $DEPLOY_SSH:$STAGE_REMOTE" echo echo "If $DEPLOY_WWW_ROOT is root-owned, as root on koopa:" echo " mkdir -p $DEPLOY_WWW_ROOT" echo " rsync -a --delete $STAGE_REMOTE/ $DEPLOY_WWW_ROOT/" echo " chown -R caddy:caddy $DEPLOY_WWW_ROOT # or root:caddy — match other www" echo " # then Caddyfile handles + reload — see ROOT-ON-KOOPA.md" echo # try direct rsync to DEPLOY_WWW_ROOT if writable if ssh -o BatchMode=yes "$DEPLOY_SSH" "test -w '$DEPLOY_WWW_ROOT' 2>/dev/null || test -w \"\$(dirname '$DEPLOY_WWW_ROOT')\""; then rsync -az --delete "$HTML_DIR/" "${DEPLOY_SSH}:${DEPLOY_WWW_ROOT}/" && \ echo "also synced directly to $DEPLOY_WWW_ROOT" fi