Hetzner-MVP für Industriekunden — Lean Custom-App-Stack
Brainstorm-Output nach /ce:brainstorm am 2026-05-13. Quellt das Implementations-Planning (/ce:plan).
Problem Frame
Neuer Industriekunden-Lead mit „Datensicherheit oberste Priorität”. AWS Frankfurt ist formal DSGVO-konform aber fällt unter US CLOUD Act — ein Knock-Out-Argument für deutsche Industriekunden die explizit „kein US-Anbieter” wollen.
Das bestehende ADR llm-hosting-eu-optionen (April 2026) hat Hetzner Frankfurt als Default für App+DB-Hosting und Mistral La Plateforme als Default-LLM für DSGVO-strenge Kunden festgelegt — aber das wurde in der Praxis nicht umgesetzt. Der gesamte bisherige Stack (Becker, VF, Voice-POC, agents-platform) liegt auf AWS.
Mit diesem Lead wird die Umsetzung des ADRs akut. Wir brauchen einen Lean-Stack der reicht um den Kunden zu onboarden, ohne den vollen AWS-Twin nachzubauen (keine K3s-Schicht, keine MCP-Bundle-Mechanik, kein eigener Logging-Stack).
Requirements
Infrastruktur
- R1. Hetzner-Account + Project pro Kunde (Customer-isoliert via API-Token)
- R2. 2× Hetzner Cloud Server (1× CCX23 für App+LiteLLM, 1× CCX13 für Postgres) in
eu-central(Falkenstein oder Nürnberg) - R3. Object Storage Bucket für Kunden-Daten + LLM-Audit-Logs mit 7-Jahre-Retention-Lifecycle
- R4. Postgres 16 mit
pgvector-Extension auf CCX13 + 50 GB Volume - R5. Backup-Strategie für Postgres (Hetzner Snapshots +
pg_dumpnach Object Storage)
LLM-Schicht
- R6. Mistral La Plateforme Account + DPA unterschrieben
- R7. LiteLLM als Provider-Adapter im App-Container (laut LLM-ADR Pflicht-Pattern)
- R8. LiteLLM Logging-Hook protokolliert jeden LLM-Call Volltext I/O nach Object Storage (DSGVO-Audit-Trail, analog Bedrock-Invocation-Logging bei Becker)
Edge / Auth
- R9. Cloudflare-Tunnel von App zu Cloudflare-Edge (kein direkter Public-Port auf VM)
- R10. Cloudflare Access für SSO/Whitelist (Kunden-User authentifizieren)
Operations
- R11. Better Stack als Log-Drain (strukturierte Logs + Alarme, kein eigener Loki-Stack)
- R12. Terraform mit
hcloud-Provider als IaC (state in Object Storage), Manual-Operations via lazyants Hetzner-MCP - R13. Hetzner Cost-Limit + Better-Stack-Notification bei Schwellwert-Überschreitung
Daten-Souveränität
- R14. Client-Side-Encryption sensibler Felder via
agevor Upload nach Object Storage (KMS-Äquivalent) - R15. Hetzner AVV unterschrieben, Mistral DPA unterschrieben
- R16. VVT-Eintrag beim Kunden ergänzt (Hetzner + Mistral als Auftragsverarbeiter)
Capability-Dokumentation
- R17.
intern/capabilities/hetzner/_index.mdals Hetzner-Sub-Index (analogaws/_index.md) - R18. Hetzner-MCP (lazyants) lokal registriert in MCP-Config für Infra-Steuerung aus Claude Code heraus
Success Criteria
- Industriekunde kann komplett onboarded werden ohne AWS-Berührung (vom Pitch zum Live-Setup in ≤1 Woche aktive Bauzeit)
- Compliance-Story sauber: deutsche AVV, kein US-Anbieter im Daten-Pfad, vollständiger LLM-Audit-Trail
- Fixe Hetzner-Kosten unter 100 €/Mo (Server + Storage + Volume), Mistral pay-per-use
- Pattern dokumentiert und wiederholbar für Folge-Industriekunden ohne Neudenken
Scope Boundaries
Drin:
- 2-VM-Stack (App + DB) mit Docker Compose
- 1 Kunde = 1 Hetzner Project
- Mistral als LLM, LiteLLM-Adapter, Audit-Hook
- Cloudflare-Tunnel + Access
- Better Stack als externer Logging-Drain
Draußen (kommt später wenn 2+ Industriekunden):
- Cloudfleet K3s / Kubernetes — Overkill für 1 App
- MCP-Schicht / claude.ai-Connector — kein Industriekunden-Standard, Becker hat das auch nicht
- Vault / Keycloak / Authentik — Docker-Compose-Secrets reichen bei 1 Kunde
- Loki/Grafana-Stack — Better Stack als externer Drain reicht
- Wazuh/CrowdSec SIEM — Hetzner-Console + Cloudflare-WAF reichen
- Multi-Tenant-Schicht — 1 Project pro Kunde, harte Isolation via Projects
- Voice-Stack — nicht im Industriekunden-Profil
- Lambda/Cron-Routinen-Pendant —
agents-platformbleibt auf AWS, das ist unser eigenes Tooling - Migration VF und Voice-POC — running system, kein Migrations-Druck
Update 2026-05-13: Becker ist jetzt explizit auf Hetzner — V3-Vertragspaket umgestellt vor Versand. Hintergrund: Ralfs “macht es genau wie Lisa Board” (Lisa läuft auf Hetzner) plus zweiter Industriekunden-Lead per WhatsApp mit Skepsis gegenüber US-Anbietern. Damit ist die Regel Industriekunde = Hetzner etabliert.
Bewusst NICHT entschieden in dieser Iteration:
- Domain-Name für die App (kommt mit Lead-Briefing)
- Konkrete LLM-Modell-Wahl innerhalb Mistral (Large 3 als Default, Medium 3 wenn Volume-Druck)
- Konkreter Use-Case der App (CRM-Add-on? Vertragsprüfung? Internal-Tool?) — kommt mit Lead-Briefing
Key Decisions
- D1 Zweite Spur statt Pivot. Hetzner und AWS parallel. Hetzner = Default für alle Industriekunden (Becker, neuer Lead aus WhatsApp-Forward 13.05.2026), AWS = Standard für Stripe-Tier/Self-Service/Voice-POC/agents-platform. Memory-Regel „AWS-First Hosting” gilt nicht mehr ungefiltert — siehe hosting-industriekunden.
- D2 Lean-MVP statt AWS-Twin. Industriekunden-Profil ist deutlich schmaler als VF-Profil (kein MCP-Bundle, kein Multi-User-Chat, keine Multi-Tenancy). Das spart ~2 Wochen Bauzeit und ~50 €/Mo Fixkosten.
- D3 Mistral La Plateforme als Default-LLM. Frankreich, kein CLOUD Act, DSGVO-klar. Plus Provider-Adapter via LiteLLM damit Wechsel jederzeit möglich (Anthropic via Bedrock, vLLM-Self-Host bei High-Volume).
- D4 2 VMs + Docker Compose statt Kubernetes. Bei einem Workload + DB ist Compose simpler, billiger, debuggbarer. K3s/Cloudfleet kommt erst wenn 2-3 Kunden oder Shared Tenancy.
- D5 Cloudflare bleibt Edge-Layer. Tunnel + Access wie heute. Kein Wechsel — Cloudflare ist provider-unabhängig und ist bereits etabliert.
- D6 Better Stack statt eigener Loki-Stack. 0-25 €/Mo extern statt 2 Tage Setup + monatliche Pflege selbst.
- D7 Terraform als IaC.
hcloud-Provider ist reif, State in Object Storage. lazyants Hetzner-MCP für Ad-hoc-Operations aus Claude Code.
Dependencies / Assumptions
- Hetzner-Account muss neu angelegt werden (heute nicht vorhanden)
- Mistral La Plateforme Account muss neu angelegt werden + DPA unterschrieben
- Lead-Briefing mit Industriekunde noch ausstehend — Use-Case, Daten-Klassifikation, User-Anzahl, Integrations-Bedarf unklar
- Better Stack Account (Free-Tier wahrscheinlich ausreichend für 1 Kunde)
- Cloudflare-Account ist da (bestehend)
Outstanding Questions
Resolve Before Planning
(keine — alle blockierenden Strategie-Entscheidungen sind getroffen)
Deferred to Planning
- [Affects R5][Technical] Backup-Strategie Postgres: nur Hetzner Snapshots, oder zusätzlich
pg_dumpauf Object Storage mit Lifecycle? - [Affects R12][Technical] Hetzner-Skill
hetzner-deploy(analogmcp-cloud-bereitstellung) jetzt oder erst beim zweiten Kunden? - [Affects R17][Needs research] Capability-Doku-Struktur: 1:1-Spiegel von
intern/capabilities/aws/_index.md-Struktur oder eigenes Layout? - [Affects R14][Technical] Welche konkreten Felder im Datenmodell sind „sensitiv” und brauchen Client-Side-Encryption? Hängt am Use-Case.
- [Branche/Use-Case Industriekunde][Lead-Briefing] Custom-App vs RAG-System vs Internal-Chat — bestimmt App-Code-Skeleton
- [Affects R8][Technical] Audit-Log-Format: JSON-Lines pro Call oder strukturiertes Per-Day-Aggregat?
Next Steps
→ /ce:plan für strukturierten Implementierungsplan
Cross-Refs
- llm-hosting-eu-optionen — bestehendes ADR, dieses Projekt setzt es um
- anthropic-datenschutz — CLOUD-Act-Hintergrund
- aws-multi-account-strategie — bestehende AWS-Strategie (bleibt für Bestand)
- becker — Industriekunde-Referenz (Stack-Profil)
- av-becker — was Becker auf AWS hat (Vergleichs-Basis)
- produkt-bundle — übergeordnetes Produkt-Bundle (Hetzner als zweite Spur ergänzt es)
- _index — Voice-POC, bleibt AWS
- _index — MCP-Pipeline, bleibt AWS
Verlauf
- 2026-05-13: Projekt angelegt. Brainstorm via
/ce:brainstormdurchgelaufen — 2 Strategie-Entscheidungen festgelegt (D1 Zweite Spur, D2 Lean-MVP). Pressure-Test ergab: LLM-ADR existiert seit April 2026 aber wurde nicht umgesetzt. Scope-Reduktion auf reines Industriekunden-Bedarf (statt MCP-Bundle-Stack) macht Customer-Ready in ≤1 Woche realistisch.