#!/bin/sh set -e DOMAIN="${FQDN:-location.butenostfreesen.de}" EMAIL="${CERTBOT_EMAIL:-}" # FQDN in Config ersetzen subst() { sed "s/__FQDN__/$DOMAIN/g" "$1"; } # Entferne Standard-Config rm -f /etc/nginx/conf.d/default.conf # Bootstrap-Config verwenden, wenn Zertifikate noch nicht existieren if [ ! -f "/etc/letsencrypt/live/${DOMAIN}/fullchain.pem" ]; then echo "Zertifikate nicht gefunden. Starte mit Bootstrap-Config..." subst /etc/nginx/templates/nginx-bootstrap.conf > /etc/nginx/conf.d/default.conf nginx -g "daemon off;" & NGINX_PID=$! # Warte auf Backend echo "Warte auf Backend..." sleep 10 if [ -n "$EMAIL" ]; then echo "Fordere Let's Encrypt Zertifikat an..." if certbot certonly --webroot -w /var/www/certbot \ --email "$EMAIL" \ --agree-tos \ --no-eff-email \ --non-interactive \ -d "$DOMAIN"; then echo "Zertifikat erfolgreich erstellt. Starte nginx mit HTTPS..." kill $NGINX_PID 2>/dev/null || true sleep 2 subst /etc/nginx/templates/nginx.conf > /etc/nginx/conf.d/default.conf else echo "Zertifikatsanforderung fehlgeschlagen. Laeufe mit HTTP (Port 80)." echo "Stelle sicher, dass ${DOMAIN} auf diesen Server zeigt." exec wait $NGINX_PID fi else echo "HINWEIS: CERTBOT_EMAIL nicht gesetzt. Starte ohne SSL." echo "Fuer Let's Encrypt: CERTBOT_EMAIL=deine@email.de setzen und Container neu starten." exec wait $NGINX_PID fi else subst /etc/nginx/templates/nginx.conf > /etc/nginx/conf.d/default.conf fi # Zertifikatserneuerung alle 12 Stunden im Hintergrund (while true; do sleep 12h; certbot renew --webroot -w /var/www/certbot --deploy-hook "nginx -s reload" 2>&1 | tee -a /var/log/certbot-renew.log; done) & exec nginx -g "daemon off;"