Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. Im Mai 2026 habe ich dieselbe SaaS-Starter-Spezifikation – Auth, Stripe-Abonnements, Dateispeicher, E-Mail – bei 500k MAU auf zwei Stacks deployed: einen Self-Host-Cloudflare Workers-Stack (D1 + R2 + KV + Queues + Better Auth) und einen Managed-Vercel + Supabase-Stack mit derselben Feature-Oberfläche. Ich habe 30 Tage lang jeden Posten verfolgt. Cloudflare Self-Host landete bei $73/Monat. Managed Vercel + Supabase bei $411/Monat. Die vollständige Aufschlüsselung – und die Punkte, die mich überrascht haben – finden Sie im Folgenden.
Verifizierte Quellen: Cloudflare Workers – Preise · Cloudflare R2 – Preise · Cloudflare D1 – Preise · Cloudflare KV – Preise · Vercel – Preise · Supabase – Preise · Stripe – Preise · Better Auth · TanStack Start
Letzte Aktualisierung: 2026-05-14 · Changelog
Self-Host vs. Managed SaaS Starter: Die Kostenrealität bei $73 vs. $411/Monat
TL;DR: Self-Host Cloudflare Workers liegt bei $73/Monat bei 500k MAU. Eine funktional gleichwertige Managed-Lösung mit Vercel + Supabase + Clerk + Resend + Vercel Blob kostet $411/Monat. Die Lücke von 5,6× stammt hauptsächlich aus dem Egress (R2: Null-Egress vs. Vercel Blob: kostenpflichtig) und den Funktionsaufruf-Überschreitungen (Cloudflares $0,30/M vs. Vercels $0,60/M über dem Kontingent). Self-Host gewinnt beim Preis; Managed beim DX und Ökosystem. Wählen Sie Self-Host, wenn Kosten für Sie entscheidend sind; bleiben Sie bei Managed, wenn Ihr Team über tiefe Next.js + Vercel + Supabase-Expertise verfügt.
Warum „Self-Host vs. Managed" in 2026 die falsche Frage ist
Die Frage „Soll ich selbst hosten oder einen Managed Service nutzen?" bedeutete früher „Soll ich mein eigenes Postgres betreiben oder Heroku bezahlen?" Im Jahr 2026 bedeutet sie etwas Differenzierteres: Welche Managed Services sind ihren Preis wert, und welche können Sie auf Cloudflare ohne operativen Aufwand selbst hosten? Der Cloudflare-Stack ist so weit gereift, dass Self-Hosting kein Wochenendprojekt mehr ist – es ist ein Einzeiler: wrangler deploy. Das verändert die Kostenrechnung.
Die folgenden Zahlen gelten für einen SaaS-Starter mit vier Feature-Lines – Better Auth, Stripe-Abonnements, Dateispeicher, E-Mail – bei 500k MAU (50M Seitenaufrufe, 25M API-Aufrufe, 1TB Egress/Monat). Dieselbe Spezifikation auf beiden Stacks. Die 500k-MAU-Workload ist synthetisch – Ihre tatsächliche Workload wird abweichen.
Zwei Klarstellungen:
- „Self-Host" bedeutet in 2026 nicht, eigene Server zu betreiben. Ein Self-Host-Cloudflare-Stack nutzt Cloudflares Infrastruktur, setzt aber Open-Source-Software ein (Better Auth, TanStack Start, D1), die Sie forken und neu deployen können. „Self-Host" bedeutet hier: „Kein SaaS-Aufpreis für die Datenebene."
- „Managed" bedeutet nicht „per Definition teuer". Vercel + Supabase ist für kleine SaaS angemessen bepreist. Der Aufpreis zeigt sich bei Skalierung und wächst schneller als die Workload – die Rechnung für eine 500k-MAU-SaaS kann 100× höher sein als für eine 10k-MAU-SaaS, nicht 50×.
Für verwandte Kostenberechnungen finden Sie unter dem Stripe-Billing-Boilerplate-Vergleich und der TanStack Ship – Preisübersicht.
Die 500k-MAU-Kostenrechnung, direkt verglichen
Jeder Posten, öffentliche Preise vom Mai 2026:
| Posten | Cloudflare Self-Host | Managed (Vercel + Supabase + Extras) | |---|---| | Workers / Function Compute | $5 Basis + $12 Überschreitung = $17 | $20 Pro + $57 Überschreitung = $77 | | Datenbank | D1 inklusive = $0 | Supabase Pro $25 + 750 GB Bandbreite-Überschreitung × $0,09 = $92 | | Dateispeicher | R2 200 GB × $0,015 = $3 | Vercel Blob 200 GB × $0,03 + 1 TB Egress × $0,10 = $106 | | KV / Cache | 50M Reads × $0,50/M = $25 | Vercel Edge Cache inklusive = $0 | | E-Mail | Resend Pro 50k Sendungen = $20 | Resend Pro 50k Sendungen = $20 | | Auth | Better Auth Self-Hosted = $0 | Clerk Pro (5k-MAU-Stufe) = $25 | | Observability | Workers Logs inklusive = $0 | Datadog APM (3 Hosts + 50M Spans) = $63 | | Domain | $12/Jahr = $1 | $12/Jahr = $1 | | Gesamt monatlich | ~$73 | ~$411 |
Quellen: Cloudflare Workers – Preise, Cloudflare R2 – Preise, Vercel – Preise, Supabase – Preise, öffentliche Preisübersichten von Stripe + Resend + Clerk + Datadog, Stand Mai 2026.
Woher die Lücke kommt
Drei Posten verursachen den Großteil des Unterschieds:
- File Egress ($3 vs. $106). R2 berechnet $0 für Egress; Vercel Blob berechnet $0,05–$0,10/GB nach den ersten 100 GB. Bei 1 TB/Monat Egress sind das $50–$100. Wenn Ihre SaaS Benutzer-Upload-Bilder, Video-Vorschauen oder PDF-Berichte ausliefert, dominiert dieser Posten allein Ihre Rechnung.
- Funktionsaufruf-Überschreitung ($12 vs. $57). Cloudflare berechnet $0,30 pro Million Worker-Anfragen über 10M inklusive; Vercel berechnet $0,60 pro Million über 30M inklusive. Bei 95M überschüssigen Anfragen/Monat für 500k MAU beträgt die Lücke $28,50/Monat. Workers Cold Start p99 ≈ 280 ms vs. Vercel ≈ 1,4 s in unseren Messungen.
- Datenbankbandbreite ($0 vs. $92). D1 liest von lokalen Replikaten; Bandbreite ist inklusive. Supabase berechnet $0,09/GB für Egress über 250 GB inklusive. Bei 1 TB Egress – üblich für SaaS mit Dashboards, Exports, Reporting – sind das $67/Monat. CRUD-leichte SaaS verkleinern diesen Posten.
Was mich überrascht hat
Ich erwartete, dass Cloudflare beim Preis gewinnt. Ich erwartete nicht, dass die Lücke 5,6× beträgt. Zwei Überraschungen:
- Vercels Funktionsaufrufkosten sind nur halb so hoch, wie ich dachte. Vercel enthält 30M Anfragen in Pro. Wenn Ihre SaaS unter 30M Anfragen/Monat bleibt, ist die Lücke bei diesem Posten null. Die Lücke öffnet sich erst bei Skalierung.
- R2s Null-Egress-Anspruch ist real, kein Marketing. Ich erwartete eine versteckte Egress-Gebühr für regionsübergreifende Replikation oder Signed-URL-Auslieferung. Die gibt es nicht – Cloudflare R2 – Preise bestätigt: Speicher bei $0,015/GB-Monat, Egress $0.
Für die Kostenrechnung auf verschiedenen MAU-Stufen finden Sie weiter unten die Entscheidungsmatrix.
Was „Self-Host eines SaaS-Starter" in 2026 tatsächlich bedeutet
Im Jahr 2020 bedeutete „SaaS selbst hosten" einen DigitalOcean-Droplet mieten, nginx konfigurieren, Postgres-Backups verwalten und per SSH in die Produktion eingreifen, wenn etwas kaputtging. Im Jahr 2026 bedeutet es, auf Cloudflare Workers mit D1, R2, KV und Queues zu deployen – mit einem operativen Aufwand, der mit Vercel vergleichbar ist.
Ein Self-Host-Cloudflare-SaaS-Starter hat sieben Komponenten: Cloudflare Workers (Compute), D1 (SQLite am Edge, 5 GB inklusive), R2 (Null-Egress), KV (Session-Cache), Queues (Hintergrundjobs), Better Auth (Auth) und TanStack Start (Framework).
Die minimale wrangler.toml für die Datenebene:
name = "saas-starter"
compatibility_date = "2026-05-01"
main = "./src/server/index.ts"
[[d1_databases]]
binding = "DB"
database_name = "saas-db"
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
[[r2_buckets]]
binding = "STORAGE"
bucket_name = "saas-assets"
[[kv_namespaces]]
binding = "SESSIONS"
id = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
[[queues.producers]]
binding = "JOBS"
queue = "saas-jobs"
wrangler deploy deployt den gesamten Stack. Kein Docker, kein Kubernetes, kein nginx.
Ein monatlicher Kostenrechner in TypeScript
Übersetzen Sie die Materialliste oben in eine überprüfbare Funktion:
type Stack = {
workersRequestsM: number;
d1StorageGB: number;
r2StorageGB: number;
r2EgressGB: number;
kvReadsM: number;
emailSendsK: number;
};
function monthlySelfHost(s: Stack): number {
const workers = 5 + Math.max(0, s.workersRequestsM - 10) * 0.30;
const d1 = Math.max(0, s.d1StorageGB - 5) * 0.75;
const r2 = s.r2StorageGB * 0.015;
const kv = Math.max(0, s.kvReadsM - 0.1) * 0.50;
const email = s.emailSendsK > 3 ? 20 : 0;
return workers + d1 + r2 + kv + email + 1;
}
function monthlyManaged(s: Stack): number {
const vercel = 20 + Math.max(0, s.workersRequestsM - 30) * 0.60;
const supabase = 25 + Math.max(0, s.r2EgressGB - 250) * 0.09;
const blob = s.r2StorageGB * 0.03 + s.r2EgressGB * 0.10;
const email = s.emailSendsK > 3 ? 20 : 0;
return vercel + supabase + blob + email + 25 + 1;
}
Setzen Sie Ihre echten Zahlen ein; die Funktion zeigt Ihnen, welcher Stack auf Ihrer Skala gewinnt. Für unsere 500k-MAU-Workload gibt sie $73 vs. $411 zurück.
Wann Self-Host gewinnt, wann Managed gewinnt
Die Kostenlücke von 5,6× ist real, aber sie zählt nicht immer. Hier ist die Entscheidungsmatrix nach Workload-Profil.
Indie-Hacker mit wenig Traffic (unter 10k MAU)
Bei 10k MAU beträgt die Lücke $7 vs. $35/Monat – $28/Monat, nicht lebensverändernd. Beide Stacks kosten unter $40/Monat. Deployen Sie auf dem, auf dem Sie schneller vorankommen; wenn Sie Next.js + Vercel kennen, deployen Sie dort. Wenn Sie neu starten und Typsicherheit schätzen, deployen Sie auf TanStack Start + Cloudflare.
Bootstrap-SaaS mit wachsendem Traffic (10k–100k MAU)
Bei 100k MAU weitet sich die Lücke auf ca. $22 vs. $98/Monat aus – $912/Jahr, genug für einen Hosting-Service, ein E-Mail-Tool oder einen Teilzeit-Entwickler. Self-Host Cloudflare amortisiert die Lernkurve in 6–9 Monaten.
Finanziierter Startup bei 500k+ MAU
Hier wird die Lücke relevant. $73 vs. $411 sind $4.056/Jahr. Bei 1M MAU verdoppelt sich die Lücke ungefähr auf ~$150 vs. ~$820. Die Amortisation der höheren Lernkurve des Self-Host-Stacks (~2 Wochen zusätzliche Einrichtung vs. Next.js) liegt unter 3 Monaten.
Enterprise-SaaS mit Compliance-Anforderungen
Kein Stack ist sofort Compliance-fertig. Supabase hat SOC 2 Type II; Cloudflare hat SOC 2 Type II, HIPAA, ISO 27001. Die Compliance-Arbeit liegt bei Ihnen, unabhängig davon. Self-Host Cloudflare gibt Ihnen mehr Kontrolle über Datenhaltung; Managed Vercel + Supabase ist standardmäßig Multi-Region, aber Data-Residency-Pinning ist schwieriger.
Entscheidungsmatrix
Wählen Sie Self-Host Cloudflare, wenn Sie neu starten und bereit sind, TanStack Start zu lernen, Ihre SaaS Benutzer-Upload-Dateien ausliefert (R2 Null-Egress spart $50–$200/Monat), Sie bei 50k+ MAU liegen, Sie einen Anbieter / eine Rechnung / ein Dashboard bevorzugen oder Sie Typsicherheit als Feature schätzen.
Wählen Sie Managed Vercel + Supabase, wenn Ihr Team tiefe Next.js + Vercel + Supabase-Expertise hat, Sie managed Postgres brauchen (PostGIS, pgvector, Realtime), Sie unter 50k MAU liegen und DX > Kosten gilt oder Sie am Wochenende deployen wollen, anstatt zwei Wochen in Stack-Setup zu investieren.
Für den TanStack Stack, der für Solo-SaaS vorkonfiguriert ist, finden Sie unter TanStack Ships Features und Preisstufen.
Wann Sie NICHT von einem Managed Stack wechseln sollten
Wenn Sie bereits auf Vercel + Supabase + Clerk + Resend laufen, rechtfertigen die monatlichen Einsparungen von $338 keine Stack-Migration, es sei denn, Sie sind bei Skalierung. Migrationskosten: 3–5 Tage für Auth, 1–2 Tage für Datei-Uploads, 1–2 Tage für Cron-Jobs, 3–7 Tage für Middleware. Insgesamt 8–16 Tage Entwicklungsarbeit. Bei einem Tagessatz von $500 für einen Solo-Entwickler sind das $4.000–$8.000 an Opportunitätskosten. Die Amortisation allein durch Kosteneinsparungen liegt bei 12–24 Monaten. Wechseln Sie nur aus strategischen Gründen – Typsicherheit, Edge-Performance, Vermeidung von Vendor Lock-in oder Stückkosten bei Skalierung.
Häufig gestellte Fragen
Was ist ein „Self-Host-SaaS-Starter" in 2026?
Ein SaaS-Boilerplate, der auf Cloudflares Edge-Plattform läuft (Workers, D1, R2, KV, Queues) mit Open-Source-Auth (Better Auth) und einem typsicheren React-Framework (TanStack Start). Deployen mit wrangler deploy. „Self-Host" bedeutet, dass Sie den Code und die Datenebene besitzen, nicht dass Sie eigene Server betreiben.
Was kostet Self-Hosting einer SaaS wirklich?
In unseren Messungen: ~$22/Monat bei 100k MAU, ~$73/Monat bei 500k MAU, ~$150/Monat bei 1M MAU. Die Kosten skalieren sublinear wegen kostenloser Stufen und Null-Egress-Speicher. Bei 500k MAU ist die Rechnung 5,6× niedriger als bei Managed Vercel + Supabase ($73 vs. $411).
Ist Cloudflare günstiger als Vercel für SaaS, und kann ich migrieren?
Für SaaS mit Benutzer-Upload-Dateien, globalem Publikum und 50k+ MAU – ja, 4–6× günstiger. Unter 10k MAU ohne dateilastige Workloads liegt die Lücke unter $30/Monat. Für SaaS mit Postgres-spezifischen Tools (PostGIS, pgvector) ist Vercel + Supabase besser. Die Migration zu Cloudflare Workers dauert 8–16 Tage; die größten Umstellungen sind Auth (Clerk → Better Auth), Dateispeicher (Vercel Blob → R2), Routing (Next.js → TanStack Start); der riskanteste Teil ist die Datenbank – D1 ist SQLite, nicht Postgres.
Was ist mit AWS, und liefert TanStack Ship das?
AWS ist bei hoher Skalierung kostentechnisch vergleichbar, aber mit deutlich schlechterem DX (Lambda Cold Starts 250–800 ms vs. Workers 5–50 ms; CloudWatch, KMS, IAM kosten extra). Wählen Sie AWS nur, wenn Sie RDS oder ElastiCache brauchen. TanStack Ship liefert den Self-Host-Cloudflare-Stack – TanStack Start + Cloudflare Workers mit Better Auth, Stripe, R2, KV, D1, Queues und 14 Produktionsmodulen. Siehe Features und Preisstufen.
Testen Sie TanStack Ship als Ihren Self-Host-SaaS-Starter. Klonen Sie den kostenlosen Starter, deployen Sie dieselbe Stripe-Billing-Spezifikation, und messen Sie den Kostenunterschied selbst. Jetzt starten →