364 lines
7.9 KiB
Markdown
364 lines
7.9 KiB
Markdown
# 🚀 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
|