#!/bin/bash # Deployment-Skript für jamulix.de set -e REMOTE_USER="${USER}" REMOTE_HOST="jamulix.de" REMOTE_DIR="/var/www/jamulix.de/html" LOCAL_DIR="/home/dschlueter/neue_jamulix.de_landing_page/jamulix.de_webpage_2" SSH_SOCKET="/tmp/ssh-jamulix-deploy-$$" ERROR_PAGES="401 403 404 500 502 503 504" cleanup() { ssh -S "$SSH_SOCKET" -O exit "$REMOTE_USER@$REMOTE_HOST" 2>/dev/null || true } trap cleanup EXIT echo "Starte Deployment auf $REMOTE_HOST..." # Einmalige Authentifizierung — alle folgenden SSH/rsync-Aufrufe nutzen diesen Socket ssh -M -S "$SSH_SOCKET" -o "ControlPersist=5m" -fN "$REMOTE_USER@$REMOTE_HOST" cd "$LOCAL_DIR" echo "Baue die Seite..." npm run build echo "Synchronisiere landingpage/ nach $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/..." rsync -av --delete -e "ssh -S $SSH_SOCKET" landingpage/ "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/" echo "Setze symbolischen Link: index.html → landingpage/index.html" ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html' && ln -s landingpage/index.html '$REMOTE_DIR/index.html'" echo "Setze symbolischen Link: favicon.ico → landingpage/favicon.ico" ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/favicon.ico' && ln -s landingpage/favicon.ico '$REMOTE_DIR/favicon.ico'" # Next.js lädt unter / die RSC-Segmente ohne basePath (/__next.*.txt) — ebenfalls verlinken echo "Setze symbolische Links: __next.*.txt → landingpage/__next.*.txt" ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "cd '$REMOTE_DIR' && rm -f __next.*.txt && for f in landingpage/__next.*.txt; do ln -s \$f \$(basename \$f); done" echo "Kopiere Fehlerseiten: landingpage/.html → .html" ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "for c in $ERROR_PAGES; do cp '$REMOTE_DIR'/landingpage/\$c.html '$REMOTE_DIR'/\$c.html; done" echo "" echo "Deployment abgeschlossen: https://jamulix.de"