Neue Dateien: - BotKonzept-Customer-Registration-Workflow.json: n8n Workflow für Kundenregistrierung - BotKonzept-Trial-Management-Workflow.json: n8n Workflow für Trial-Management - REGISTRATION_SETUP_GUIDE.md: Kompletter Setup-Guide (Datenbank, Credentials, Workflows) - REGISTRATION_TROUBLESHOOTING.md: Troubleshooting-Guide mit 10 häufigen Problemen Gelöscht: - 20250119_Logo_Botkozept.svg: Verschoben nach customer-frontend Die Workflows enthalten: - Webhook-Trigger für Registrierung - Datenbank-Integration (PostgreSQL/Supabase) - SSH-Integration zu PVE20 für LXC-Erstellung - E-Mail-Versand (Willkommens-E-Mail) - Trial-Management mit automatischen E-Mails (Tag 3, 5, 7) Setup-Guide erklärt: - Datenbank-Schema einrichten - n8n Credentials konfigurieren (Supabase, SSH, SMTP) - Workflows importieren und aktivieren - Testing und Monitoring Troubleshooting-Guide behandelt: - Workflow-Probleme - Credential-Fehler - SSH-Verbindungsprobleme - Datenbank-Fehler - E-Mail-Versand-Probleme - JSON-Parsing-Fehler - Performance-Probleme - Debugging-Checkliste
12 KiB
12 KiB
🔧 BotKonzept - Registrierung Troubleshooting
Häufige Probleme und Lösungen
🚨 Problem 1: Workflow wird nicht ausgeführt
Symptome
- Frontend zeigt "Verbindungsfehler"
- Keine Execution in n8n History
- Timeout-Fehler
Diagnose
# 1. Prüfen ob n8n läuft
curl -I https://n8n.userman.de
# 2. Webhook-URL testen
curl -X POST https://n8n.userman.de/webhook/botkonzept-registration \
-H "Content-Type: application/json" \
-d '{"firstName":"Test","lastName":"User","email":"test@test.de"}'
Lösungen
A) Workflow nicht aktiviert
- Öffnen Sie n8n
- Öffnen Sie den Workflow
- Klicken Sie auf den Toggle oben rechts (muss grün sein)
- Speichern Sie den Workflow
B) Webhook-Pfad falsch
- Öffnen Sie den Workflow
- Klicken Sie auf "Registration Webhook" Node
- Prüfen Sie den Pfad: Sollte
botkonzept-registrationsein - Kopieren Sie die "Production URL"
- Aktualisieren Sie
customer-frontend/js/main.js:
const CONFIG = {
WEBHOOK_URL: 'https://n8n.userman.de/webhook/botkonzept-registration',
// ...
};
C) n8n nicht erreichbar
# Auf dem n8n Server
docker ps | grep n8n
docker logs n8n
# Falls Container nicht läuft
docker start n8n
🚨 Problem 2: "Credential not found" Fehler
Symptome
- Workflow stoppt bei einem Node
- Fehler: "Credential 'Supabase Local' not found"
- Execution zeigt roten Fehler
Lösung
Schritt 1: Credentials prüfen
- n8n → Sidebar → Credentials
- Prüfen Sie ob folgende existieren:
Supabase Local(Postgres)PVE20(SSH)Postfix SES(SMTP)
Schritt 2: Credential erstellen (falls fehlend)
Supabase Local:
Name: Supabase Local
Type: Postgres
Host: localhost (oder Ihr Supabase Host)
Port: 5432
Database: botkonzept
User: postgres
Password: [Ihr Passwort]
SSL: Enabled
PVE20:
Name: PVE20
Type: SSH (Private Key)
Host: 192.168.45.20
Port: 22
Username: root
Private Key: [Fügen Sie Ihren Private Key ein]
Postfix SES:
Name: Postfix SES
Type: SMTP
Host: email-smtp.eu-central-1.amazonaws.com
Port: 587
User: [SMTP Username]
Password: [SMTP Password]
From: noreply@botkonzept.de
Schritt 3: Credential im Workflow zuweisen
- Öffnen Sie den betroffenen Node
- Klicken Sie auf "Credential to connect with"
- Wählen Sie das richtige Credential
- Speichern Sie den Workflow
🚨 Problem 3: SSH-Verbindung zu PVE20 schlägt fehl
Symptome
- Node "Create Customer Instance" schlägt fehl
- Fehler: "Connection refused" oder "Permission denied"
Diagnose
# Auf dem n8n Server (im Container)
docker exec -it n8n sh
# SSH-Verbindung testen
ssh root@192.168.45.20 "echo 'Connection OK'"
Lösungen
A) SSH Key nicht konfiguriert
# Auf dem n8n Server (Host, nicht Container)
ssh-keygen -t ed25519 -C "n8n@botkonzept" -f ~/.ssh/n8n_key
# Public Key auf PVE20 kopieren
ssh-copy-id -i ~/.ssh/n8n_key.pub root@192.168.45.20
# Private Key anzeigen (für n8n Credential)
cat ~/.ssh/n8n_key
B) SSH Key im Container nicht verfügbar
# SSH Key als Volume mounten
docker run -d \
--name n8n \
-v ~/.ssh:/home/node/.ssh:ro \
-v n8n_data:/home/node/.n8n \
-p 5678:5678 \
n8nio/n8n
C) Firewall blockiert
# Auf PVE20
iptables -L -n | grep 22
# Falls blockiert, Regel hinzufügen
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
🚨 Problem 4: install.sh schlägt fehl
Symptome
- SSH-Verbindung OK, aber install.sh gibt Fehler
- Fehler: "No such file or directory"
- Fehler: "Permission denied"
Diagnose
# Auf PVE20
ls -lh /root/customer-installer/install.sh
# Ausführbar?
chmod +x /root/customer-installer/install.sh
# Manuell testen
cd /root/customer-installer
./install.sh --help
Lösungen
A) Repository nicht geklont
# Auf PVE20
cd /root
git clone https://backoffice.userman.de/MediaMetz/customer-installer.git
cd customer-installer
chmod +x install.sh
B) Pfad im Workflow falsch
- Öffnen Sie den Node "Create Customer Instance"
- Prüfen Sie den Command:
/root/customer-installer/install.sh --storage local-zfs ...
- Passen Sie den Pfad an falls nötig
C) Abhängigkeiten fehlen
# Auf PVE20
apt-get update
apt-get install -y jq curl python3
🚨 Problem 5: Datenbank-Fehler
Symptome
- Fehler: "relation 'customers' does not exist"
- Fehler: "permission denied for table customers"
- Fehler: "connection refused"
Diagnose
# Verbindung testen
psql -h localhost -U postgres -d botkonzept -c "SELECT 1;"
# Tabellen prüfen
psql -h localhost -U postgres -d botkonzept -c "\dt"
Lösungen
A) Schema nicht erstellt
# Schema erstellen
psql -U postgres -d botkonzept < /root/customer-installer/sql/botkonzept_schema.sql
# Prüfen
psql -U postgres -d botkonzept -c "\dt"
B) Datenbank existiert nicht
# Datenbank erstellen
createdb -U postgres botkonzept
# Schema importieren
psql -U postgres -d botkonzept < /root/customer-installer/sql/botkonzept_schema.sql
C) Berechtigungen fehlen
-- Als postgres User
GRANT ALL ON ALL TABLES IN SCHEMA public TO service_role;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO service_role;
D) Supabase: Falsche Credentials
- Gehen Sie zu Supabase Dashboard
- Settings → Database
- Kopieren Sie die Connection String
- Aktualisieren Sie das n8n Credential
🚨 Problem 6: E-Mail wird nicht versendet
Symptome
- Workflow läuft durch, aber keine E-Mail
- Fehler: "SMTP connection failed"
- E-Mail landet im Spam
Diagnose
# SMTP-Verbindung testen
telnet email-smtp.eu-central-1.amazonaws.com 587
# Postfix Status (falls lokal)
systemctl status postfix
journalctl -u postfix -n 50
Lösungen
A) Amazon SES: E-Mail nicht verifiziert
- Gehen Sie zu AWS SES Console
- Verified Identities → Verify new email
- Bestätigen Sie die E-Mail
- Warten Sie auf Verifizierung
B) Amazon SES: Sandbox-Modus
- AWS SES Console → Account Dashboard
- Request production access
- Füllen Sie das Formular aus
- Warten Sie auf Genehmigung (24-48h)
Workaround für Tests:
- Verifizieren Sie auch die Empfänger-E-Mail
- Oder verwenden Sie Gmail für Tests
C) SMTP-Credentials falsch
- AWS IAM → Users → Ihr SMTP User
- Security Credentials → Create SMTP credentials
- Kopieren Sie Username und Password
- Aktualisieren Sie n8n SMTP Credential
D) SPF/DKIM nicht konfiguriert
# DNS-Records prüfen
dig TXT botkonzept.de
dig TXT _dmarc.botkonzept.de
# Fehlende Records hinzufügen (bei Ihrem DNS-Provider)
Benötigte DNS-Records:
# SPF
botkonzept.de. IN TXT "v=spf1 include:amazonses.com ~all"
# DKIM (von AWS SES bereitgestellt)
[selector]._domainkey.botkonzept.de. IN CNAME [value-from-ses]
# DMARC
_dmarc.botkonzept.de. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@botkonzept.de"
🚨 Problem 7: JSON-Parsing-Fehler
Symptome
- Fehler: "Unexpected token in JSON"
- Node "Parse Install Output" schlägt fehl
Diagnose
# install.sh manuell ausführen und Output prüfen
cd /root/customer-installer
./install.sh --storage local-zfs --bridge vmbr0 --ip dhcp --vlan 90 2>&1 | tee test-output.log
# Ist der Output valides JSON?
cat test-output.log | jq .
Lösungen
A) install.sh gibt Fehler aus
- Prüfen Sie die Logs in
/root/customer-installer/logs/ - Beheben Sie die Fehler in install.sh
- Testen Sie erneut
B) Output enthält zusätzliche Zeilen
- Öffnen Sie
install.sh - Stellen Sie sicher, dass nur JSON auf stdout ausgegeben wird
- Alle anderen Ausgaben sollten nach stderr gehen
C) DEBUG-Modus aktiviert
- Prüfen Sie ob
DEBUG=1gesetzt ist - Für Produktion:
DEBUG=0verwenden - Im Workflow: Command ohne
--debugausführen
🚨 Problem 8: Workflow zu langsam / Timeout
Symptome
- Frontend zeigt Timeout nach 30 Sekunden
- Workflow läuft noch, aber Frontend gibt auf
Lösung
A) Timeout im Frontend erhöhen
// In customer-frontend/js/main.js
const response = await fetch(CONFIG.WEBHOOK_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(formData),
signal: AbortSignal.timeout(300000), // 5 Minuten
});
B) Asynchrone Verarbeitung
Ändern Sie den Workflow:
- Webhook gibt sofort Response zurück
- Instanz-Erstellung läuft im Hintergrund
- E-Mail wird gesendet wenn fertig
Workflow-Änderung:
- Nach "Create Customer in DB" → Sofort Response
- Rest des Workflows läuft asynchron weiter
🚨 Problem 9: Doppelte Registrierungen
Symptome
- Kunde registriert sich mehrmals
- Mehrere Einträge in
customersTabelle - Mehrere LXC-Container
Lösung
A) E-Mail-Unique-Constraint prüfen
-- Prüfen ob Constraint existiert
SELECT conname, contype
FROM pg_constraint
WHERE conrelid = 'customers'::regclass;
-- Falls nicht, hinzufügen
ALTER TABLE customers ADD CONSTRAINT customers_email_unique UNIQUE (email);
B) Workflow anpassen
Fügen Sie einen Check-Node hinzu:
// Vor "Create Customer in DB"
const email = $json.body.email;
const existing = await $('Postgres').execute({
query: 'SELECT id FROM customers WHERE email = $1',
values: [email]
});
if (existing.length > 0) {
throw new Error('E-Mail bereits registriert');
}
🚨 Problem 10: Trial-Management läuft nicht
Symptome
- Keine E-Mails an Tag 3, 5, 7
- Cron-Workflow wird nicht ausgeführt
Diagnose
# In n8n: Executions filtern nach "Trial Management"
# Prüfen ob täglich um 9:00 Uhr ausgeführt wird
Lösungen
A) Workflow nicht aktiviert
- Öffnen Sie "BotKonzept - Trial Management"
- Aktivieren Sie den Workflow (Toggle oben rechts)
B) Cron-Expression falsch
- Öffnen Sie den Node "Daily at 9 AM"
- Prüfen Sie die Expression:
0 9 * * * - Testen Sie mit: https://crontab.guru/#0_9___*
C) Keine Trial-Kunden vorhanden
-- Prüfen
SELECT * FROM customers WHERE status = 'trial';
-- Test-Kunde erstellen
INSERT INTO customers (email, first_name, last_name, status, created_at)
VALUES ('test@example.com', 'Test', 'User', 'trial', NOW() - INTERVAL '3 days');
📊 Debugging-Checkliste
Wenn ein Problem auftritt, gehen Sie diese Checkliste durch:
1. Frontend
- Browser-Konsole prüfen (F12)
- Network-Tab prüfen (Request/Response)
- Webhook-URL korrekt?
2. n8n
- Workflow aktiviert?
- Execution History prüfen
- Jeden Node einzeln testen
- Credentials korrekt?
3. Datenbank
- Verbindung OK?
- Tabellen existieren?
- Berechtigungen OK?
- Daten werden gespeichert?
4. PVE20
- SSH-Verbindung OK?
- install.sh existiert?
- install.sh ausführbar?
- Manueller Test OK?
5. E-Mail
- SMTP-Verbindung OK?
- Absender verifiziert?
- Spam-Ordner prüfen?
- DNS-Records korrekt?
🔍 Logs & Debugging
n8n Logs
# Container Logs
docker logs -f n8n
# Execution Logs
# In n8n UI: Sidebar → Executions → Click on execution
install.sh Logs
# Auf PVE20
ls -lh /root/customer-installer/logs/
tail -f /root/customer-installer/logs/install_*.log
PostgreSQL Logs
# Auf DB Server
tail -f /var/log/postgresql/postgresql-*.log
# Oder in Supabase Dashboard: Logs
E-Mail Logs
# Postfix
journalctl -u postfix -f
# Amazon SES
# AWS Console → SES → Sending Statistics
🆘 Wenn nichts hilft
Schritt-für-Schritt-Debugging
- Workflow deaktivieren
- Jeden Node einzeln testen:
- Webhook → Test mit curl - Validate Input → Manuell ausführen - Generate Password → Output prüfen - Create Customer → DB prüfen - SSH → Manuell auf PVE20 testen - Parse Output → JSON validieren - Save Instance → DB prüfen - Send Email → Test-E-Mail - Logs sammeln:
- n8n Execution
- install.sh Log
- PostgreSQL Log
- E-Mail Log
- Support kontaktieren mit allen Logs
📞 Support-Kontakt
E-Mail: support@botkonzept.de
Bitte inkludieren:
- Fehlermeldung (vollständig)
- n8n Execution ID
- Logs (n8n, install.sh, DB)
- Was Sie bereits versucht haben
Version: 1.0.0
Letzte Aktualisierung: 26.01.2025