CardSync/nginx/entrypoint.sh

44 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
# CardSync Nginx Entrypoint
# Generiert ein selbstsigniertes Zertifikat falls noch keins vorhanden ist.
# Eigene Zertifikate können einfach in ./nginx/certs/ als cert.pem + key.pem
# abgelegt werden — diese werden dann verwendet.
set -e
CERT_DIR="/etc/nginx/certs"
CERT_FILE="$CERT_DIR/cert.pem"
KEY_FILE="$CERT_DIR/key.pem"
mkdir -p "$CERT_DIR"
if [ ! -f "$CERT_FILE" ] || [ ! -f "$KEY_FILE" ]; then
echo "==> Kein TLS-Zertifikat gefunden — generiere selbstsigniertes Cert..."
# OpenSSL ist im nginx:alpine Image bereits vorhanden
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout "$KEY_FILE" \
-out "$CERT_FILE" \
-days 3650 \
-subj "/CN=cardsync.local/O=CardSync/C=DE" \
-addext "subjectAltName=DNS:cardsync.local,DNS:localhost,IP:127.0.0.1" \
2>/dev/null
chmod 644 "$CERT_FILE"
chmod 600 "$KEY_FILE"
echo "==> Selbstsigniertes Zertifikat erstellt (gültig 10 Jahre)"
echo " Cert: $CERT_FILE"
echo " Key: $KEY_FILE"
echo ""
echo " Um ein eigenes Zertifikat zu verwenden:"
echo " - Lege cert.pem + key.pem in ./nginx/certs/ ab"
echo " - docker compose restart frontend"
else
echo "==> Verwende vorhandenes TLS-Zertifikat aus $CERT_DIR"
# Kurze Cert-Info ausgeben
openssl x509 -in "$CERT_FILE" -noout -subject -issuer -dates 2>/dev/null || true
fi
# Nginx im Vordergrund starten (Standard-Behavior fortsetzen)
exec nginx -g "daemon off;"