44 lines
1.5 KiB
Bash
Executable file
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;"
|