[{"data":1,"prerenderedAt":212},["ShallowReactive",2],{"search-de":3,"content-de-developer\u002Fdecisions\u002F006-self-hosted-convex":4,"surround-de-\u002Fdeveloper\u002Fdecisions\u002F006-self-hosted-convex":203},[],{"id":5,"title":6,"body":7,"description":195,"extension":196,"meta":197,"navigation":198,"path":199,"seo":200,"stem":201,"__hash__":202},"content_de\u002F3.developer\u002Fdecisions\u002F7.006-self-hosted-convex.md","ADR-006: Selbst gehostetes Convex",{"type":8,"value":9,"toc":188},"minimark",[10,27,32,42,45,73,77,80,83,135,139,144,165,170],[11,12,13,21],"ul",{},[14,15,16,20],"li",{},[17,18,19],"strong",{},"Status:"," Angenommen",[14,22,23,26],{},[17,24,25],{},"Datum:"," 2026-03-24",[28,29,31],"h2",{"id":30},"kontext","Kontext",[33,34,35,36,41],"p",{},"Owlats Backend läuft vollständig auf Convex (",[37,38,40],"a",{"href":39},"\u002Fdeveloper\u002Fdecisions\u002F002-convex-backend","ADR-002","). Mit dem Wachstum der Plattform wird Self-Hosting zur Anforderung für Organisationen, die Datensouveränität, die Einhaltung von On-Premises-Vorgaben oder volle Kontrolle über ihre Infrastruktur benötigen.",[33,43,44],{},"Die geprüften Optionen:",[46,47,48,54,60],"ol",{},[14,49,50,53],{},[17,51,52],{},"Migration auf PostgreSQL + eigene API-Schicht"," — alle Convex-Queries, -Mutations und -Actions in ein klassisches REST-\u002FtRPC-Backend mit PostgreSQL umschreiben. Volle Kontrolle, aber enormer Migrationsaufwand und Verlust von Echtzeitreaktivität, ACID-Transaktionen und dem Modell koresidenter TypeScript-Funktionen.",[14,55,56,59],{},[17,57,58],{},"Abstraktion über eine Datenbank-Adapterschicht"," — sowohl Convex (Cloud) als auch PostgreSQL (selbst gehostet) hinter einem Interface pflegen. Verdoppelt die Wartungsfläche und die Testmatrix für jedes Feature.",[14,61,62,65,66,72],{},[17,63,64],{},"Das quelloffene Convex-Backend nutzen"," — Convex hat ",[37,67,71],{"href":68,"rel":69},"https:\u002F\u002Fgithub.com\u002Fget-convex\u002Fconvex-backend",[70],"nofollow","sein Backend quelloffen gestellt",", und zwar unter der Functional Source License (FSL-1.1-Apache-2.0), die zwei Jahre nach jedem Release in Apache 2.0 übergeht. Selbst-Hoster betreiben dieselbe Convex-Runtime per Docker. Keinerlei Codeänderungen auf Anwendungsebene.",[28,74,76],{"id":75},"entscheidung","Entscheidung",[33,78,79],{},"Das quelloffene Convex-Backend für das Self-Hosting nutzen. Der gesamte Owlat-Stack — API, Echtzeit-Subscriptions, Dateispeicher, Vektorsuche, geplante Funktionen — läuft identisch, ob in der Convex Cloud deployt oder per Docker selbst gehostet.",[33,81,82],{},"Zentrale Eigenschaften von selbst gehostetem Convex:",[11,84,85,91,102,112,129],{},[14,86,87,90],{},[17,88,89],{},"Docker-Deployment"," — ein einzelner Container für das Backend, dazu optional ein Dashboard-Container für die Administration",[14,92,93,96,97,101],{},[17,94,95],{},"Integrierter Speicher"," — Datei-Uploads über ",[98,99,100],"code",{},"ctx.storage"," funktionieren ohne externen S3-Dienst",[14,103,104,107,108,111],{},[17,105,106],{},"Integrierte Vektorsuche"," — ",[98,109,110],{},"vectorIndex","-Definitionen funktionieren nativ und ermöglichen den Knowledge Graph und die semantische Dateisuche ohne separate Vektordatenbank",[14,113,114,107,117,120,121,124,125,128],{},[17,115,116],{},"Volle CLI-Unterstützung",[98,118,119],{},"npx convex dev"," und ",[98,122,123],{},"npx convex deploy"," funktionieren über ",[98,126,127],{},"CONVEX_SELF_HOSTED_URL"," auch gegen selbst gehostete Instanzen",[14,130,131,134],{},[17,132,133],{},"FSL-Lizenz"," — Functional Source License (nach zwei Jahren Apache 2.0); kostenlos selbst zu hosten und intern zu nutzen, keine Lizenzgebühren, mit einer befristeten Einschränkung beim Weiterverkauf von Convex selbst",[28,136,138],{"id":137},"konsequenzen","Konsequenzen",[33,140,141],{},[17,142,143],{},"Ermöglicht:",[11,145,146,153,156,159,162],{},[14,147,148,149,152],{},"Keine Änderungen am Anwendungscode für das Self-Hosting — dieselben Funktionen aus ",[98,150,151],{},"apps\u002Fapi\u002Fconvex\u002F"," laufen in der Cloud wie selbst gehostet",[14,154,155],{},"Eine einzige Docker-Compose-Datei für den gesamten Owlat-Stack (Convex, Web, MTA, Redis, ClamAV)",[14,157,158],{},"Vektorsuche für den Knowledge Graph und das semantische Dateisystem, ohne eine separate Vektordatenbank zu deployen",[14,160,161],{},"Dateispeicher, ohne MinIO oder S3 zu deployen",[14,163,164],{},"Datensouveränität — alle Daten bleiben innerhalb der Infrastruktur des Selbst-Hosters",[33,166,167],{},[17,168,169],{},"Abwägungen:",[11,171,172,175,178,181],{},[14,173,174],{},"Selbst-Hoster übernehmen die operative Verantwortung für das Convex-Backend (Backups, Upgrades, Monitoring)",[14,176,177],{},"Selbst gehostetes Convex unterstützt die Free-Tier-Funktionen des Cloud-Produkts — einige fortgeschrittene Cloud-Funktionen stehen möglicherweise nicht zur Verfügung",[14,179,180],{},"Erfordert Docker und ausreichende Rechenressourcen für die Convex-Runtime",[14,182,183,184,187],{},"Community-Support für Self-Hosting-Probleme (über den Discord-Kanal ",[98,185,186],{},"#self-hosted",") statt eines Enterprise-SLA",{"title":189,"searchDepth":190,"depth":190,"links":191},"",2,[192,193,194],{"id":30,"depth":190,"text":31},{"id":75,"depth":190,"text":76},{"id":137,"depth":190,"text":138},"Warum Owlat das quelloffene Convex-Backend für das Self-Hosting nutzt, statt auf eine andere Datenbank zu migrieren.","md",{},true,"\u002Fdeveloper\u002Fdecisions\u002F006-self-hosted-convex",{"title":6,"description":195},"3.developer\u002Fdecisions\u002F7.006-self-hosted-convex","BeWexHVrtkvGcpJxtV3yErCfMhmKxRzQa2IcMTOoAeU",[204,208],{"title":205,"path":206,"stem":207,"children":-1},"ADR-005: Eigener MTA","\u002Fdeveloper\u002Fdecisions\u002F005-custom-mta","3.developer\u002Fdecisions\u002F6.005-custom-mta",{"title":209,"path":210,"stem":211,"children":-1},"ADR-007: Austauschbarer LLM-Provider","\u002Fdeveloper\u002Fdecisions\u002F007-pluggable-llm","3.developer\u002Fdecisions\u002F8.007-pluggable-llm",1786915110702]