#!/bin/bash # Setup-Skript für Plesk Test-Server # Ausführen nachdem der Container gestartet wurde CONTAINER="plesk-test" ADMIN_PASSWORD="plesk1234!" MAX_WAIT=300 echo "============================================" echo "Plesk Test-Server Setup" echo "============================================" echo "" # Prüfen ob Container läuft if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then echo "Container '$CONTAINER' läuft nicht!" echo "Starte zuerst mit: docker-compose up -d" exit 1 fi echo "Warte auf Plesk (max. ${MAX_WAIT}s)..." WAITED=0 while [ $WAITED -lt $MAX_WAIT ]; do if docker exec $CONTAINER curl -sk https://localhost:8443/login 2>/dev/null | grep -q "Plesk"; then echo "Plesk Panel ist erreichbar!" break fi echo " ... warte ($WAITED s)" sleep 10 WAITED=$((WAITED + 10)) done if [ $WAITED -ge $MAX_WAIT ]; then echo "Timeout! Plesk nicht bereit nach ${MAX_WAIT}s" exit 1 fi sleep 5 echo "" echo "Konfiguriere Fail2Ban für Entwicklung..." # Bantime auf 1 Minute setzen (Standard ist oft 10+ Minuten) docker exec $CONTAINER bash -c 'cat > /etc/fail2ban/jail.d/dev-settings.conf << EOF [DEFAULT] bantime = 60 findtime = 60 maxretry = 10 [plesk-panel] enabled = true bantime = 60 findtime = 60 maxretry = 10 [plesk-apache] enabled = true bantime = 60 findtime = 60 maxretry = 10 [plesk-wordpress] enabled = false [plesk-proftpd] enabled = false [plesk-postfix] enabled = false [plesk-dovecot] enabled = false [ssh] enabled = false [recidive] enabled = false EOF' # Fail2Ban neu laden docker exec $CONTAINER bash -c 'systemctl restart fail2ban 2>/dev/null || service fail2ban restart 2>/dev/null || true' echo " -> Bantime auf 60 Sekunden gesetzt" echo "" echo "Aktiviere SMTP auf Port 587 (Submission/STARTTLS)..." # Konfiguriere Dovecot Auth-Socket für Postfix-Zugriff docker exec $CONTAINER bash -c ' # 1. Postfix-Benutzer zur Dovecot-Gruppe hinzufügen für Socket-Zugriff usermod -aG dovecot postfix 2>/dev/null || true echo "Postfix zur Dovecot-Gruppe hinzugefügt" # 2. Dovecot-Konfiguration für Postfix SASL erweitern # Prüfen ob auth-client bereits für Postfix konfiguriert ist if ! grep -q "unix_listener auth-client" /etc/dovecot/conf.d/*auth*.conf 2>/dev/null; then # Neue Auth-Socket Konfiguration für Postfix hinzufügen cat >> /etc/dovecot/conf.d/10-master.conf << DOVECONF # Auth-Socket für Postfix SASL (OpenCRM Setup) service auth { unix_listener auth-client { mode = 0660 user = postfix group = postfix } } DOVECONF echo "Dovecot Auth-Socket für Postfix konfiguriert" # Dovecot neu laden doveadm reload 2>/dev/null || systemctl reload dovecot 2>/dev/null || true fi # 3. Entferne alte submission-Konfiguration falls vorhanden if grep -q "^submission" /etc/postfix/master.cf; then echo "Entferne alte submission-Konfiguration..." awk "/^submission/{skip=1; next} /^[^ \t]/ && skip{skip=0} !skip" /etc/postfix/master.cf > /tmp/master.cf.new mv /tmp/master.cf.new /etc/postfix/master.cf fi # 4. Neue Submission-Konfiguration hinzufügen cat >> /etc/postfix/master.cf << EOF # Submission Port 587 für STARTTLS (OpenCRM Setup) submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=/run/dovecot/auth-client -o smtpd_sasl_security_options=noanonymous -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject EOF echo "Port 587 mit Dovecot SASL konfiguriert" # 5. Dovecot neustarten damit Socket-Berechtigungen wirksam werden systemctl restart dovecot 2>/dev/null || service dovecot restart 2>/dev/null || true sleep 1 # 6. Socket-Berechtigungen als Fallback direkt setzen chmod 666 /run/dovecot/auth-client 2>/dev/null || true echo "Auth-Socket Berechtigungen gesetzt" # 7. Postfix komplett neustarten (nicht nur reload) postfix stop 2>/dev/null || true postfix start echo "Postfix neugestartet" ' echo " -> SMTP Submission Port 587 konfiguriert" echo "" echo "Setze Admin-Passwort..." docker exec $CONTAINER plesk bin admin --set-admin-password -passwd "$ADMIN_PASSWORD" 2>&1 echo "" echo "Erstelle API-Key..." docker exec $CONTAINER plesk bin secret_key --delete -filter "OpenCRM-Test" 2>/dev/null KEY_OUTPUT=$(docker exec $CONTAINER plesk bin secret_key --create -description "OpenCRM-Test" 2>&1) echo "$KEY_OUTPUT" # Extrahiere den Key (UUID-Format) API_KEY=$(echo "$KEY_OUTPUT" | grep -oE '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' | head -1) echo "" echo "============================================" echo "SETUP ABGESCHLOSSEN" echo "============================================" echo "" echo "Plesk Panel:" echo " URL: https://localhost:8443" echo " Benutzer: admin" echo " Passwort: $ADMIN_PASSWORD" echo "" if [ -n "$API_KEY" ]; then echo "API-Key: $API_KEY" else echo "API-Key: (siehe Ausgabe oben)" fi echo "" echo "============================================" echo "DOMAIN MANUELL ERSTELLEN" echo "============================================" echo "" echo "Plesk prüft DNS-Einträge und blockiert externe Domains." echo "Domain muss manuell im Panel erstellt werden:" echo "" echo "1. https://localhost:8443 öffnen" echo "2. Login: admin / $ADMIN_PASSWORD" echo "3. Tools & Settings > Security > Prohibited Domain Names" echo " -> Policy auf 'None' setzen" echo "4. Websites & Domains > Add Domain" echo "5. Domain: stressfrei-wechseln.de" echo "6. Mail-Service aktivieren" echo "7. Optional: Tools & Settings > Mail Server Settings" echo " -> 'Enable SMTP service on port 587' aktivieren (bereits per Script konfiguriert)" echo "" echo "============================================" echo "OpenCRM Einstellungen" echo "============================================" echo "" echo " Name: Plesk Test" echo " Typ: PLESK" echo " API-URL: https://localhost:8443" if [ -n "$API_KEY" ]; then echo " API-Key: $API_KEY" else echo " Benutzer: admin" echo " Passwort: $ADMIN_PASSWORD" fi echo " Domain: stressfrei-wechseln.de" echo "" echo "============================================"