# Plesk Test Server Docker-basierter Plesk-Testserver für die Entwicklung und das Testen der Email-Provisionierung. ## Schnellstart ```bash # Container starten docker-compose up -d # Logs anzeigen (erster Start dauert einige Minuten) docker-compose logs -f # Nach vollständigem Start: Passwort + API-Key einrichten ./setup-domain.sh ``` **Erster Start dauert 5-10 Minuten** - Plesk muss sich initialisieren. Das `setup-domain.sh` Skript: - Wartet bis Plesk bereit ist (max. 5 Minuten, mit Timeout) - **Konfiguriert Fail2Ban für Entwicklung** (Bantime: 60 Sekunden, max 10 Fehlversuche) - Setzt das Admin-Passwort auf `plesk1234!` - Generiert einen API-Key - Gibt Anleitung zur manuellen Domain-Erstellung aus ## Zugangsdaten | Feld | Wert | |------|------| | URL | https://localhost:8443 | | Benutzer | admin | | Passwort | plesk1234! | ## Domain einrichten (manuell) Plesk prüft DNS-Einträge und blockiert externe Domains per Default. Die Domain muss daher manuell im Panel erstellt werden: 1. Plesk Panel öffnen: https://localhost:8443 2. Login: admin / plesk1234! 3. **Tools & Settings** → **Security** → **Prohibited Domain Names** - Policy auf **None** setzen 4. **Websites & Domains** → **Add Domain** 5. Domain: `stressfrei-wechseln.de` 6. Mail-Service aktivieren ## API-Authentifizierung ### Option 1: Benutzername + Passwort Die einfachste Methode für Tests: ``` Benutzername: admin Passwort: plesk1234! ``` In OpenCRM Email-Provider Einstellungen: - **API-URL**: `https://localhost:8443` - **Benutzername**: `admin` - **Passwort**: `plesk1234!` ### Option 2: API-Key (empfohlen für Produktion) 1. Im Plesk Panel: **Tools & Einstellungen** → **API** 2. **Schlüssel hinzufügen** 3. Beschreibung eingeben (z.B. "OpenCRM") 4. IP-Beschränkung optional 5. Schlüssel kopieren In OpenCRM Email-Provider Einstellungen: - **API-URL**: `https://localhost:8443` - **API-Key**: `` - Benutzername/Passwort leer lassen ### Authentifizierungs-Priorität in OpenCRM OpenCRM verwendet **entweder** API-Key **oder** Benutzername/Passwort, nicht beides gleichzeitig: | API-Key | Benutzername/Passwort | Verwendet wird | |---------|----------------------|----------------| | ✅ Vorhanden | egal | **Nur API-Key** | | ❌ Leer | ✅ Vorhanden | **Basic Auth** | | ❌ Leer | ❌ Leer | Fehler | **Warum?** Wenn beide angegeben werden und eines davon falsch ist, würde Plesk trotzdem das funktionierende akzeptieren. Das führt zu verwirrenden Situationen beim Verbindungstest. ### API-Key per CLI generieren ```bash docker exec -it plesk-test plesk bin secret_key --create -description "OpenCRM" -ip-address "" ``` Schlüssel anzeigen: ```bash docker exec -it plesk-test plesk bin secret_key --list ``` ## API testen ### Verbindung testen ```bash # Mit Benutzername/Passwort curl -k -u admin:plesk1234! \ "https://localhost:8443/api/v2/server" # Mit API-Key curl -k -H "X-API-Key: DEIN_API_KEY" \ "https://localhost:8443/api/v2/server" ``` ### E-Mail-Adresse anlegen (REST API v2) ```bash curl -k -u admin:plesk1234! \ -X POST "https://localhost:8443/api/v2/cli/mail/call" \ -H "Content-Type: application/json" \ -d '{ "params": [ "--create", "test@stressfrei-wechseln.de", "-forwarding", "true", "-forwarding-addresses", "ziel@example.com" ] }' ``` ### E-Mail prüfen ob existiert ```bash curl -k -u admin:plesk1234! \ "https://localhost:8443/api/v2/cli/mail/call" \ -H "Content-Type: application/json" \ -d '{ "params": ["--info", "test@stressfrei-wechseln.de"] }' ``` ## Verzeichnisstruktur ``` plesktest/ ├── docker-compose.yml # Docker Compose Konfiguration ├── setup-domain.sh # Automatisches Setup-Skript ├── .gitignore # Git-Ignores für Daten ├── README.md # Diese Datei └── plesk-data/ # Persistente Plesk-Daten (nicht in Git) ``` ## Befehle ```bash # Starten docker-compose up -d # Stoppen docker-compose down # Stoppen + Daten löschen (Neustart) docker-compose down -v rm -rf plesk-data/* # Logs anzeigen docker-compose logs -f # Shell im Container docker exec -it plesk-test bash # Plesk CLI docker exec -it plesk-test plesk bin --help ``` ## Bekannte Einschränkungen - **Selbstsigniertes Zertifikat**: Browser zeigt Sicherheitswarnung - **Keine echte Domain**: DNS funktioniert nicht, nur für API-Tests geeignet - **Ressourcen**: Plesk benötigt ca. 2-4 GB RAM - **Erster Start**: Initialisierung dauert mehrere Minuten ## Fehlerbehebung ### Container startet nicht ```bash # Prüfen ob Port belegt lsof -i :8443 # Container-Status docker-compose ps # Detaillierte Logs docker-compose logs plesk ``` ### API antwortet nicht 1. Warten bis Plesk vollständig gestartet ist (Logs beobachten) 2. HTTPS mit `-k` Flag für selbstsigniertes Zertifikat 3. Firewall/Netzwerk prüfen ### Domain anlegen schlägt fehl Im Docker-Container funktionieren einige Plesk-Features eingeschränkt. Für reine API-Tests der Email-Funktionen reicht das Setup aus. ### API-Anfragen werden nach mehreren Tests blockiert (Fail2Ban) Das Setup-Script konfiguriert Fail2Ban mit kurzer Bantime (60 Sekunden). Falls du trotzdem geblockt wirst: ```bash # Aktuell gebannte IPs anzeigen docker exec plesk-test fail2ban-client status plesk-panel # Alle IPs entbannen docker exec plesk-test fail2ban-client unban --all # Fail2Ban komplett deaktivieren (nur für Tests!) docker exec plesk-test systemctl stop fail2ban ```