#!/usr/bin/env bash # Deploy Emma's Schatzkiste -> STRATO # # ./deploy.sh Trockenlauf: zeigt nur, was passieren wuerde # ./deploy.sh --live uebertraegt tatsaechlich # # Authentifizierung ueber den Schluessel ~/.ssh/emmas_strato (Host-Alias: emmas-strato). # Kein Passwort im Skript, keins in der Shell-History. set -euo pipefail cd "$(dirname "$0")" HOST="emmas-strato" REMOTE="${REMOTE_DIR:-./}" # relativ = Home des SSH-Users = /home/www (Webspace-Wurzel) # NICHT "/" — das waere die Dateisystem-Wurzel des Servers DRY="--dry-run" [[ "${1:-}" == "--live" ]] && DRY="" # CSS-Links mit Inhalts-Hash versionieren: aendert sich das Stylesheet, aendert sich # die URL, und Besucher mit altem Browser-Cache bekommen zwingend die neue Datei. python3 - <<'PYEOF' import io, glob, re, hashlib vs = hashlib.sha1(io.open('assets/site.css','rb').read()).hexdigest()[:8] vf = hashlib.sha1(io.open('assets/fonts.css','rb').read()).hexdigest()[:8] for f in sorted(glob.glob('*.html')): s = io.open(f, encoding='utf-8').read() n = re.sub(r'href="assets/site\.css(\?v=[0-9a-f]+)?"', f'href="assets/site.css?v={vs}"', s) n = re.sub(r'href="assets/fonts\.css(\?v=[0-9a-f]+)?"', f'href="assets/fonts.css?v={vf}"', n) if n != s: io.open(f,'w',encoding='utf-8').write(n) print(f"CSS-Version: site={vs} fonts={vf}") PYEOF # Nur das, was zur Website gehoert. Alles andere bleibt lokal. INCLUDE=(index.html hilfe-verein.html shop.html impressum.html datenschutz.html assets) echo "Ziel: $HOST:$REMOTE" echo "Modus: $([[ -z "$DRY" ]] && echo 'LIVE — Dateien werden uebertragen' || echo 'Trockenlauf')" echo rsync -rlptvz --checksum $DRY \ --exclude '.DS_Store' \ "${INCLUDE[@]}" \ "$HOST:$REMOTE" echo if [[ -n "$DRY" ]]; then echo "Trockenlauf beendet. Zum echten Uebertragen: ./deploy.sh --live" else echo "Uebertragen. Danach pruefen:" echo " - Domain im STRATO-Panel muss vom Baukasten auf den Webspace zeigen," echo " sonst bleibt die alte Baukasten-Seite sichtbar." echo " - https://emmas-schatzkiste.de/impressum.html" echo " - https://emmas-schatzkiste.de/datenschutz.html" echo " - Browser-Konsole: keine 404er, keine Fremdanfragen" fi