Files
customer-installer/DEPLOYMENT_CHECKLIST.md

364 lines
7.9 KiB
Markdown
Raw Normal View History

# 🚀 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