diff --git a/scripts/setup-ssl.sh b/scripts/setup-ssl.sh index 18e11ec..35dbbe7 100644 --- a/scripts/setup-ssl.sh +++ b/scripts/setup-ssl.sh @@ -42,11 +42,22 @@ echo -e "${GREEN}✅ Domain: $DOMAIN${NC}" echo -e "${GREEN}✅ Admin E-Mail: $ADMIN_EMAIL${NC}" echo "" +# Prüfe, ob Docker Root-Rechte braucht und setze optional sudo +if docker info >/dev/null 2>&1; then + SUDO="" +elif command -v sudo >/dev/null 2>&1; then + SUDO="sudo " +else + echo -e "${RED}❌ Keine Berechtigung für Docker und 'sudo' nicht verfügbar.${NC}" + echo "Bitte als Root ausführen oder Benutzer in die 'docker'-Gruppe aufnehmen." + exit 1 +fi + # Erkenne Docker Compose-Version (docker-compose vs docker compose) if command -v docker-compose >/dev/null 2>&1; then - DOCKER_COMPOSE="docker-compose" + DOCKER_COMPOSE="${SUDO}docker-compose" elif docker compose version >/dev/null 2>&1; then - DOCKER_COMPOSE="docker compose" + DOCKER_COMPOSE="${SUDO}docker compose" else echo -e "${RED}❌ Docker Compose nicht gefunden!${NC}" echo "Bitte installiere Docker Compose" @@ -62,12 +73,12 @@ mv nginx/nginx.conf.tmp nginx/nginx.conf # Erstelle Docker Volumes echo -e "${YELLOW}📦 Erstelle Docker Volumes...${NC}" -docker volume create certbot-certs 2>/dev/null || true -docker volume create certbot-webroot 2>/dev/null || true +${SUDO}docker volume create certbot-certs 2>/dev/null || true +${SUDO}docker volume create certbot-webroot 2>/dev/null || true # Starte temporären HTTP-Server für Domain-Validierung echo -e "${YELLOW}🌐 Starte temporären HTTP-Server...${NC}" -$DOCKER_COMPOSE -f docker-compose-prod.yml up -d nginx +${DOCKER_COMPOSE} -f docker-compose-prod.yml up -d nginx # Warte bis Nginx läuft echo -e "${YELLOW}⏳ Warte auf Nginx...${NC}" @@ -75,7 +86,7 @@ sleep 10 # Erstelle SSL-Zertifikat echo -e "${YELLOW}🔐 Erstelle SSL-Zertifikat für $DOMAIN...${NC}" -$DOCKER_COMPOSE -f docker-compose-prod.yml run --rm certbot certbot certonly \ +${DOCKER_COMPOSE} -f docker-compose-prod.yml run --rm certbot certbot certonly \ --webroot \ --webroot-path=/var/www/certbot \ --email $ADMIN_EMAIL \ @@ -97,23 +108,23 @@ fi # Starte alle Services echo -e "${YELLOW}🚀 Starte alle Services...${NC}" -$DOCKER_COMPOSE -f docker-compose-prod.yml up -d +${DOCKER_COMPOSE} -f docker-compose-prod.yml up -d # Prüfe Status echo -e "${YELLOW}🔍 Prüfe Service-Status...${NC}" sleep 5 -if $DOCKER_COMPOSE -f docker-compose-prod.yml ps | grep -q "Up"; then +if ${DOCKER_COMPOSE} -f docker-compose-prod.yml ps | grep -q "Up"; then echo -e "${GREEN}✅ Alle Services laufen!${NC}" echo "" echo -e "${BLUE}🌐 Deine Anwendung ist jetzt verfügbar unter:${NC}" echo -e "${GREEN} https://$DOMAIN${NC}" echo "" echo -e "${BLUE}📋 Nützliche Befehle:${NC}" - echo " Status anzeigen: $DOCKER_COMPOSE -f docker-compose-prod.yml ps" - echo " Logs anzeigen: $DOCKER_COMPOSE -f docker-compose-prod.yml logs -f" - echo " Services stoppen: $DOCKER_COMPOSE -f docker-compose-prod.yml down" - echo " Zertifikat erneuern: $DOCKER_COMPOSE -f docker-compose-prod.yml run --rm certbot certbot renew" + echo " Status anzeigen: ${DOCKER_COMPOSE} -f docker-compose-prod.yml ps" + echo " Logs anzeigen: ${DOCKER_COMPOSE} -f docker-compose-prod.yml logs -f" + echo " Services stoppen: ${DOCKER_COMPOSE} -f docker-compose-prod.yml down" + echo " Zertifikat erneuern: ${DOCKER_COMPOSE} -f docker-compose-prod.yml run --rm certbot certbot renew" echo "" echo -e "${YELLOW}⚠️ Wichtig:${NC}" echo " - SSL-Zertifikate werden automatisch alle 12 Stunden erneuert" @@ -121,6 +132,6 @@ if $DOCKER_COMPOSE -f docker-compose-prod.yml ps | grep -q "Up"; then echo " - Stelle sicher, dass Port 80 und 443 erreichbar sind" else echo -e "${RED}❌ Einige Services sind nicht gestartet!${NC}" - echo "Prüfe die Logs: $DOCKER_COMPOSE -f docker-compose-prod.yml logs" + echo "Prüfe die Logs: ${DOCKER_COMPOSE} -f docker-compose-prod.yml logs" exit 1 fi