diff --git a/scripts/check-ssl-simple.sh b/scripts/check-ssl-simple.sh new file mode 100644 index 0000000..b30b6cb --- /dev/null +++ b/scripts/check-ssl-simple.sh @@ -0,0 +1,122 @@ +#!/bin/bash + +# Farben für Output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +echo -e "${BLUE}🔧 Stargirlnails Kiel - SSL-Zertifikat direkt prüfen (ohne Certbot)${NC}" +echo "==================================================================" + +# Prüfe ob .env-Datei existiert +if [ ! -f .env ]; then + echo -e "${RED}❌ .env-Datei nicht gefunden!${NC}" + exit 1 +fi + +# Extrahiere DOMAIN aus .env +DOMAIN=$(grep -E '^DOMAIN=' .env | cut -d '=' -f2- | tr -d '"') + +if [ -z "$DOMAIN" ]; then + echo -e "${RED}❌ DOMAIN nicht in .env gefunden!${NC}" + exit 1 +fi + +echo -e "${GREEN}✅ Domain: $DOMAIN${NC}" + +# Erkenne Docker Compose-Version +if command -v docker-compose >/dev/null 2>&1; then + DOCKER_COMPOSE="docker-compose" +elif docker compose version >/dev/null 2>&1; then + DOCKER_COMPOSE="docker compose" +else + echo -e "${RED}❌ Docker Compose nicht gefunden!${NC}" + exit 1 +fi + +# Prüfe Docker-Berechtigungen +SUDO="" +if ! docker info >/dev/null 2>&1; then + if command -v sudo >/dev/null 2>&1; then + SUDO="sudo " + echo -e "${YELLOW}⚠️ Docker benötigt Root-Rechte. Verwende 'sudo'.${NC}" + else + echo -e "${RED}❌ Docker läuft nicht und 'sudo' ist nicht verfügbar.${NC}" + exit 1 + fi +fi + +echo -e "${GREEN}✅ Verwende: ${SUDO}${DOCKER_COMPOSE}${NC}" + +# Prüfe SSL-Zertifikate direkt im Volume mit einem einfachen Container +echo -e "${YELLOW}🔍 Prüfe SSL-Zertifikate direkt im Volume...${NC}" + +# Verwende einen einfachen Alpine-Container direkt mit Docker +${SUDO}docker run --rm -v beauty-bookings_certbot-certs:/etc/letsencrypt alpine:latest sh -c " +echo '=== SSL-Zertifikat-Verzeichnis-Inhalt ===' +ls -la /etc/letsencrypt/live/ 2>/dev/null || echo 'Kein live-Verzeichnis gefunden' +echo '' +echo '=== SSL-Zertifikat für $DOMAIN ===' +ls -la /etc/letsencrypt/live/$DOMAIN/ 2>/dev/null || echo 'Kein Zertifikat für $DOMAIN gefunden' +echo '' +echo '=== Zertifikat-Dateien ===' +if [ -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem ]; then + echo '✅ fullchain.pem gefunden' + ls -la /etc/letsencrypt/live/$DOMAIN/fullchain.pem +else + echo '❌ fullchain.pem nicht gefunden' +fi +if [ -f /etc/letsencrypt/live/$DOMAIN/privkey.pem ]; then + echo '✅ privkey.pem gefunden' + ls -la /etc/letsencrypt/live/$DOMAIN/privkey.pem +else + echo '❌ privkey.pem nicht gefunden' +fi +echo '' +echo '=== Berechtigungen ===' +if [ -d /etc/letsencrypt/live/$DOMAIN ]; then + stat /etc/letsencrypt/live/$DOMAIN/fullchain.pem 2>/dev/null || echo 'fullchain.pem nicht zugänglich' + stat /etc/letsencrypt/live/$DOMAIN/privkey.pem 2>/dev/null || echo 'privkey.pem nicht zugänglich' +fi +" + +# Prüfe ob Zertifikate vorhanden sind +echo -e "${YELLOW}🔍 Prüfe ob Zertifikate für HTTPS verfügbar sind...${NC}" + +CERT_EXISTS=false +if ${SUDO}docker run --rm -v beauty-bookings_certbot-certs:/etc/letsencrypt alpine:latest test -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem; then + CERT_EXISTS=true +fi + +if [ "$CERT_EXISTS" = true ]; then + echo -e "${GREEN}✅ SSL-Zertifikate sind verfügbar!${NC}" + echo -e "${YELLOW}📝 Aktiviere HTTPS-Konfiguration...${NC}" + + # Stelle die ursprüngliche HTTPS-Konfiguration wieder her + git checkout nginx/nginx.conf + sed "s/\${DOMAIN}/$DOMAIN/g" nginx/nginx.conf > nginx/nginx.conf.tmp + mv nginx/nginx.conf.tmp nginx/nginx.conf + + # Starte Nginx neu mit HTTPS-Konfiguration + echo -e "${YELLOW}🔄 Starte Nginx mit HTTPS-Konfiguration...${NC}" + ${SUDO}${DOCKER_COMPOSE} -f docker-compose-prod.yml restart nginx + + sleep 5 + + echo -e "${GREEN}✅ HTTPS ist jetzt aktiviert!${NC}" + echo -e "${BLUE}🌐 Deine Anwendung ist jetzt verfügbar unter:${NC}" + echo -e "${GREEN} https://$DOMAIN${NC}" +else + echo -e "${YELLOW}⚠️ Keine SSL-Zertifikate gefunden.${NC}" + echo -e "${BLUE}🌐 Deine Anwendung läuft weiterhin über HTTP:${NC}" + echo -e "${GREEN} http://$DOMAIN${NC}" + echo "" + echo -e "${YELLOW}💡 Um HTTPS zu aktivieren:${NC}" + echo " 1. Stelle sicher, dass Port 80 und 443 erreichbar sind" + echo " 2. Führe manuell SSL-Zertifikatserstellung durch" + echo " 3. Oder verwende ein anderes SSL-Setup-Tool" +fi + +echo -e "${GREEN}✅ SSL-Prüfung abgeschlossen!${NC}"