EmDash CMS – Produktions-Playbook für Cloudflare Free Tier
EmDash im Cloudflare-Tarif „Free“ deployen – mit zuverlässigem Ablauf, klaren Funktionsgrenzen und praktischer Rollback-Anleitung.
Kurzfassung
Sie können EmDash im Produktionsbetrieb im Cloudflare-Tarif „Free“ für zentrale CMS-Workflows betreiben.
Was Sie akzeptieren müssen: Die Ausführung von Plugins in der Sandbox ist nicht verfügbar; daher muss worker_loaders aus der Konfiguration entfernt werden.
Diese Anleitung priorisiert Stabilität vor maximaler Feature-Oberfläche.
Funktionsgrenzen im Free-Tarif
Verfügbar
- EmDash-Kernsite und Admin-Flows
- D1-gestützte Content-Daten
- R2-gestützte Medienspeicherung (innerhalb der kostenlosen Nutzung)
- Workers-Deployment und Routing
Nicht verfügbar
- dynamische Workers für sandboxed Plugins
- Marketplace-ähnliche Ausführung nicht vertrauenswürdiger Laufzeitumgebungen
Wenn Ihr Launch von der Ausführung Drittanbieter-Plugins in der Sandbox abhängt, reicht der Free-Tarif nicht aus.
Checkliste vor dem Deployment
Erledigen Sie alle Punkte, bevor Sie Deploy-Befehle ausführen:
- Wrangler ist authentifiziert (
wrangler loginbereits durchgeführt) - das Projekt baut lokal ohne nur-in-der-Cloud-Annahmen
wrangler.jsonchat D1- und R2-Bindings, die zur Laufzeitkonfiguration passenworker_loaders-Eintrag ist für den Free-Tarif entfernt- Paketmanager ist konsistent (
npmoderpnpm, kein Mix)
Reihenfolge der Ressourcenbereitstellung
Stellen Sie Ressourcen in genau dieser Reihenfolge bereit, um Binding-Wechsel zu reduzieren:
- D1-Datenbank anlegen
- R2 aktivieren oder anlegen und dann Bucket erstellen
wrangler.jsoncmit exakten Namen und IDs aktualisieren- Worker bauen und deployen
Grund: D1-ID und Bucket-Namen werden zur Quelle der Wahrheit für Umgebungs-Bindings.
# Zuerst D1 bereitstellen
npx wrangler d1 create your-db-name
# Dann R2-Bucket
npx wrangler r2 bucket create your-media-bucket
Minimale wrangler.jsonc-Form für den Free-Tarif
Das folgende Gerüst ist bewusst schlank:
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "your-site-name",
"main": "./src/worker.ts",
"compatibility_date": "2026-04-08",
"compatibility_flags": ["nodejs_compat"],
"d1_databases": [
{
"binding": "DB",
"database_name": "your-db-name",
"database_id": "replace-with-d1-id"
}
],
"r2_buckets": [
{
"binding": "MEDIA",
"bucket_name": "your-media-bucket"
}
]
}
Im Free-Tarif kein Abschnitt worker_loaders.
Build- und Deploy-Ablauf
Führen Sie die Befehle aus dem EmDash-Projektroot aus:
# einen Paketmanager wählen und dabei bleiben
npm run build
npm run deploy
Wenn Ihr Projekt auf pnpm basiert:
pnpm build
pnpm deploy
Vermeiden Sie npm und pnpm in derselben Deploy-Session zu mischen, außer Lockfiles sind bewusst synchronisiert.
Checkliste nach dem Deployment
Prüfen Sie in dieser Reihenfolge:
- Frontend-URL löst auf und liefert erwartete Inhalte
- Admin-URL (
/_emdash/admin) ist erreichbar - erstes Admin-Setup schließt erfolgreich ab
- ein Testeintrag erstellen und veröffentlichen
- eine Mediendatei hochladen und Abruf prüfen
Ein Deployment ist erst abgeschlossen, wenn Schreibpfade verifiziert sind – nicht nur Routen erreichbar sind.
Häufige Fehler und schnellste Fixes
Fehler: Deployment ok, Admin initialisiert nicht
Wahrscheinliche Ursache: Binding passt nicht zwischen Laufzeit-Integration und wrangler.jsonc.
Vorgehen:
- Binding-Namen (
DB,MEDIA) überall identisch prüfen - nach Korrektur neu deployen
- Admin-Initialisierung erneut versuchen
Fehler: R2-Befehl durch Account-Hinweis blockiert
Wahrscheinliche Ursache: R2 im Dashboard noch nicht aktiviert.
Vorgehen:
- R2 im Cloudflare-Dashboard aktivieren
- Abrechnungsbedingungen akzeptieren (kostenlose Nutzung gilt weiter)
- Bucket-Befehl erneut ausführen
Fehler: Plugin-bezogener Laufzeitfehler im Free-Tarif
Wahrscheinliche Ursache: verbliebene Sandbox-Konfiguration.
Vorgehen:
worker_loadersentfernen- sandbox-spezifisches Plugin-Setup deaktivieren
- neu deployen und erneut testen
Rollback-Strategie
Konservative Rollback-Politik:
- letzten als gut bekannten Deploy-Commit taggen
- bei Produktionsregression vorherigen getaggten Commit erneut deployen
- Schema- oder Plugin-Änderungen verschieben, bis der Traffic stabil ist
Operativ schlägt schnelles Rollback tiefe Hotfixes in Incident-Fenstern.
Wann von Free auf Paid upgraden
Upgraden Sie nur, wenn eines zutrifft:
- Sie brauchen sandboxed Ausführung nicht vertrauenswürdiger Plugins
- Traffic oder Speicher überschreiten regelmäßig die Free-Limits
- Governance verlangt stärkere Plugin-Laufzeit-Isolation
Upgraden Sie nicht wegen unklarer UI-Formulierungen in Abrechnungsbildschirmen. Upgraden Sie nur bei konkreten Funktionsanforderungen.