Files
automat26/customer-installer/REGISTRATION_SETUP_GUIDE.md

441 lines
9.3 KiB
Markdown
Raw Permalink Normal View History

2026-02-25 22:47:22 +01:00
# 🚀 BotKonzept - Registrierungs-Setup Guide
## 📋 Übersicht
Dieser Guide erklärt, wie Sie die Benutzerregistrierung für BotKonzept zum Laufen bringen.
---
## ✅ Was bereits vorhanden ist
### 1. Frontend (customer-frontend)
- ✅ Registrierungsformular (`index.html`)
- ✅ Formular-Validierung (`js/main.js`)
- ✅ Webhook-URL: `https://n8n.userman.de/webhook/botkonzept-registration`
### 2. Backend (customer-installer)
-`install.sh` - Erstellt LXC-Container automatisch
-`setup_nginx_proxy.sh` - Konfiguriert Reverse Proxy
- ✅ Datenbank-Schema (`sql/botkonzept_schema.sql`)
### 3. n8n Workflows
-`BotKonzept-Customer-Registration-Workflow.json`
-`BotKonzept-Trial-Management-Workflow.json`
---
## 🔧 Setup-Schritte
### Schritt 1: Datenbank einrichten
```bash
# Auf Ihrem Supabase/PostgreSQL Server
psql -U postgres -d botkonzept < customer-installer/sql/botkonzept_schema.sql
```
**Oder in Supabase Dashboard:**
1. Gehen Sie zu SQL Editor
2. Kopieren Sie den Inhalt von `sql/botkonzept_schema.sql`
3. Führen Sie das SQL aus
**Tabellen die erstellt werden:**
- `customers` - Kundendaten
- `instances` - LXC-Instanzen
- `emails_sent` - E-Mail-Tracking
- `subscriptions` - Abonnements
- `payments` - Zahlungen
- `usage_stats` - Nutzungsstatistiken
- `audit_log` - Audit-Trail
---
### Schritt 2: n8n Credentials einrichten
Sie benötigen folgende Credentials in n8n:
#### 2.1 PostgreSQL/Supabase Credential
**Name:** `Supabase Local`
**Typ:** Postgres
**Konfiguration:**
```
Host: localhost (oder Ihr Supabase Host)
Port: 5432
Database: botkonzept
User: postgres (oder service_role)
Password: [Ihr Passwort]
SSL: Enabled (für Supabase)
```
#### 2.2 SSH Credential für PVE20
**Name:** `PVE20`
**Typ:** SSH (Private Key)
**Konfiguration:**
```
Host: 192.168.45.20 (oder Ihre PVE20 IP)
Port: 22
Username: root
Private Key: [Ihr SSH Private Key]
```
**SSH Key generieren (falls noch nicht vorhanden):**
```bash
# Auf dem n8n Server
ssh-keygen -t ed25519 -C "n8n@botkonzept"
# Public Key auf PVE20 kopieren
ssh-copy-id root@192.168.45.20
```
#### 2.3 SMTP Credential für E-Mails
**Name:** `Postfix SES`
**Typ:** SMTP
**Konfiguration:**
**Option A: Amazon SES**
```
Host: email-smtp.eu-central-1.amazonaws.com
Port: 587
User: [Ihr SMTP Username]
Password: [Ihr SMTP Password]
From Email: noreply@botkonzept.de
```
**Option B: Postfix (lokal)**
```
Host: localhost
Port: 25
From Email: noreply@botkonzept.de
```
**Option C: Gmail (für Tests)**
```
Host: smtp.gmail.com
Port: 587
User: your-email@gmail.com
Password: [App-spezifisches Passwort]
From Email: your-email@gmail.com
```
---
### Schritt 3: n8n Workflows importieren
#### 3.1 Customer Registration Workflow
1. Öffnen Sie n8n: `https://n8n.userman.de`
2. Klicken Sie auf **"+"** → **"Import from File"**
3. Wählen Sie `BotKonzept-Customer-Registration-Workflow.json`
4. **Wichtig:** Passen Sie folgende Nodes an:
**Node: "Create Customer in DB"**
- Credential: `Supabase Local` auswählen
- Query anpassen falls nötig
**Node: "Create Customer Instance"**
- Credential: `PVE20` auswählen
- Command prüfen:
```bash
/root/customer-installer/install.sh \
--storage local-zfs \
--bridge vmbr0 \
--ip dhcp \
--vlan 90 \
--apt-proxy http://192.168.45.2:3142 \
--n8n-owner-email {{ $json.email }} \
--n8n-owner-pass "{{ $('Generate Password & Trial Date').item.json.password }}"
```
**Node: "Send Welcome Email"**
- Credential: `Postfix SES` auswählen
- From Email anpassen: `noreply@botkonzept.de`
5. Klicken Sie auf **"Save"**
6. Klicken Sie auf **"Activate"** (oben rechts)
#### 3.2 Trial Management Workflow
1. Importieren Sie `BotKonzept-Trial-Management-Workflow.json`
2. Passen Sie die Credentials an
3. Aktivieren Sie den Workflow
---
### Schritt 4: Webhook-URL testen
#### 4.1 Webhook-URL ermitteln
Nach dem Import sollte die Webhook-URL sein:
```
https://n8n.userman.de/webhook/botkonzept-registration
```
**Prüfen Sie die URL:**
1. Öffnen Sie den Workflow
2. Klicken Sie auf den Node "Registration Webhook"
3. Kopieren Sie die "Production URL"
#### 4.2 Test mit curl
```bash
curl -X POST https://n8n.userman.de/webhook/botkonzept-registration \
-H "Content-Type: application/json" \
-d '{
"firstName": "Max",
"lastName": "Mustermann",
"email": "test@example.com",
"company": "Test GmbH",
"website": "https://example.com",
"newsletter": true
}'
```
**Erwartete Antwort:**
```json
{
"success": true,
"message": "Registrierung erfolgreich! Sie erhalten in Kürze eine E-Mail mit Ihren Zugangsdaten.",
"customerId": "uuid-hier",
"instanceUrl": "https://sb-XXXXX.userman.de"
}
```
---
## 🐛 Häufige Probleme & Lösungen
### Problem 1: "Credential not found"
**Lösung:**
- Stellen Sie sicher, dass alle Credentials in n8n angelegt sind
- Namen müssen exakt übereinstimmen: `Supabase Local`, `PVE20`, `Postfix SES`
### Problem 2: SSH-Verbindung schlägt fehl
**Lösung:**
```bash
# Auf n8n Server
ssh root@192.168.45.20
# Falls Fehler:
# 1. SSH Key generieren
ssh-keygen -t ed25519 -C "n8n@botkonzept"
# 2. Public Key kopieren
ssh-copy-id root@192.168.45.20
# 3. Testen
ssh root@192.168.45.20 "ls /root/customer-installer/"
```
### Problem 3: install.sh nicht gefunden
**Lösung:**
```bash
# Auf PVE20
cd /root
git clone https://backoffice.userman.de/MediaMetz/customer-installer.git
# Oder Pfad im Workflow anpassen
```
### Problem 4: Datenbank-Fehler
**Lösung:**
```bash
# Prüfen ob Tabellen existieren
psql -U postgres -d botkonzept -c "\dt"
# Falls nicht, Schema erneut ausführen
psql -U postgres -d botkonzept < sql/botkonzept_schema.sql
```
### Problem 5: E-Mail wird nicht versendet
**Lösung:**
**Für Amazon SES:**
1. Verifizieren Sie die Absender-E-Mail in AWS SES
2. Prüfen Sie SMTP-Credentials
3. Stellen Sie sicher, dass Sie aus dem Sandbox-Modus raus sind
**Für Postfix:**
```bash
# Auf dem Server
systemctl status postfix
journalctl -u postfix -f
# Test-E-Mail senden
echo "Test" | mail -s "Test" test@example.com
```
### Problem 6: Workflow wird nicht ausgeführt
**Lösung:**
1. Prüfen Sie ob Workflow aktiviert ist (grüner Toggle oben rechts)
2. Schauen Sie in die Execution History (linke Sidebar → Executions)
3. Prüfen Sie die Logs jedes Nodes
---
## 📊 Workflow-Ablauf im Detail
### Registration Workflow
```
1. Webhook empfängt POST-Request
2. Validierung (E-Mail, Name, etc.)
3. Passwort generieren (16 Zeichen)
4. Kunde in DB anlegen (customers Tabelle)
5. SSH zu PVE20 → install.sh ausführen
6. JSON-Output parsen (CTID, URLs, Credentials)
7. Instanz in DB speichern (instances Tabelle)
8. Willkommens-E-Mail senden
9. E-Mail-Versand loggen (emails_sent Tabelle)
10. Success-Response an Frontend
```
**Dauer:** Ca. 2-5 Minuten (abhängig von LXC-Erstellung)
### Trial Management Workflow
```
1. Cron-Trigger (täglich 9:00 Uhr)
2. Alle Trial-Kunden abrufen (0-8 Tage alt)
3. Für jeden Kunden:
- Tag 3? → 30% Rabatt-E-Mail
- Tag 5? → 15% Rabatt-E-Mail
- Tag 7? → Letzte Chance-E-Mail
- Tag 8? → Instanz löschen + Goodbye-E-Mail
4. E-Mail-Versand loggen
```
---
## 🧪 Testing-Checkliste
### Frontend-Test
- [ ] Formular öffnen: `http://192.168.0.20:8000`
- [ ] Alle Felder ausfüllen
- [ ] Absenden klicken
- [ ] Erfolgsmeldung erscheint
### Backend-Test
- [ ] n8n Execution History prüfen
- [ ] Datenbank prüfen: `SELECT * FROM customers ORDER BY created_at DESC LIMIT 1;`
- [ ] PVE20 prüfen: `pct list | grep sb-`
- [ ] E-Mail erhalten?
### End-to-End-Test
- [ ] Registrierung durchführen
- [ ] E-Mail mit Zugangsdaten erhalten
- [ ] In n8n Dashboard einloggen
- [ ] PDF hochladen
- [ ] Chatbot testen
---
## 📈 Monitoring
### n8n Executions überwachen
```bash
# In n8n UI
Sidebar → Executions → Filter: "Failed"
```
### Datenbank-Queries
```sql
-- Neue Registrierungen heute
SELECT COUNT(*) FROM customers WHERE DATE(created_at) = CURRENT_DATE;
-- Aktive Trials
SELECT COUNT(*) FROM customers WHERE status = 'trial';
-- Versendete E-Mails heute
SELECT email_type, COUNT(*)
FROM emails_sent
WHERE DATE(sent_at) = CURRENT_DATE
GROUP BY email_type;
-- Trials die bald ablaufen
SELECT * FROM trials_expiring_soon;
```
### Logs prüfen
```bash
# n8n Logs
docker logs -f n8n
# install.sh Logs
ls -lh /root/customer-installer/logs/
# Postfix Logs
journalctl -u postfix -f
```
---
## 🔐 Sicherheit
### Wichtige Punkte
1. **Credentials verschlüsseln**
- n8n verschlüsselt Credentials automatisch
- Encryption Key sichern: `N8N_ENCRYPTION_KEY`
2. **SSH Keys schützen**
```bash
chmod 600 ~/.ssh/id_ed25519
```
3. **Datenbank-Zugriff**
- Verwenden Sie `service_role` Key für n8n
- Niemals `anon` Key für Backend-Operationen
4. **E-Mail-Sicherheit**
- SPF, DKIM, DMARC konfigurieren
- Absender-Domain verifizieren
---
## 📚 Weitere Ressourcen
- **n8n Dokumentation:** https://docs.n8n.io
- **Supabase Docs:** https://supabase.com/docs
- **Proxmox Docs:** https://pve.proxmox.com/wiki/Main_Page
---
## 🆘 Support
Bei Problemen:
1. **Logs prüfen** (siehe Monitoring-Sektion)
2. **n8n Execution History** ansehen
3. **Datenbank-Queries** ausführen
4. **Workflow Schritt für Schritt testen**
**Kontakt:**
- E-Mail: support@botkonzept.de
- Dokumentation: Dieses Dokument
---
**Version:** 1.0.0
**Letzte Aktualisierung:** 26.01.2025
**Autor:** MediaMetz