Spannung/deploy.sh

53 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
set -e
# --- PARAMETER-PRÜFUNG ---
if [ $# -lt 2 ]; then
echo "❌ Fehler: Fehlende Argumente."
echo "Verwendung: $0 <user> <host>"
echo "Beispiel: $0 afu 100.64.0.4"
exit 1
fi
PI_USER="$1"
PI_HOST="$2"
TARGET_DIR="spannung/app"
SERVICE_NAME="spannung.service"
echo "🚀 Starte Deployment auf $PI_USER@$PI_HOST..."
# --- ZERTIFIKATE ERZEUGEN ---
# Prüfen, ob die Zertifikate bereits im lokalen app-Ordner existieren
if [ ! -f ./app/cert.pem ] || [ ! -f ./app/key.pem ]; then
echo "🔐 Generiere selbstsignierte SSL-Zertifikate für HTTPS..."
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout ./app/key.pem \
-out ./app/cert.pem \
-days 365 \
-subj "/C=DE/ST=Bavaria/L=Koeditz/O=info@lang-dieter.de/CN=$PI_HOST" 2>/dev/null
echo "✅ SSL-Zertifikate lokal in ./app/ erstellt."
else
echo "🔒 Bestehende SSL-Zertifikate in ./app/ gefunden. Werden wiederverwendet."
fi
# 1. Altes Zielverzeichnis auf dem Pi löschen und frisch erstellen
ssh "$PI_USER@$PI_HOST" "rm -rf \"\$HOME/$TARGET_DIR\" && mkdir -p \"\$HOME/$TARGET_DIR\""
# 2. Den INHALT des lokal fertig gebauten 'app'-Ordners (inkl. Zertifikate) zum Pi kopieren
echo "📦 Übertrage vorkompilierte Anwendung, Webseiten und Zertifikate..."
scp -r ./app/* "$PI_USER@$PI_HOST:$TARGET_DIR/"
# 3. Das Setup-Skript direkt auf dem Pi ausführen
ssh -t "$PI_USER@$PI_HOST" "
cd \${HOME}/${TARGET_DIR}
# Windows-Zeilenumbrüche zur Sicherheit entfernen
sed -i 's/\r//' ./install.sh
sed -i 's/\r//' ./${SERVICE_NAME}
# Das Installationsskript auf dem Pi ausführen
./install.sh
"
echo "✅ Deployment erfolgreich abgeschlossen! Zeige Live-Logs (Beenden mit STRG+C)..."
ssh -t "$PI_USER@$PI_HOST" "sudo journalctl -f -u ${SERVICE_NAME}"