Files
automat26/customer-installer/DEPLOYMENT_CHECKLIST.md
2026-02-25 22:47:22 +01:00

7.9 KiB

🚀 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

# 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

# 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

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

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

# 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

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

# 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

# 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

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

# 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

# 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

# Proxmox Backup
vzdump --mode snapshot --compress gzip --storage backup-storage

Website-Backup

# 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

# Backup wiederherstellen
psql -h 192.168.45.3 -U customer customer < /backup/botkonzept_YYYYMMDD.sql

Bei Website-Problemen

# Alte Version wiederherstellen
git checkout HEAD~1
sudo cp -r botkonzept-website/* /var/www/botkonzept/

📞 Support-Kontakte

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