diff --git a/scripts/check-ssl-permissions.sh b/scripts/check-ssl-permissions.sh new file mode 100644 index 0000000..5a0c589 --- /dev/null +++ b/scripts/check-ssl-permissions.sh @@ -0,0 +1,84 @@ +#!/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-Berechtigungen prüfen${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-Zertifikat-Berechtigungen +echo -e "${YELLOW}🔍 Prüfe SSL-Zertifikat-Berechtigungen...${NC}" + +# Starte Certbot-Container und prüfe Berechtigungen +${SUDO}${DOCKER_COMPOSE} -f docker-compose-prod.yml run --rm certbot 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-Details ===' +certbot certificates -d $DOMAIN 2>/dev/null || echo 'Zertifikat-Prüfung fehlgeschlagen' +echo '' +echo '=== Berechtigungen ===' +stat /etc/letsencrypt/live/$DOMAIN/fullchain.pem 2>/dev/null || echo 'fullchain.pem nicht gefunden' +stat /etc/letsencrypt/live/$DOMAIN/privkey.pem 2>/dev/null || echo 'privkey.pem nicht gefunden' +" + +echo -e "${YELLOW}🔧 Versuche Berechtigungen zu reparieren...${NC}" + +# Repariere Berechtigungen für SSL-Zertifikate +${SUDO}${DOCKER_COMPOSE} -f docker-compose-prod.yml run --rm certbot sh -c " +echo 'Repariere Berechtigungen...' +chmod -R 755 /etc/letsencrypt/live/ 2>/dev/null || echo 'live-Verzeichnis nicht gefunden' +chmod -R 755 /etc/letsencrypt/archive/ 2>/dev/null || echo 'archive-Verzeichnis nicht gefunden' +chmod 644 /etc/letsencrypt/live/$DOMAIN/fullchain.pem 2>/dev/null || echo 'fullchain.pem nicht gefunden' +chmod 600 /etc/letsencrypt/live/$DOMAIN/privkey.pem 2>/dev/null || echo 'privkey.pem nicht gefunden' +echo 'Berechtigungen repariert!' +" + +echo -e "${GREEN}✅ SSL-Berechtigungen-Prüfung abgeschlossen!${NC}"