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