feat: Add complete BotKonzept SaaS platform
- Landing page with registration form (HTML/CSS/JS) - n8n workflows for customer registration and trial management - PostgreSQL schema for customer/instance/payment management - Automated email system (Day 3, 5, 7 with discounts) - Setup script and deployment checklist - Comprehensive documentation Features: - Automatic LXC instance creation per customer - 7-day trial with automated upgrade offers - Discount system: 30% → 15% → regular price - Supabase integration for customer management - Email automation via Postfix/SES - GDPR compliant (data in Germany) - Stripe/PayPal payment integration ready Components: - botkonzept-website/ - Landing page and registration - BotKonzept-Customer-Registration-Workflow.json - n8n registration workflow - BotKonzept-Trial-Management-Workflow.json - n8n trial management workflow - sql/botkonzept_schema.sql - Complete database schema - setup_botkonzept.sh - Automated setup script - BOTKONZEPT_README.md - Full documentation - DEPLOYMENT_CHECKLIST.md - Deployment guide
This commit is contained in:
@@ -0,0 +1,363 @@
|
||||
# 🚀 BotKonzept - Deployment Checkliste
|
||||
|
||||
## ✅ Pre-Deployment
|
||||
|
||||
### Infrastruktur
|
||||
- [ ] Proxmox VE20 läuft und ist erreichbar
|
||||
- [ ] Supabase PostgreSQL ist konfiguriert
|
||||
- [ ] n8n Instanz ist verfügbar
|
||||
- [ ] OPNsense NGINX Reverse Proxy ist konfiguriert
|
||||
- [ ] Postfix/SES E-Mail-Gateway funktioniert
|
||||
- [ ] DNS für botkonzept.de ist konfiguriert
|
||||
|
||||
### Datenbank
|
||||
- [ ] PostgreSQL-Verbindung getestet
|
||||
- [ ] Schema `botkonzept_schema.sql` importiert
|
||||
- [ ] Tabellen erstellt (customers, instances, etc.)
|
||||
- [ ] Views erstellt (customer_overview, trials_expiring_soon)
|
||||
- [ ] Row Level Security aktiviert
|
||||
- [ ] Backup-Strategie definiert
|
||||
|
||||
### n8n Workflows
|
||||
- [ ] Customer Registration Workflow importiert
|
||||
- [ ] Trial Management Workflow importiert
|
||||
- [ ] SSH-Credentials (PVE20) konfiguriert
|
||||
- [ ] PostgreSQL-Credentials konfiguriert
|
||||
- [ ] SMTP-Credentials konfiguriert
|
||||
- [ ] Webhooks aktiviert
|
||||
- [ ] Cron-Jobs aktiviert (täglich 9:00 Uhr)
|
||||
|
||||
### Website
|
||||
- [ ] HTML/CSS/JS-Dateien geprüft
|
||||
- [ ] Logo (20250119_Logo_Botkozept.svg) vorhanden
|
||||
- [ ] Webhook-URL in main.js konfiguriert
|
||||
- [ ] SSL-Zertifikat installiert
|
||||
- [ ] HTTPS erzwungen
|
||||
- [ ] Cookie-Banner implementiert
|
||||
- [ ] Datenschutzerklärung vorhanden
|
||||
- [ ] Impressum vorhanden
|
||||
- [ ] AGB vorhanden
|
||||
|
||||
## 🔧 Deployment Steps
|
||||
|
||||
### 1. Datenbank Setup
|
||||
|
||||
```bash
|
||||
# Verbindung testen
|
||||
psql -h 192.168.45.3 -U customer -d customer -c "SELECT 1"
|
||||
|
||||
# Schema importieren
|
||||
psql -h 192.168.45.3 -U customer -d customer -f sql/botkonzept_schema.sql
|
||||
|
||||
# Tabellen verifizieren
|
||||
psql -h 192.168.45.3 -U customer -d customer -c "\dt"
|
||||
```
|
||||
|
||||
**Erwartetes Ergebnis:**
|
||||
- 7 Tabellen erstellt
|
||||
- 3 Views erstellt
|
||||
- Triggers aktiv
|
||||
|
||||
### 2. n8n Workflows
|
||||
|
||||
```bash
|
||||
# 1. n8n öffnen
|
||||
open https://n8n.userman.de
|
||||
|
||||
# 2. Workflows importieren
|
||||
# - BotKonzept-Customer-Registration-Workflow.json
|
||||
# - BotKonzept-Trial-Management-Workflow.json
|
||||
|
||||
# 3. Credentials konfigurieren
|
||||
# SSH (PVE20): /root/.ssh/id_rsa
|
||||
# PostgreSQL: 192.168.45.3:5432/customer
|
||||
# SMTP: Postfix Gateway
|
||||
```
|
||||
|
||||
**Webhook-URLs:**
|
||||
- Registration: `https://n8n.userman.de/webhook/botkonzept-registration`
|
||||
- Test: `curl -X POST https://n8n.userman.de/webhook/botkonzept-registration -H "Content-Type: application/json" -d '{"test":true}'`
|
||||
|
||||
### 3. Website Deployment
|
||||
|
||||
```bash
|
||||
# Setup-Script ausführen
|
||||
chmod +x setup_botkonzept.sh
|
||||
./setup_botkonzept.sh
|
||||
|
||||
# Oder manuell:
|
||||
sudo mkdir -p /var/www/botkonzept
|
||||
sudo cp -r botkonzept-website/* /var/www/botkonzept/
|
||||
sudo chown -R www-data:www-data /var/www/botkonzept
|
||||
```
|
||||
|
||||
**NGINX-Konfiguration:**
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name botkonzept.de www.botkonzept.de;
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name botkonzept.de www.botkonzept.de;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/botkonzept.de/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/botkonzept.de/privkey.pem;
|
||||
|
||||
root /var/www/botkonzept;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
# Security headers
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
}
|
||||
```
|
||||
|
||||
### 4. SSL-Zertifikat
|
||||
|
||||
```bash
|
||||
# Let's Encrypt installieren
|
||||
sudo apt-get install certbot python3-certbot-nginx
|
||||
|
||||
# Zertifikat erstellen
|
||||
sudo certbot --nginx -d botkonzept.de -d www.botkonzept.de
|
||||
|
||||
# Auto-Renewal testen
|
||||
sudo certbot renew --dry-run
|
||||
```
|
||||
|
||||
## ✅ Post-Deployment Tests
|
||||
|
||||
### 1. Datenbank-Tests
|
||||
|
||||
```sql
|
||||
-- Kunden-Tabelle testen
|
||||
INSERT INTO customers (email, first_name, last_name, status)
|
||||
VALUES ('test@example.com', 'Test', 'User', 'trial')
|
||||
RETURNING *;
|
||||
|
||||
-- View testen
|
||||
SELECT * FROM customer_overview;
|
||||
|
||||
-- Cleanup
|
||||
DELETE FROM customers WHERE email = 'test@example.com';
|
||||
```
|
||||
|
||||
### 2. Workflow-Tests
|
||||
|
||||
```bash
|
||||
# Registration Webhook testen
|
||||
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",
|
||||
"terms": true
|
||||
}'
|
||||
|
||||
# Erwartete Antwort:
|
||||
# {"success": true, "message": "Registrierung erfolgreich!"}
|
||||
```
|
||||
|
||||
### 3. Website-Tests
|
||||
|
||||
- [ ] Homepage lädt (https://botkonzept.de)
|
||||
- [ ] Alle Bilder werden angezeigt
|
||||
- [ ] Navigation funktioniert
|
||||
- [ ] Formular wird angezeigt
|
||||
- [ ] Formular-Validierung funktioniert
|
||||
- [ ] Mobile-Ansicht korrekt
|
||||
- [ ] SSL-Zertifikat gültig
|
||||
- [ ] Keine Console-Errors
|
||||
|
||||
### 4. E-Mail-Tests
|
||||
|
||||
```bash
|
||||
# Test-E-Mail senden
|
||||
echo "Test" | mail -s "BotKonzept Test" test@example.com
|
||||
|
||||
# Postfix-Logs prüfen
|
||||
tail -f /var/log/mail.log
|
||||
```
|
||||
|
||||
### 5. End-to-End Test
|
||||
|
||||
1. **Registrierung:**
|
||||
- [ ] Formular ausfüllen
|
||||
- [ ] Absenden
|
||||
- [ ] Success-Message erscheint
|
||||
|
||||
2. **Datenbank:**
|
||||
- [ ] Kunde in `customers` Tabelle
|
||||
- [ ] Instanz in `instances` Tabelle
|
||||
- [ ] E-Mail in `emails_sent` Tabelle
|
||||
|
||||
3. **E-Mail:**
|
||||
- [ ] Willkommens-E-Mail erhalten
|
||||
- [ ] Zugangsdaten korrekt
|
||||
- [ ] Links funktionieren
|
||||
|
||||
4. **Instanz:**
|
||||
- [ ] LXC erstellt (pct list)
|
||||
- [ ] n8n erreichbar
|
||||
- [ ] Login funktioniert
|
||||
|
||||
## 📊 Monitoring
|
||||
|
||||
### Datenbank-Monitoring
|
||||
|
||||
```sql
|
||||
-- Aktive Trials
|
||||
SELECT COUNT(*) FROM customers WHERE status = 'trial';
|
||||
|
||||
-- Trials die heute ablaufen
|
||||
SELECT * FROM trials_expiring_soon WHERE days_remaining < 1;
|
||||
|
||||
-- E-Mails der letzten 24h
|
||||
SELECT email_type, COUNT(*)
|
||||
FROM emails_sent
|
||||
WHERE sent_at >= NOW() - INTERVAL '24 hours'
|
||||
GROUP BY email_type;
|
||||
|
||||
-- Revenue heute
|
||||
SELECT SUM(amount) FROM payments
|
||||
WHERE status = 'succeeded'
|
||||
AND paid_at::date = CURRENT_DATE;
|
||||
```
|
||||
|
||||
### n8n-Monitoring
|
||||
|
||||
- [ ] Workflow-Executions prüfen
|
||||
- [ ] Error-Rate überwachen
|
||||
- [ ] Execution-Time tracken
|
||||
|
||||
### Server-Monitoring
|
||||
|
||||
```bash
|
||||
# LXC-Container zählen
|
||||
pct list | grep -c "running"
|
||||
|
||||
# Disk-Usage
|
||||
df -h
|
||||
|
||||
# Memory-Usage
|
||||
free -h
|
||||
|
||||
# Load Average
|
||||
uptime
|
||||
```
|
||||
|
||||
## 🔒 Security Checklist
|
||||
|
||||
- [ ] Firewall-Regeln konfiguriert
|
||||
- [ ] SSH nur mit Key-Auth
|
||||
- [ ] PostgreSQL nur intern erreichbar
|
||||
- [ ] n8n hinter Reverse Proxy
|
||||
- [ ] SSL/TLS erzwungen
|
||||
- [ ] Rate-Limiting aktiviert
|
||||
- [ ] CORS korrekt konfiguriert
|
||||
- [ ] Input-Validierung aktiv
|
||||
- [ ] SQL-Injection-Schutz
|
||||
- [ ] XSS-Schutz
|
||||
- [ ] CSRF-Schutz
|
||||
|
||||
## 📝 Backup-Strategie
|
||||
|
||||
### Datenbank-Backup
|
||||
|
||||
```bash
|
||||
# Tägliches Backup
|
||||
0 2 * * * pg_dump -h 192.168.45.3 -U customer customer > /backup/botkonzept_$(date +\%Y\%m\%d).sql
|
||||
|
||||
# Backup-Retention (30 Tage)
|
||||
find /backup -name "botkonzept_*.sql" -mtime +30 -delete
|
||||
```
|
||||
|
||||
### LXC-Backup
|
||||
|
||||
```bash
|
||||
# Proxmox Backup
|
||||
vzdump --mode snapshot --compress gzip --storage backup-storage
|
||||
```
|
||||
|
||||
### Website-Backup
|
||||
|
||||
```bash
|
||||
# Git-Repository
|
||||
cd /var/www/botkonzept
|
||||
git init
|
||||
git add .
|
||||
git commit -m "Website backup $(date)"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
## 🚨 Rollback-Plan
|
||||
|
||||
### Bei Problemen mit Workflows
|
||||
|
||||
1. Workflows deaktivieren
|
||||
2. Alte Version wiederherstellen
|
||||
3. Credentials prüfen
|
||||
4. Neu aktivieren
|
||||
|
||||
### Bei Datenbank-Problemen
|
||||
|
||||
```bash
|
||||
# Backup wiederherstellen
|
||||
psql -h 192.168.45.3 -U customer customer < /backup/botkonzept_YYYYMMDD.sql
|
||||
```
|
||||
|
||||
### Bei Website-Problemen
|
||||
|
||||
```bash
|
||||
# Alte Version wiederherstellen
|
||||
git checkout HEAD~1
|
||||
sudo cp -r botkonzept-website/* /var/www/botkonzept/
|
||||
```
|
||||
|
||||
## 📞 Support-Kontakte
|
||||
|
||||
- **Proxmox:** admin@userman.de
|
||||
- **n8n:** support@userman.de
|
||||
- **DNS:** dns@userman.de
|
||||
- **E-Mail:** postmaster@userman.de
|
||||
|
||||
## ✅ Go-Live Checklist
|
||||
|
||||
- [ ] Alle Tests bestanden
|
||||
- [ ] Monitoring aktiv
|
||||
- [ ] Backups konfiguriert
|
||||
- [ ] Team informiert
|
||||
- [ ] Dokumentation aktuell
|
||||
- [ ] Support-Prozesse definiert
|
||||
- [ ] Rollback-Plan getestet
|
||||
- [ ] Performance-Tests durchgeführt
|
||||
- [ ] Security-Audit durchgeführt
|
||||
- [ ] DSGVO-Compliance geprüft
|
||||
|
||||
## 🎉 Post-Launch
|
||||
|
||||
- [ ] Analytics einrichten (Google Analytics)
|
||||
- [ ] Conversion-Tracking aktivieren
|
||||
- [ ] A/B-Tests planen
|
||||
- [ ] Marketing-Kampagnen starten
|
||||
- [ ] Social Media ankündigen
|
||||
- [ ] Blog-Post veröffentlichen
|
||||
- [ ] Newsletter versenden
|
||||
|
||||
---
|
||||
|
||||
**Deployment-Datum:** _________________
|
||||
**Deployed von:** _________________
|
||||
**Version:** 1.0.0
|
||||
**Status:** ⬜ In Arbeit | ⬜ Bereit | ⬜ Live
|
||||
Reference in New Issue
Block a user