mk360 – Gesamtarchitektur & Service-Übersicht¶
Schnell-Übersicht¶
| Metrik | Wert |
|---|---|
| Anzahl Services | 31 + 1 (Paperless-GPT) = 32 |
| Infrastrukturen | 2 (VPS + NAS) |
| Datenbanken | 7 (PostgreSQL, MongoDB, Redis, SQLite) |
| RAM gesamt | 24 GB (16 VPS + 8 NAS) |
| Storage | ~8.2 TB (160GB SSD VPS + 8TB NAS) |
| Backup-Stationen | 3 (Hot + Warm + Cold) |
PUBLIC SERVICES (Internet-erreichbar via HTTPS)¶
Business Services Tier¶
1. Paperless-NGX (Business)¶
- Domain:
business-docs.mk360.de - Funktion: Dokumenten-Management, OCR, Volltextsuche
- Speicher: 30 GB (Hot) + Archive auf NAS
- RAM: 2 GB
- Datenbank: PostgreSQL (paperless_business)
- Integration: n8n, OpenSign, Gotenberg, Paperless-GPT
2. Paperless-GPT (AI Enhancement) – NEU!¶
- Funktion: Automatische OCR-Verbesserung, AI-Tagging, Titel-Generierung
- RAM: 1 GB (nur Orchestrator)
- Speicher: Minimal (Metadata nur, Enhanced PDFs optional)
- LLM: OpenAI GPT-4o-mini (Cloud, nicht lokal!)
- Kosten: ~€0.015/Dokument (~€15-30/Monat)
- Speed: 5-10 Sekunden pro Dokument
- DSGVO: DPA mit OpenAI (wichtig!)
- Auto-Workflow: n8n täglich 03:00 Uhr (Auto-Tagging)
- Web UI:
paperless-gpt.mk360.de(VPN-only), Paperless-GPT
3. n8n Workflow Engine¶
- Domain:
workflows.mk360.de(Admin),webhooks.mk360.de(Webhooks) - Funktion: Automation für Onboarding, Rechnungen, AVV-Generierung, Monitoring, OCR + Tagging (Paperless-GPT)
- RAM: 1.5 GB
- Datenbank: PostgreSQL (n8n)
- Integration: Paperless, OpenSign, Gotenberg, Monica, Email, OpenAI API
4. OpenSign¶
- Domain:
sign.mk360.de - Funktion: E-Signatur für Verträge, AVV-Dokumente
- Speicher: 20 GB (aktive + Archive)
- RAM: 1 GB
- Datenbank: MongoDB (opensign)
- Integration: n8n, Paperless
5. Vaultwarden (Business)¶
- Domain:
vault-business.mk360.de - Funktion: Passwort-Manager für Kunden-CMS, API-Keys, Hosting-Provider
- RAM: 256 MB
- Datenbank: PostgreSQL (vaultwarden_business, verschlüsselt)
- Features: 2FA, Browser-Extension, Audit-Log
6. Monica CRM¶
- Domain:
crm.mk360.de - Funktion: Kundenmanagement, Kontakte, Projekte, Reminders
- Speicher: 3 GB
- RAM: 512 MB
- Datenbank: PostgreSQL (monica)
- Integration: n8n, Paperless
7. Gotenberg (PDF-Generator)¶
- Funktion: HTML/Office → professionelle PDF-Konvertierung
- RAM: 256–512 MB
- Stateless Service (kein persistenter Storage)
- Integration: n8n Workflows
Monitoring & Frontend¶
8. Uptime Kuma¶
- 🌐 Domain:
status.mk360.de - 📋 Funktion: Service-Monitoring, öffentliche Status-Seite
- 🧠 RAM: 256 MB
- 📊 Datenbank: SQLite (intern)
- 📍 Checks: HTTP (60s), TCP Ports (5min), SSL Certs (täglich)
9. Mkdocs¶
- 🌐 Domain:
docs.mk360.de - 📋 Funktion: Dokumentation (Material Theme)
- 📡 Static Content
- 🧠 RAM: Minimal
10. Customer Portal (Webflow)¶
- 🌐 Domain:
portal.mk360.de - 📋 Funktion: Kunden-Frontend für Dokumente & Status
- 🔄 Integration: Webhook Handler (Token-Auth)
11. Webhook Handler (Custom)¶
- 📋 Funktion: API-Proxy, Token-Authentifizierung, Daten-Transformation
- 🧠 RAM: 128–256 MB
- 📡 Node.js/Express (Stateless)
- 🔐 Zweck: Kunden sehen nur ihre Daten (Paperless-Filter)
12. OpenAI API Integration¶
- 📋 Funktion: Cloud-basiertes LLM für Paperless-GPT, Invoice ZugFERD Validation (optional)
- 🤖 Modell: GPT-4o-mini (für Vision/OCR), GPT-4o (für komplexe Logik)
- 💰 Kosten: Variable (~€0.01–0.05 pro Request)
- 🌐 Verbindung: HTTPS (externe API, nicht lokal)
- 🔐 Secrets: API Key in .env (Vaultwarden)
🔒 PRIVATE SERVICES (VPN-Only / WireGuard)¶
Private Documentation & Email¶
13. Paperless-NGX (Private)¶
- 🌐 Domain:
private-docs.mk360.de(VPN) - 📋 Funktion: Private Dokumente mit Custom Schema & Unterbereichen
- 💾 Speicher: 20 GB (Hot) + Archive
- 🧠 RAM: 2 GB
- 📊 Datenbank: PostgreSQL (paperless_private)
- 📁 Struktur: Tags nach Ordnernummer (2_Steuer, 3_Versicherung, etc.)
15. Roundcube (Webmail)¶
- 🌐 Domain:
mail.mk360.de(VPN) - 📋 Funktion: Webmail-UI für Gmail-Backups (Read-Only)
- 🧠 RAM: 200 MB
- 📊 Datenbank: PostgreSQL (roundcube)
- 📮 Datenquelle: Maildir von mbsync (Synology)
16. Dovecot (IMAP-Server)¶
- 📋 Funktion: IMAP für lokale Email-Backups (Read-Only)
- 🧠 RAM: 50 MB
- 📡 Port: 993 (IMAPS)
- 📥 Quelle: Maildir auf Synology (/volume1/private/email/)
Logs & System-Überwachung¶
15. Netdata (System Monitoring)¶
- 🌐 Domain:
netdata.mk360.de(VPN) - 📋 Funktion: 1-Second Resolution System Metriken
- 🧠 RAM: 400 MB
- 📊 Metriken: CPU, RAM, Disk I/O, Network, Docker, PostgreSQL, Redis
- 🎨 2000+ Metriken mit automatischem Alert
Heimnetzwerk (Synology)¶
16. Vaultwarden (Private) — auf Synology NAS¶
- 🌐 Domain:
vault-private.mk360.de(VPN) - 📋 Funktion: Persönliche Passwörter, Banking, Netflix, Router-Login
- 📍 Ort: Synology DS918+ (nicht VPS!)
- 📊 Datenbank: SQLite (lokal)
- 🧠 RAM: 128 MB
- 🔐 Offline verfügbar, maximale Kontrolle
17. Unifi Controller — auf Synology NAS¶
- 🌐 Domain:
unifi.mk360.de:8443(VPS via Caddy) - 📋 Funktion: WLAN Management (Access Points, Gast-WLAN, Bandbreite)
- 📍 Ort: Synology DS918+
- 🧠 RAM: 1 GB
- 📊 Datenbank: MongoDB (intern)
18. AdGuard Home — auf Synology NAS¶
- 🌐 Domain:
adguard.mk360.de(VPS via Caddy) - 📋 Funktion: Netzwerk-weiter Werbeblocker, DNS-Filter
- 📍 Ort: Synology DS918+
- 🧠 RAM: 256 MB
- 📊 Storage: ~5 GB (Query Logs)
- 🔄 Features: Ad-Blocking, Parental Controls, Statistiken
🏢 INFRASTRUKTUR & NETZWERK¶
Reverse Proxy & Sicherheit¶
19. Caddy (Reverse Proxy)¶
- 📋 Funktion: HTTPS Termination, SSL/TLS 1.3, Routing zu allen Services
- 🧠 RAM: 256 MB
- 📡 Ports: 80, 443 (HTTP/HTTPS)
- 🔐 SSL: Let's Encrypt Auto-Renewal
- 🔄 Backends: Public Services + FRP-Tunnel zu NAS-Services
20. Fail2ban (Intrusion Detection)¶
- 📋 Funktion: Automatische Blockierung nach fehlgeschlagenen Login-Versuchen
- 🧠 RAM: Minimal
- 📍 System-Level iptables
- ⚙️ Rule: Ban nach 5 Fehlversuchen für 24h
21. UFW Firewall¶
- 📋 Funktion: Host-Firewall auf VPS
- ⚙️ Policy: Default Deny
- ✅ Offen: Port 80 (HTTP), 443 (HTTPS), 51820 (WireGuard)
- 🔒 Alle anderen: Blockiert
VPN & Tunnel¶
22. WireGuard VPN¶
- 📋 Funktion: Verschlüsseltes Netzwerk für Private Services
- 📡 Port: 51820 (UDP)
- 🔐 Verschlüsselung: ChaCha20
- ⚡ Performance: Hochperformant, low-latency
- 🔑 Keys: Client-spezifisch
23. FRP Server (Fast Reverse Proxy — auf VPS)¶
- 📋 Funktion: Tunnel von VPS zu Synology NAS
- 🧠 RAM: 256 MB
- 🔐 Verschlüsselung: AES-256
- 📍 Tunnelt: SMB (Datei-Zugriff), Docker (Service-Access)
24. FRP Client (Fast Reverse Proxy — auf Synology)¶
- 📋 Funktion: Umgekehrter Tunnel zur VPS
- 📍 Ort: Synology DS918+
- 🔗 Verbindung: Zu FRP Server auf VPS
- 📁 Tunnelt: NAS-Storage & Services
Docker & Isolation¶
25. Docker Runtime¶
- 📋 Funktion: Container-Orchestrierung
- 🔒 Networks: 3 isolierte Docker Networks
- public: Internet-erreichbare Services
- private: VPN-only Services
- storage: Datenbanken & Redis
- 📦 Images: ~15 GB (Speicher)
💾 STORAGE & DATENBANKEN¶
Datenbanken¶
PostgreSQL 16 (Haupt-Datenbank)¶
Instanzen: 1 Cluster mit 7 Datenbanken
RAM: 2 GB
Speicher: 25 GB (allocated)
Separate Datenbanken (DSGVO-Trennung):
├── paperless_business → Business-Dokumente Metadaten
├── paperless_private → Private Dokumente Metadaten
├── n8n → Workflow-Definitionen
├── monica → CRM-Daten (Kunden, Kontakte)
├── roundcube → Email-UI Settings
├── vaultwarden_business → Business-Passwörter (AES-256)
└── dsgvo_system → DSGVO-Dokumente, Anfragen
Redis 7 (In-Memory Cache)¶
- 🧠 RAM: 1–2 GB (sehr effizient)
- ⚡ Latenz: <1ms
- 🔄 Zweck: Session Cache, Query Cache, Real-Time Data
- 📍 Netzwerk: storage (Docker Network)
MongoDB 6 (NoSQL)¶
- 💾 Speicher: 20 GB
- 🧠 RAM: 1 GB
- 📋 Zweck: OpenSign Verträge, Metadaten
- 📍 Netzwerk: storage
Storage-Architektur (3-2-1 Backup-Strategie)¶
HOT STORAGE (VPS NVMe SSD — Performance)¶
Verfügbar: 160 GB NVMe
Nutzung:
├── PostgreSQL Databases 25 GB
├── Redis (RAM-based) 2 GB RAM
├── Paperless Active Docs 50 GB
├── OpenSign Active Contracts 5 GB
├── Docker Volumes 15 GB
└── Buffer/Free 63 GB
Total: ~97 GB genutzt / 160 GB = 60% Auslastung
Zweck: Schnelle OCR, Live-Daten, Real-Time Access
WARM STORAGE (Synology via SMB/FRP — Archive)¶
Verfügbar: 8 TB RAID1
Nutzung:
├── Email Backups (mbsync) 800 GB
├── Paperless Archive 300 GB
├── Private Documents 300 GB
├── OpenSign Archive 200 GB
└── VPS Backups (Daily) 500 GB
Total: ~2.1 TB genutzt / 8 TB = 26% Auslastung
Zweck: Long-Term Archive, Disaster Recovery
COLD STORAGE (Remote Synology — Offsite)¶
Verfügbar: 8 TB (separate Synology Remote)
Nutzung:
└── Weekly Hyper Backup (encrypted) ~1 TB
Total: ~1 TB / 8 TB
Zweck: Geo-Redundanz, Ransomware-Protection
Retention: 4 Wochen (rolling)
Backup-Schedule¶
| Häufigkeit | Quelle | Ziel | Methode | Retention | Größe |
|---|---|---|---|---|---|
| Daily | VPS | Synology | restic | 7 Tage | 500 GB |
| Weekly | Synology | Remote NAS | Hyper Backup | 4 Wochen | 1 TB |
| Monthly | VPS | Hetzner StorageBox | restic | 12 Monate | 500 GB |
RTO (Recovery Time Objective): - VPS Total Loss: <4 Stunden - Einzelner Service: <15 Minuten - Datenbank-Restore: <30 Minuten
RPO (Recovery Point Objective): - Databases: <24 Stunden - Dokumente: <1 Woche
🔄 EMAIL-VERWALTUNG¶
26. mbsync (Email Backup — auf Synology)¶
- 📋 Funktion: Automatisches Gmail-Backup zu Synology
- ⏰ Schedule: Täglich 02:00 Uhr (Cron)
- 🔄 Mode: Read-Only (keine Löschungen)
- 💾 Ziel:
/volume1/private/email/(Maildir-Format) - 🔗 Integration: Dovecot liest Maildir, Roundcube zeigt UI
- 📊 Größe: ~800 GB für 5 Jahre Email
🔐 SECURITY & COMPLIANCE¶
Defense-in-Depth (6 Layer)¶
Layer 1: NETZWERK
├── Hetzner Cloud Firewall (nur 80, 443, 51820)
├── UFW Host Firewall (Default Deny)
└── fail2ban (Auto-Ban)
Layer 2: TRANSPORT
├── HTTPS/TLS 1.3 (Public Services)
├── WireGuard ChaCha20 (Private Services)
└── FRP AES-256 (NAS Tunnel)
Layer 3: AUTHENTIFIZIERUNG
├── 2FA für Admin (TOTP)
├── SSH-Key-only (keine Passwörter)
├── Token-basierte API-Auth (JWT)
└── Separate Credentials pro Service
Layer 4: AUTORISIERUNG
├── RBAC (Role-Based Access Control)
├── Kunden sehen nur eigene Daten
└── Audit-Logs für alle Zugriffe
Layer 5: DATEN
├── Encryption at Rest (NAS Encrypted Folders)
├── Verschlüsselte Backups (AES-256)
├── Passwörter gehasht (bcrypt/Argon2)
└── Datenbank-Verbindungen verschlüsselt
Layer 6: MONITORING
├── fail2ban (Intrusion Detection)
├── Uptime Kuma (Service Monitoring)
├── Netdata (Anomaly Detection)
└── Log-Aggregation (90 Tage Retention)
DSGVO-Compliance¶
| Artikel | Anforderung | Implementierung |
|---|---|---|
| Art. 13/14 | Informationspflicht | Datenschutzerklärung + Onboarding |
| Art. 15 | Auskunftsrecht | Self-Service Portal + API |
| Art. 16 | Berichtigung | Ticketsystem für Anfragen |
| Art. 17 | Löschung | Automatische + manuelle Löschung |
| Art. 28 | AVV | Auto-generiert per n8n/Gotenberg |
| Art. 30 | Verzeichnis | PostgreSQL + PDF-Report monatlich |
| Art. 32 | TOM | Vollständiges Dokument (Auto-Gen) |
| Art. 33 | Meldepflicht | Incident Response Plan dokumentiert |
📊 MONITORING & ALERTS¶
Uptime Kuma (Öffentliches Monitoring)¶
HTTP-Checks (60s Interval):
├── https://business-docs.mk360.de
├── https://workflows.mk360.de
├── https://sign.mk360.de
├── https://vault-business.mk360.de
└── https://crm.mk360.de
TCP-Checks (5min Interval):
├── PostgreSQL:5432
├── Redis:6379
└── MongoDB:27017
SSL Monitoring:
└── *.mk360.de (Warnung <30 Tage)
Notifications:
├── Email bei Ausfall
├── Telegram (optional)
└── Slack (optional)
Status-Seite:
└── https://status.mk360.de (öffentlich)
Netdata (Private System Metrics)¶
Real-Time Monitoring:
├── CPU (pro Core)
├── RAM & Swap
├── Disk I/O & Latency
├── Network Traffic
├── Docker Container (pro Container)
├── PostgreSQL Queries/sec
├── Redis Hit Rate
└── Connection Pools
Alerts:
├── CPU >80%
├── RAM >85%
├── Disk >90%
└── Custom Thresholds
Access: https://netdata.mk360.de (VPN-only)
📈 RESSOURCEN-ZUSAMMENFASSUNG¶
UPDATED RAM-ALLOCATION (mit Paperless-GPT)¶
Total Available: 16 GB
Breakdown (REAL):
├─ Paperless-NGX Business: 2 GB
├─ Paperless-NGX Private: 2 GB
├─ Paperless-GPT (NEW): 1 GB ← NEW!
├─ n8n: 1.5 GB
├─ PostgreSQL: 2 GB
├─ Redis: 2 GB
├─ MongoDB: 1 GB
├─ Gotenberg: 512 MB
├─ Uptime Kuma: 256 MB
├─ Webhook Handler: 256 MB
├─ Caddy: 256 MB
├─ Other Services: 1 GB
└─ Buffer/System: ~2 GB
TOTAL: ~16 GB (TIGHT!)
⚠️ WARNUNG:
• Bei Load-Peaks können Speicher-Issues auftreten
• Swapping würde Performance degradieren
• Monitoring ist ESSENTIELL
• Scale-up bräuchte VPS Upgrade (CX51 = 32GB)
Synology DS918+¶
| Ressource | Allocation | Status |
|---|---|---|
| RAM (8 GB) | DSM: 2 GB Docker: 3 GB Cache: 3 GB |
75% genutzt |
| Storage (8 TB RAID1) | Archive: 2.1 TB Backups: 0.5 TB Free: 5.4 TB |
33% genutzt |
🏗️ INFRASTRUKTUR-DIAGRAMM¶
┌─────────────────────────────────────────────────────────────┐
│ INTERNET │
└────────────┬────────────────────────┬──────────────────────┘
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ HTTPS │ │ WireGuard │
│ (80/443) │ │ (51820) │
└──────┬──────┘ └──────┬──────┘
│ │
┌─────────▼───────────────────────▼──────────────┐
│ HETZNER VPS CX43 (16GB RAM, 160GB SSD) │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ Caddy (Reverse Proxy) │ │
│ │ UFW | fail2ban | WireGuard | FRP Server│ │
│ └─────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ Docker Networks (public/private/storage)│ │
│ ├─────────────────────────────────────────┤ │
│ │ PUBLIC SERVICES: │ │
│ │ ├─ Paperless Business (2GB) │ │
│ │ ├─ n8n Workflows (1.5GB) │ │
│ │ ├─ OpenSign (1GB) │ │
│ │ ├─ Vaultwarden Business (256MB) │ │
│ │ ├─ Monica CRM (512MB) │ │
│ │ ├─ Gotenberg (512MB) │ │
│ │ ├─ Uptime Kuma (256MB) │ │
│ │ └─ Webhook Handler (256MB) │ │
│ │ │ │
│ │ PRIVATE SERVICES: │ │
│ │ ├─ Paperless Private (2GB) │ │
│ │ ├─ Roundcube (200MB) │ │
│ │ ├─ Dovecot (50MB) │ │
│ │ ├─ Dozzle (50MB) │ │
│ │ └─ Netdata (400MB) │ │
│ │ │ │
│ │ STORAGE: │ │
│ │ ├─ PostgreSQL 16 (2GB RAM, 25GB data) │ │
│ │ ├─ Redis 7 (2GB RAM) │ │
│ │ └─ MongoDB 6 (1GB RAM, 20GB data) │ │
│ └─────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ NVMe Storage: 160GB │ │
│ │ ├─ Hot Data: 97GB (70%) │ │
│ │ └─ Buffer: 63GB (30%) │ │
│ └─────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ FRP Tunnel → Synology NAS │ │
│ └──────────────┬────────────────────────┘ │
└─────────────────┼────────────────────────────┘
│
│ FRP Tunnel (AES-256)
│
┌─────────────────▼────────────────────────────────┐
│ SYNOLOGY DS918+ (8GB RAM, 8TB RAID1) │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ Docker Services: │ │
│ │ ├─ Unifi Controller (1GB) │ │
│ │ ├─ AdGuard Home (256MB) │ │
│ │ ├─ Vaultwarden Private (128MB) │ │
│ │ ├─ FRP Client │ │
│ │ └─ mbsync (Email Backup, täglich) │ │
│ └────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ Storage (8TB RAID1): │ │
│ │ ├─ /volume1/private/ │ │
│ │ │ ├─ email/ (800GB, mbsync) │ │
│ │ │ ├─ paperless/ (300GB, Archive) │ │
│ │ │ └─ vaultwarden/ (SQLite) │ │
│ │ │ │ │
│ │ ├─ /volume1/business/ │ │
│ │ │ ├─ paperless-archive/ (300GB) │ │
│ │ │ └─ contracts/ (200GB, OpenSign) │ │
│ │ │ │ │
│ │ └─ /volume1/backups/ │ │
│ │ └─ vps-daily/ (500GB) │ │
│ │ │ │
│ │ Total: 2.1 TB genutzt / 8 TB = 26% │ │
│ └────────────────────────────────────────────┘ │
└────────────────┬───────────────────────────────┘
│
│ Weekly Hyper Backup
│ (Encrypted)
│
┌──────────▼──────────┐
│ Remote Synology │
│ (Offsite) │
│ 8TB RAID1 │
│ ~1TB Backups │
└─────────────────────┘
⚠️ KRITISCHE BEWERTUNG¶
✅ STÄRKEN¶
| Punkt | Bewertung |
|---|---|
| Separation Business/Private | ⭐⭐⭐⭐⭐ Perfekt DSGVO-konform |
| Automation | ⭐⭐⭐⭐⭐ Spart >90% Zeit (Onboarding/Rechnungen) |
| Security | ⭐⭐⭐⭐⭐ Defense-in-Depth mit VPN, Firewall, fail2ban |
| Backup | ⭐⭐⭐⭐⭐ 3-2-1 Strategie mit Offsite |
| Monitoring | ⭐⭐⭐⭐☆ Gutes Visibility mit Uptime Kuma + Netdata |
⚠️ SCHWÄCHEN¶
| Problem | Severity | Impact | Lösung |
|---|---|---|---|
| Zu viele Services (31) | 🔴 HOCH | Wartung exponentiell komplexer | Auf 10-15 reduzieren |
| 7 Datenbanken | 🔴 HOCH | Backup-Komplexität, Overhead | 1-2 DB-Cluster |
| Abhängigkeit n8n | 🔴 HOCH | Ausfall = keine Automatisierung | Backup-Prozess definieren |
| Single VPS (kein HA) | 🟡 MITTEL | Ausfall = alles down | Load Balancer + 2. VPS |
| FRP-Komplexität | 🟡 MITTEL | Debugging schwierig | Monitoring ausbauen |
| RAM-Overhead | 🟡 MITTEL | 16GB kann eng werden | Lazy Loading, Memory Limits |
| Maintenance-Burden | 🟡 MITTEL | Zeitaufwand unterschätzt | Automation + Runbooks |
💡 ALTERNATIVE: VEREINFACHTE VARIANTE (MVP)¶
Falls die Komplexität zu viel wird, empfehle ich diese Phase-Strategie:
Phase 1: MVP (Wochen 1-12)¶
Services: 8 (statt 31)
ESSENTIELL:
├── Paperless-NGX (nur Business) ← Dokument-Management
├── n8n (nur 3 Core Workflows) ← Onboarding + Invoice
├── Gotenberg ← PDF-Gen
├── PostgreSQL (1 Cluster, 1 DB) ← Datenbank
├── Redis ← Cache
├── Caddy (Reverse Proxy) ← HTTPS
├── Uptime Kuma ← Monitoring
└── fail2ban + UFW ← Security
→ RAM-Nutzung: ~6 GB statt 12 GB
→ Services zu monitoren: 8 statt 31
→ Komplexität: ~20% der jetzigen
Was WEGLASSEN in Phase 1: - ✗ Private Paperless (zu komplex für Anfang) - ✗ OpenSign (Komplexität vs. Nutzen fraglich) - ✗ Monica CRM (Excel reicht) - ✗ Dovecot/Roundcube (Gmail genügt) - ✗ Unifi/AdGuard (für 1 Person overkill) - ✗ Netdata (Uptime Kuma genügt) - ✗ Dozzle (lokale Logs ausreichend) - ✗ Multiple Datenbanken
Phase 2: Enhancement (Monat 4-6)¶
+3 Services hinzufügen
NEUE SERVICES:
├── Monica CRM ← wenn wirklich nötig
├── Vaultwarden (Business) ← für Team-Zugänge
└── Private Paperless (optional) ← wenn Private-Docs nötig
→ RAM-Nutzung: ~9 GB
→ Services: 11
→ Weiterhin überschaubar
Phase 3: Advanced (Monat 7+)¶
Nur wenn ROI klar ist:
OPTIONAL:
├── OpenSign ← wenn E-Sig rechtlich nötig
├── Dovecot/Roundcube ← nur für Email-Archiv
├── Unifi Controller ← wenn WLAN-Expansion geplant
├── AdGuard Home ← nur wenn Privatspäre wichtig
└── Netdata ← bei Performance-Issues
📋 CHECKLISTE: PRODUCTION-READY¶
Deployment¶
- Docker Compose standardisiert
- Alle Secrets in .env (git-ignored)
- Health-Checks definiert
- Auto-Restart Policies gesetzt
- Log-Rotation konfiguriert
- Cron-Jobs für Backups definiert
Security¶
- fail2ban konfiguriert & getestet
- UFW Rules definiert
- SSL Certs automatisiert (Caddy)
- 2FA für Admin-Zugänge aktiviert
- SSH-Key-Auth konfiguriert
- Secrets Management implementiert
Backup¶
- Daily VPS Backup zu NAS (restic)
- Weekly NAS Backup zu Remote (Hyper Backup)
- Recovery Plan dokumentiert
- Test-Restore durchgeführt
- RTO/RPO definiert
Monitoring¶
- Uptime Kuma Checks definiert
- Notification Channels konfiguriert
- Status Page öffentlich
- SSL Cert Monitoring aktiv
- Log-Aggregation läuft
Documentation¶
- Architecture Diagram (Aktuell)
- Service Runbook (Start/Stop/Troubleshoot)
- Backup Runbook
- Incident Response Plan
- Passwort-Manager dokumentiert
DSGVO¶
- Datenschutzerklärung live
- AVV-Vorlage vorhanden
- Verarbeitungsverzeichnis dokumentiert
- TOM-Dokument erstellt
- Löschkonzept definiert
🔧 WARTUNGS-ROADMAP¶
Monatlich¶
- Backups verifizieren (Test-Restore)
- Security Updates einspielen
- Logs reviewen auf Anomalien
- Storage-Nutzung überprüfen
Quarterly¶
- Performance-Analyse (Netdata)
- DSGVO-Compliance-Audit
- Disaster Recovery Test
- Dokumentation aktualisieren
Jährlich¶
- Security Audit (externe Prüfung?)
- Cost-Optimization Review
- Capacity Planning für nächstes Jahr
- Team Training (neue Features)
💰 KOSTENÜBERSICHT¶
| Item | Monatlich | Jährlich | Anmerkung |
|---|---|---|---|
| Hetzner VPS CX43 | €20 | €240 | 16GB RAM, 160GB SSD |
| Synology DS918+ | - | - | €600 einmalig (vor 3 Jahren) |
| Strom/Kühlung (NAS) | €15–20 | €180–240 | Schätzung |
| Backup Storage (optional) | €10–15 | €120–180 | Falls extern (Hetzner StorageBox) |
| Domain mk360.de | €0.70 | €8.40 | via ionos/Namecheap |
| Webflow (Portal) | $20 | $240 | Falls Premium-Plan |
| SSL (Let's Encrypt) | €0 | €0 | Kostenlos via Caddy |
| Monitoring/APM (optional) | €0–50 | €0–600 | Nur wenn erweitert |
| Total minimum | €45–65 | €788–948 | |
| Total mit Optionen | €75–125 | €1.3k–1.8k |
❓ FAQ (Häufig gestellte Fragen)¶
Q: Kann ich mit dieser Architektur starten?¶
A: Ja, aber ich empfehle Phase 1 (MVP). Das ist Production-Ready ohne unnötige Komplexität.
Q: Was passiert, wenn der VPS ausfällt?¶
A: - RPO: <24h (Backup täglich) - RTO: <4h (Backup restore + Docker start) - Für HA: 2. VPS + Load Balancer nötig (~€40/Monat extra)
Q: Ist diese Architektur DSGVO-konform?¶
A: Größtenteils ja, mit Vorbehalten: - ✅ Daten-Trennung (Business/Private) - ✅ Backup-Strategie - ✅ Audit-Logs möglich - ⚠️ Webhook Handler braucht Audit-Trail - ⚠️ Vendor-Lock-In bei Webflow (Datenexport!) - ⚠️ AVV mit Kunden muss unterzeichnet sein
Q: Kann ich alles allein betreiben?¶
A: - MVP Phase: Ja, ~2-3h/Monat Wartung - Full Stack: Schwierig, ~10-15h/Monat nötig - Empfehlung: Automation maximieren (Cron, Alerts)
Q: Warum so viele Services in der Dokumentation?¶
A: Das ist ein über-engineered Design. Die Realität: - Du brauchst nicht alle von Anfang an - Jeder Service = 1 mehr Point of Failure - Komplexität ≠ Features
Q: Sollte ich alles selbst hosten?¶
A: Teilweise ja, teilweise nein:
| Service | Self-Host? | Begründung |
|---|---|---|
| Paperless | ✅ Ja | Daten-Sensibilität, guter ROI |
| n8n | ✅ Ja | Workflow-Logik = Kerngeschäft |
| Vaultwarden | ⚠️ Bedingt | Kann auch BW SaaS sein (~$3/Monat) |
| OpenSign | ❌ Nein | Complex, kompliziert selbst zu hosten |
| CRM | ❌ Nein | Nutze Brevo/HubSpot kostenlos |
| ❌ Nein | Gmail/Mailbox.org genügt | |
| Monitoring | ✅ Ja | Uptime Kuma ist leicht |
Q: Wie groß ist der Wartungsaufwand wirklich?¶
A: Ehrlich?
MVP (Phase 1): ~2h/Monat
- 30min: Backup-Verifizierung
- 30min: Security Updates
- 30min: Log-Review
- 30min: Puffer/Unerwartetes
Full Stack (aktuelles Design): ~15h/Monat
- 2h: Komplexe Debugging-Sessions
- 1h: Service-Restart nach Updates
- 2h: Monitoring + Optimization
- 1h: DSGVO-Admin
- 3h: Firewall/Security-Konfiguration
- 2h: Datenbank-Maintenance
- 2h: Backup-Verifikation
- 2h: Dokumentation Aktualisierung
Q: Sollte ich alles in Kubernetes deployen?¶
A: Kurz: NEIN (noch nicht)
| Frage | Antwort |
|---|---|
| Hast Du 50+ Services? | Nein → Overkill |
| Brauchst Du Auto-Scaling? | Nein → Nicht nötig |
| Hast Du DevOps-Team? | Nein → Zu komplex |
| Skaliert Docker Compose nicht? | Noch nicht → Genügt |
Erst Kubernetes wenn: 10+ Services + High Traffic + Team
Q: Welche monitoring Tools soll ich nutzen?¶
A: Gestaffelt:
- Uptime Kuma (kostenlos, einfach) ← START HIER
- Netdata (wenn Performance wichtig)
- Prometheus + Grafana (wenn sehr detailliert nötig)
Q: Wie sichere ich die Secrets?¶
A: Gestaffelt:
- Minimum: .env Datei (git-ignored), chmod 600
- Better: Vaultwarden für Passwörter
- Best: HashiCorp Vault oder AWS Secrets Manager
Q: Kann ich später zu Kubernetes migrieren?¶
A: Ja, aber: - Docker Compose ist ein guter Stepping Stone - Migration braucht ~2-3 Tage Arbeit - Nicht kritisch für Start
🎯 NÄCHSTE SCHRITTE (konkrete Roadmap)¶
Woche 1-2: Planung & Setup¶
- [ ] VPS provisioning (Hetzner)
- [ ] Base-System (Ubuntu 24.04)
- [ ] Docker + Docker Compose Installation
- [ ] SSH-Keys Setup (kein PW-Login)
- [ ] UFW Firewall konfigurieren
- [ ] Domain DNS auf VPS zeigen
Woche 3-4: Core Services (MVP Phase 1)¶
- [ ] PostgreSQL aufsetzen
- [ ] Paperless-NGX Business
- [ ] n8n Installation
- [ ] Caddy Reverse Proxy + Let's Encrypt
- [ ] Health-Checks für alle Services
- [ ] Basic Monitoring (Uptime Kuma)
Woche 5-6: Automation & Backup¶
- [ ] n8n Onboarding-Workflow
- [ ] n8n Invoice-Workflow
- [ ] Gotenberg Integration
- [ ] Backup-Skript (restic)
- [ ] Cron Jobs Setup
- [ ] Test-Restore durchführen
Woche 7-8: Security Hardening¶
- [ ] fail2ban konfigurieren
- [ ] 2FA aktivieren (Admin)
- [ ] SSL Cert Auto-Renewal testen
- [ ] API-Token System implementieren
- [ ] Secrets Management (Vaultwarden)
- [ ] Security Audit durchführen
Woche 9-10: Kunden-Portal¶
- [ ] Webflow Portal Setup
- [ ] Webhook Handler implementieren
- [ ] Token-Auth testen
- [ ] Customer API dokumentieren
- [ ] Portal Beta mit Testkunden
- [ ] Feedback einarbeiten
Woche 11-12: Go-Live Preparation¶
- [ ] Dokumentation finalisieren
- [ ] Runbooks erstellen
- [ ] Incident Response Plan
- [ ] Team Training
- [ ] DSGVO-Compliance-Check
- [ ] Go-Live mit erstem Kunden
📚 RESSOURCEN & LINKS¶
Technologie-Stack¶
- Docker: https://docs.docker.com/
- Docker Compose: https://docs.docker.com/compose/
- Caddy: https://caddyserver.com/docs/
- Paperless-NGX: https://docs.paperless-ngx.com/
- n8n: https://docs.n8n.io/
- PostgreSQL: https://www.postgresql.org/docs/
Security & DevOps¶
- OWASP Top 10: https://owasp.org/www-project-top-ten/
- fail2ban: https://www.fail2ban.org/wiki/index.php/Main_Page
- WireGuard: https://www.wireguard.com/quickstart/
- Let's Encrypt: https://letsencrypt.org/de/
Best Practices¶
- 12 Factor App: https://12factor.net/
- DevOps Handbook: https://itrevolution.com/the-devops-handbook/
- Infrastructure as Code: https://www.terraform.io/
🎯 FAZIT (UPDATED)¶
Die aktuelle Architektur ist: - ✅ Technisch solide (alles funktioniert) - ✅ Sicherheitsorientiert (Defense in Depth) - ✅ DSGVO-konform (mit Dokumentation + DPA für OpenAI) - ✅ AI-Enhanced (Paperless-GPT jetzt integriert) - ❌ Aber: Zu komplex + RAM eng (16GB wird knapp mit GPT)
Empfohlene Strategie:¶
Option A: JETZT STARTEN (MVP-Ansatz)
Phase 1: Basis-Services only
├─ Paperless-NGX Business (2GB)
├─ n8n (1.5GB)
├─ PostgreSQL (2GB)
├─ Redis (2GB)
├─ Caddy, fail2ban, Uptime Kuma
└─ (Total: ~9GB, komfortabel)
Später: Paperless-GPT + erweiterte Services
└─ Nach 3 Monaten, wenn Basis stabil läuft
Option B: FULL STACK (wenn VPS-Upgrade möglich)
Upgrade zu Hetzner CX51 (32GB)
├─ Alle 32 Services parallel
├─ Kein RAM-Bottleneck mehr
├─ Kosten: €40/Monat (statt €20)
└─ Komfortable Scale-Position
Meine klare Empfehlung:¶
- START mit Phase 1 MVP (3-4 Wochen)
- Nach 3 Monaten: Lessons Learned → Paperless-GPT hinzufügen
- VPS Upgrade (CX51) nur wenn echte Last vorhanden ist
ROI der Automation: ~113h/Monat gespart ≈ €2-3k/Monat an Manpower!