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 login bereits durchgeführt)
  • das Projekt baut lokal ohne nur-in-der-Cloud-Annahmen
  • wrangler.jsonc hat D1- und R2-Bindings, die zur Laufzeitkonfiguration passen
  • worker_loaders-Eintrag ist für den Free-Tarif entfernt
  • Paketmanager ist konsistent (npm oder pnpm, kein Mix)

Reihenfolge der Ressourcenbereitstellung

Stellen Sie Ressourcen in genau dieser Reihenfolge bereit, um Binding-Wechsel zu reduzieren:

  1. D1-Datenbank anlegen
  2. R2 aktivieren oder anlegen und dann Bucket erstellen
  3. wrangler.jsonc mit exakten Namen und IDs aktualisieren
  4. 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:

  1. Frontend-URL löst auf und liefert erwartete Inhalte
  2. Admin-URL (/_emdash/admin) ist erreichbar
  3. erstes Admin-Setup schließt erfolgreich ab
  4. ein Testeintrag erstellen und veröffentlichen
  5. 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:

  1. Binding-Namen (DB, MEDIA) überall identisch prüfen
  2. nach Korrektur neu deployen
  3. Admin-Initialisierung erneut versuchen

Fehler: R2-Befehl durch Account-Hinweis blockiert

Wahrscheinliche Ursache: R2 im Dashboard noch nicht aktiviert.

Vorgehen:

  1. R2 im Cloudflare-Dashboard aktivieren
  2. Abrechnungsbedingungen akzeptieren (kostenlose Nutzung gilt weiter)
  3. Bucket-Befehl erneut ausführen

Fehler: Plugin-bezogener Laufzeitfehler im Free-Tarif

Wahrscheinliche Ursache: verbliebene Sandbox-Konfiguration.

Vorgehen:

  1. worker_loaders entfernen
  2. sandbox-spezifisches Plugin-Setup deaktivieren
  3. 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.