feat: Improve error handling and messaging in nginx configuration script

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-04-27 20:16:39 +02:00
parent 7d84999798
commit ba0e88ced7
2 changed files with 34 additions and 17 deletions
+1
View File
@@ -1,3 +1,4 @@
# Key Service Server # Key Service Server
Dieses Repository ist auf einen schlanken, Docker-first Betrieb ausgerichtet. Dieses Repository ist auf einen schlanken, Docker-first Betrieb ausgerichtet.
+31 -15
View File
@@ -81,12 +81,19 @@ configure_nginx_site() {
echo "Nutze HTTPS nginx Template fuer $domain." echo "Nutze HTTPS nginx Template fuer $domain."
if [ ! -f "$template_file" ]; then if [ ! -f "$template_file" ]; then
echo "Fehler: nginx Template nicht gefunden: $template_file" echo "[FEHLER] nginx Template nicht gefunden: $template_file" >&2
exit 1 echo "[HINWEIS] Prüfe, ob die Datei existiert und korrekt benannt ist." >&2
exit 11
fi fi
render_nginx_template "$template_file" "$site_file" "$domain" "$upstream_port" "$cert_file" "$key_file" if ! render_nginx_template "$template_file" "$site_file" "$domain" "$upstream_port" "$cert_file" "$key_file"; then
sudo ln -sf "$site_file" "$site_link" echo "[FEHLER] nginx Template konnte nicht gerendert werden: $template_file" >&2
exit 12
fi
if ! sudo ln -sf "$site_file" "$site_link"; then
echo "[FEHLER] Symlink für nginx Site konnte nicht erstellt werden: $site_link" >&2
exit 13
fi
} }
ensure_ssl_certificate() { ensure_ssl_certificate() {
@@ -95,25 +102,30 @@ ensure_ssl_certificate() {
local key_file="$3" local key_file="$3"
if ! command -v openssl >/dev/null 2>&1; then if ! command -v openssl >/dev/null 2>&1; then
echo "Fehler: openssl ist nicht installiert." echo "[FEHLER] openssl ist nicht installiert. Bitte installiere openssl." >&2
exit 1 exit 21
fi fi
sudo mkdir -p "$CERT_DIR" sudo mkdir -p "$CERT_DIR"
if [ -f "$cert_file" ] && [ -f "$key_file" ]; then if [ -f "$cert_file" ] && [ -f "$key_file" ]; then
if sudo openssl x509 -in "$cert_file" -noout >/dev/null 2>&1; then
echo "SSL Zertifikat gefunden fuer $domain: $cert_file" echo "SSL Zertifikat gefunden fuer $domain: $cert_file"
return return
else
echo "[WARNUNG] Zertifikat $cert_file ist beschädigt oder ungültig. Erstelle neu..."
sudo rm -f "$cert_file" "$key_file"
fi
fi fi
echo "Kein SSL Zertifikat fuer $domain gefunden. Erzeuge self-signed Zertifikat..." echo "Kein gültiges SSL Zertifikat für $domain gefunden. Erzeuge self-signed Zertifikat..."
if ! sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 \ if ! sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 \
-days "$SSL_CERT_DAYS" \ -days "$SSL_CERT_DAYS" \
-keyout "$key_file" \ -keyout "$key_file" \
-out "$cert_file" \ -out "$cert_file" \
-subj "/CN=$domain" \ -subj "/CN=$domain" \
-addext "subjectAltName=DNS:$domain"; then -addext "subjectAltName=DNS:$domain"; then
# Fallback fuer aeltere openssl-Versionen ohne -addext. # Fallback für ältere openssl-Versionen ohne -addext.
sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 \ sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 \
-days "$SSL_CERT_DAYS" \ -days "$SSL_CERT_DAYS" \
-keyout "$key_file" \ -keyout "$key_file" \
@@ -123,30 +135,34 @@ ensure_ssl_certificate() {
sudo chmod 600 "$key_file" sudo chmod 600 "$key_file"
sudo chmod 644 "$cert_file" sudo chmod 644 "$cert_file"
echo "[INFO] Selbstsigniertes Zertifikat für $domain wurde erstellt: $cert_file"
} }
reload_nginx() { reload_nginx() {
echo "Pruefe nginx Konfiguration..." echo "Pruefe nginx Konfiguration..."
sudo nginx -t if ! sudo nginx -t; then
echo "[FEHLER] nginx Konfiguration fehlerhaft! Bitte prüfe die Ausgaben oben." >&2
exit 31
fi
if sudo pgrep -x nginx >/dev/null 2>&1; then if sudo pgrep -x nginx >/dev/null 2>&1; then
echo "Nginx Prozess gefunden, lade Konfiguration neu..." echo "Nginx Prozess gefunden, lade Konfiguration neu..."
if ! sudo nginx -s reload; then if ! sudo nginx -s reload; then
echo "Warnung: nginx konnte nicht automatisch neu geladen werden." echo "[WARNUNG] nginx konnte nicht automatisch neu geladen werden."
echo "Die Konfiguration wurde geschrieben; bitte nginx bei Bedarf manuell neu laden." echo "Die Konfiguration wurde geschrieben; bitte nginx bei Bedarf manuell neu laden."
fi fi
elif sudo systemctl is-active --quiet nginx; then elif sudo systemctl is-active --quiet nginx; then
echo "Lade nginx neu..." echo "Lade nginx neu..."
if ! sudo systemctl reload nginx; then if ! sudo systemctl reload nginx; then
echo "Warnung: nginx reload via systemd fehlgeschlagen." echo "[WARNUNG] nginx reload via systemd fehlgeschlagen."
echo "Bitte pruefe: sudo systemctl status nginx.service" echo "Bitte prüfe: sudo systemctl status nginx.service"
fi fi
else else
echo "Nginx ist nicht aktiv, starte nginx..." echo "Nginx ist nicht aktiv, starte nginx..."
if ! sudo systemctl start nginx; then if ! sudo systemctl start nginx; then
echo "Warnung: Nginx konnte nicht ueber systemd gestartet werden." echo "[WARNUNG] Nginx konnte nicht über systemd gestartet werden."
echo "Falls nginx bereits manuell laeuft, kann die Weiterleitung trotzdem funktionieren." echo "Falls nginx bereits manuell läuft, kann die Weiterleitung trotzdem funktionieren."
echo "Ansonsten pruefe: sudo systemctl status nginx.service" echo "Ansonsten prüfe: sudo systemctl status nginx.service"
echo "Und Logs mit: sudo journalctl -xeu nginx.service" echo "Und Logs mit: sudo journalctl -xeu nginx.service"
fi fi
fi fi