222 lines
5.4 KiB
Markdown
222 lines
5.4 KiB
Markdown
# 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**: `<generierter-schlüssel>`
|
|
- 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
|
|
```
|