chore: echten HTTP-Health-Check statt nur systemd-Status in update.sh

systemctl is-active zeigt nur, dass der Prozess läuft — nicht, dass er
tatsächlich auf Anfragen antwortet (z.B. bei hängendem DB-Connect).
Beide Dienste werden jetzt per HTTP gegen /api/health (Backend) bzw.
Port 3000 (Frontend) mit Retry (15x1s) geprüft, bevor das Update als
erfolgreich gemeldet wird.
This commit is contained in:
sysops
2026-06-21 22:59:31 +02:00
parent f55a40c77d
commit d80a5d8050
+19 -3
View File
@@ -192,12 +192,28 @@ log "Dienste gestartet"
# Schema-Änderungen am Index nötig: manuell mit # Schema-Änderungen am Index nötig: manuell mit
# archivmail reindex --config /etc/archivmail/config.yml # archivmail reindex --config /etc/archivmail/config.yml
sleep 2
BACKEND_OK=0 BACKEND_OK=0
FRONTEND_OK=0 FRONTEND_OK=0
systemctl is-active --quiet archivmail && BACKEND_OK=1 || true # Health-Check statt nur systemd-Status: Backend muss tatsächlich auf
systemctl is-active --quiet archivmail-web && FRONTEND_OK=1 || true # HTTP antworten (Prozess kann laufen, aber z.B. an DB-Connect hängen).
info "Prüfe Backend-Health (/api/health)..."
for i in $(seq 1 15); do
if systemctl is-active --quiet archivmail && curl -fsS -o /dev/null --max-time 2 http://127.0.0.1:8080/api/health 2>/dev/null; then
BACKEND_OK=1
break
fi
sleep 1
done
info "Prüfe Frontend-Health (Port 3000)..."
for i in $(seq 1 15); do
if systemctl is-active --quiet archivmail-web && curl -fsS -o /dev/null --max-time 2 http://127.0.0.1:3000/ 2>/dev/null; then
FRONTEND_OK=1
break
fi
sleep 1
done
echo "" echo ""
echo " ┌──────────────────────────────────────┐" echo " ┌──────────────────────────────────────┐"