Suche

↑↓ auswählenEnter öffnenErweiterte Suche

Einstieg

Neu bei EmDash: So startest du mit dem CMS von Cloudflare

Ich habe eine EmDash-Site so aufgesetzt, wie es jemand zum ersten Mal tut: lokal anlegen, einrichten, ersten Beitrag veröffentlichen und auf Cloudflare online stellen. Hier ist der Weg mit gemessenen Zeiten, und die Stellen, an denen du hängen bleiben kannst.

Von Aktualisiert am 9 Min. Lesezeitgeprüft mit 1.1 · aktuell 1.2

Getestet mit EmDash 1.1.0, Astro 7.3.5 und Node.js 22. Überarbeitet für EmDash 1.2.0 am 7. Oktober 2026. Was sich geändert hat, steht am Ende des Artikels.

EmDash ist ein Open-Source-CMS, das Cloudflare im April 2026 vorgestellt hat und das seit Ende September als Version 1.0 stabil ist. Es baut auf dem Web-Framework Astro auf, läuft am liebsten auf Cloudflare Workers, aber auch auf einem normalen Node.js-Server, und kann Inhalte aus WordPress importieren. Wer „EmDash“ googelt, landet übrigens meist beim Geviertstrich, dem langen Gedankenstrich der Typografie. Gemeint ist hier das CMS.

Ich arbeite seit April an EmDash mit und betreibe mit Daniel diese Site darauf. Für diesen Artikel habe ich trotzdem bei null angefangen: neuer Ordner, offizielle Vorlage, alles so, wie es jemand zum ersten Mal macht. Am Ende lief die Site auf Cloudflare. Unterwegs habe ich die Zeiten gemessen und notiert, wo man hängen bleiben kann.

Was bei EmDash anders ist als bei WordPress

Wenn du von WordPress kommst, hilft es, fünf Dinge vorher zu wissen. Sie erklären fast alles, was dich später überrascht.

Inhalte sind Daten, kein HTML. Der Editor speichert Texte als Portable Text, ein strukturiertes JSON-Format. Erst die Vorlage macht daraus HTML. Darum kann derselbe Inhalt auf der Website, in einem Newsletter oder in einer App anders aussehen, ohne dass jemand HTML aufräumen muss.

Inhaltstypen und Felder sind eingebaut. Was bei WordPress ein Custom Post Type mit ACF-Feldern ist, heisst bei EmDash Collection oder im deutschen Admin „Inhaltstyp“. Du legst ihn im Admin an, mit Feldern wie Text, Bild, Datum oder Verweis auf andere Einträge. Ein Plugin brauchst du dafür nicht.

Das Theme ist Code in deinem Projekt. Es gibt keinen Theme-Ordner, in den man etwas hochlädt. Das Aussehen der Site sind Astro-Dateien in deinem Projekt, und Seiten wie /posts/[slug] sind Dateien in src/pages/. Wer das Design ändern will, ändert Code und stellt ihn neu online.

Plugins gibt es in zwei Sorten. Plugins aus der Sandbox laufen abgeschottet und lassen sich mit einem Klick installieren. Native Plugins laufen mit vollen Rechten und kommen über npm, mit einem neuen Deployment pro Installation. Was die Sandbox schützt und was nicht, habe ich im Artikel zur Plugin-Sandbox gemessen.

Updates sind ein Deployment. Der Admin zeigt an, wenn eine neue Version da ist, aber es gibt keinen Knopf dafür. Du aktualisierst die Pakete im Projekt und stellst die Site neu online. Dafür bringt ein Update nur Code, die Inhalte bleiben in der Datenbank. Wie das Schritt für Schritt geht, steht in EmDash aktualisieren.

Was du brauchst

  • Node.js 22.16 oder neuer. node --version im Terminal zeigt dir, was installiert ist.
  • Ein Terminal und etwas Mut zur Kommandozeile. Mehr als ein paar Befehle sind es nicht.
  • Für das Online-Stellen ein Cloudflare-Konto. Für die ersten Schritte lokal brauchst du keines.
  • Einen Browser, der Passkeys kann. Das können alle aktuellen Browser.

Schritt 1: Projekt anlegen

Das Projekt legst du mit dem offiziellen Assistenten an:

npm create emdash@latest

Er fragt nach dem Namen des Projekts, dem Ziel (Cloudflare oder Node.js), der Vorlage und dem Paketmanager. Ich habe Cloudflare und die Blog-Vorlage gewählt, weil das der Weg ist, auf dem auch diese Site läuft. Wer die Fragen überspringen will, gibt alles direkt mit:

npm create emdash@latest mein-blog -- --template cloudflare:blog --pm npm --install --yes

Bei mir dauerte das inklusive Installation 91 Sekunden. npm hat 709 Pakete installiert und keine bekannten Sicherheitslücken gemeldet. Der Assistent legt ausserdem einen Schlüssel in der Datei .env an. Den brauchst du später für Plugin-Einstellungen, die verschlüsselt gespeichert werden. Die Datei gehört nicht ins Git-Repository, sichere den Schlüssel aber an einem anderen Ort.

Es gibt fünf Vorlagen: leer, Starter, Blog, Portfolio und Marketing, die vier letzten jeweils für Cloudflare und für Node.js. Die offizielle Einstiegsanleitung nimmt den Starter auf Node.js mit einer SQLite-Datenbank. Das geht ohne Cloud-Konto und ist ein guter Weg, wenn du nur schauen willst.

Schritt 2: Lokal starten

cd mein-blog
npm run dev

Nach gut acht Sekunden war der Server bereit. Er läuft normalerweise auf http://localhost:4321. Ist der Port schon belegt, nimmt Astro den nächsten und schreibt die Adresse ins Terminal. Der erste Aufruf dauerte bei mir gut fünf Sekunden, weil EmDash dabei die lokale Datenbank anlegt. Danach geht es schnell.

Die lokale Datenbank ist dieselbe Art wie auf Cloudflare, nur auf deinem Rechner. Du brauchst also nichts zusätzlich zu installieren.

Schritt 3: Den Admin einrichten

Öffne http://localhost:4321/_emdash/admin. Eine neue Site leitet dich zum Einrichtungs-Assistenten. Er hat drei Schritte: die Website mit Titel und Slogan, dein Benutzerkonto mit E-Mail und Namen, und zum Schluss einen Passkey.

Der erste Schritt des Einrichtungs-Assistenten von EmDash mit den Feldern Website-Titel und Slogan. Darunter die Wahl, mit den Beispielinhalten der Vorlage, mit einer leeren Website oder mit dem Import einer anderen EmDash-Website zu starten.
Der erste Schritt. Die Beispielinhalte sind vorgewählt und für den Anfang sinnvoll.

Passwörter gibt es in EmDash nicht. Du meldest dich mit einem Passkey an, also mit Fingerabdruck, Gesicht oder der PIN deines Geräts. Später kann man auch Anmeldelinks per E-Mail oder einen Login über GitHub, Google oder Microsoft einrichten. Die Links per E-Mail brauchen dafür ein Plugin, das E-Mails verschickt.

Zwei Dinge sind mir dabei aufgefallen, die die offizielle Anleitung nicht erwähnt:

  • Nach der Einrichtung musst du dich einmal anmelden. „Dashboard öffnen“ führt auf die Anmeldeseite, nicht ins Dashboard. Ein Klick auf „Mit Passkey anmelden“ mit dem gerade angelegten Passkey, und du bist drin.
  • Der Website-Titel aus dem Assistenten kam in 1.1.0 nicht an. Ich hatte „Mein Blog“ eingegeben, die Site hiess danach trotzdem „My Blog“ wie in der Vorlage, und der Slogan war der aus der Vorlage. Daniel hat den Fehler behoben, seit EmDash 1.2.0 kommen Titel und Slogan an (#3749). Auf einer älteren Version änderst du beides nach der Einrichtung unter Einstellungen.
Das Dashboard von EmDash nach der Einrichtung. Links die Navigation mit Inhalt, Verwalten und Admin, rechts Zähler für Entwürfe, Mediendateien und Benutzer und eine Liste der Beispielbeiträge der Vorlage.
Das Dashboard mit den Beispielinhalten der Blog-Vorlage: acht Beiträge, eine Seite und sieben Bilder.

Schritt 4: Inhaltstypen verstehen

Bevor du schreibst, lohnt ein Blick unter Admin auf „Inhaltstypen“. Die Blog-Vorlage bringt zwei mit: Pages und Posts. Daneben steht, was ein Typ kann, zum Beispiel Entwürfe, Revisionen, Vorschau, Suche, SEO und bei Beiträgen die zeitgesteuerte Veröffentlichung.

Die Seite Inhaltstypen im EmDash-Admin mit den beiden Typen Pages und Posts und ihren Funktionen wie drafts, revisions, preview, scheduling, search und seo. Oben rechts die Knöpfe Beziehungen und Neuer Inhaltstyp.
Hier entstehen eigene Inhaltstypen wie Referenzen, Team oder Veranstaltungen.

Über „Neuer Inhaltstyp“ legst du eigene an, etwa Referenzen mit Kunde, Logo und Kennzahlen. In den Einstellungen eines Typs bestimmst du auch das URL-Muster, zum Beispiel /blog/{slug} oder Permalinks im WordPress-Stil mit Jahr und Monat. Damit eine neue Sammlung auch auf der Website erscheint, braucht sie allerdings eine Seite in der Vorlage. Das ist der Teil, bei dem Code ins Spiel kommt. Wie das vom Admin bis auf die Website aussieht, zeigt Daniel in Dein erster eigener Inhaltstyp.

Schritt 5: Den ersten Beitrag veröffentlichen

Unter Posts startest du mit „Neu hinzufügen“ einen Beitrag. Titel, Inhalt, optional ein Bild (in der Vorlage heisst das Feld „Featured Image“) und ein Auszug. Den Slug für die URL schlägt EmDash aus dem Titel vor, aus „Mein erster Beitrag“ wird mein-erster-beitrag.

Der Editor für einen neuen Beitrag im EmDash-Admin. Links Titel, Featured Image und der Inhalt mit einer Werkzeugleiste für Fett, Überschriften, Listen, Zitate, Code, Bilder und Tabellen. Rechts der Knopf Speichern und der Bereich URL und Sprache mit dem Slug mein-erster-beitrag.
Der Editor. Rechts der vorgeschlagene Slug und die Inhaltssprache.

Speichern legt einen Entwurf an, den auf der Website noch niemand sieht. Erst „Jetzt veröffentlichen“ macht ihn sichtbar, nach einer kurzen Rückfrage. Danach stand der Beitrag auf der Startseite und unter /posts/mein-erster-beitrag.

Der veröffentlichte Beitrag „Mein erster Beitrag“ auf der Website der Blog-Vorlage mit dem Site-Titel My Blog, mit Veröffentlichungsdatum, Lesezeit, dem Text, einem Kommentarformular und einer Seitenleiste mit Suche, Kategorien und neuen Beiträgen.
Der Beitrag auf der Website. Oben links steht „My Blog“, obwohl ich im Assistenten „Mein Blog“ eingegeben hatte.

Die Vorlage ist englisch. Die Inhaltssprache steht auf Englisch, und die Website zeigt Texte wie „No comments yet“, auch wenn dein Admin deutsch ist. Für eine deutsche oder zweisprachige Site passt du die Vorlage und die Spracheinstellungen in Astro an. Das ist ein eigenes Thema, diese Site hier ist so gebaut.

Schritt 6: Auf Cloudflare online stellen

Für das Online-Stellen meldest du dich einmal mit Wrangler bei Cloudflare an, dem Kommandozeilen-Werkzeug von Cloudflare:

npx wrangler login

Dann genügt ein Befehl, den die Vorlage schon mitbringt:

npm run deploy

Er baut die Site und lädt sie hoch. Beim ersten Mal legt Wrangler die Datenbank (D1), den Speicher für Medien (R2) und einen Speicher für Sitzungen (KV) selbst an, mit den Namen aus wrangler.jsonc. Bei mir dauerte das insgesamt 2 Minuten 37 Sekunden, den grössten Teil davon das Hochladen. Danach läuft die Site unter einer Adresse wie https://mein-blog.dein-name.workers.dev.

Drei Dinge sollte man dabei wissen:

  • Die erste Minute antwortet die Site mit „nicht gefunden“. Direkt nach dem Deployment kam bei mir eine Minute lang eine 404-Seite, danach lief alles. Nicht nervös werden, kurz warten.
  • Die Einrichtung gehört auf die endgültige Adresse. Ein Passkey gilt nur für die Adresse, auf der er angelegt wurde. Wenn die Site unter deiner eigenen Domain laufen soll, hänge die Domain zuerst an und richte die Site erst dann ein. Sonst funktioniert der Passkey auf der neuen Domain nicht. Wie das geht, steht in der Doku zu Cloudflare. Seit EmDash 1.2.0 hilft dir unter Einstellungen → Allgemein zwar der Dialog „Domain ändern“ bei einem späteren Umzug, und wer angemeldet ist, kommt ohne E-Mail auf die neue Adresse. Einfacher bleibt es aber, gleich auf der richtigen Adresse anzufangen.
  • Die lokale Datenbank wandert nicht mit. Die Site auf Cloudflare startet leer und führt dich wieder durch den Einrichtungs-Assistenten. Was du lokal geschrieben hast, ist nur lokal.

Die fertige Site antwortete bei mir, gemessen aus Zürich, in rund 300 Millisekunden bis zum ersten Byte. Danach habe ich sie samt Datenbank und Speicher wieder gelöscht.

Was kostet das?

Lokal kostet EmDash nichts. Auf Cloudflare kommt die Blog-Vorlage ohne Plugin-Sandbox mit dem kostenlosen Workers-Plan aus, so steht es in der Doku zur Sandbox. Der Gratis-Plan hat aber Grenzen: 100'000 Anfragen pro Tag, 10 Millisekunden Rechenzeit pro Anfrage, fünf Cron-Trigger pro Konto und D1-Datenbanken bis 500 MB (Workers-Limits, D1-Limits). Ob jede EmDash-Seite in 10 Millisekunden Rechenzeit passt, habe ich nicht gemessen, mein Testkonto ist ein bezahltes.

Der bezahlte Plan kostet ab 5 Dollar im Monat pro Cloudflare-Konto, nicht pro Site (Preise). Er hebt diese Grenzen an und schaltet die Plugin-Sandbox frei. Für eine Site, die Kunden oder Leser haben soll, würde ich ihn nehmen.

Wohin als Nächstes

  • Du kommst von WordPress? Daniel zeigt in Für WordPress-Umsteiger, wo du in EmDash findest, was du aus WordPress kennst.
  • Du betreust WordPress-Sites für Kunden? Mein Leitfaden für Agenturen vergleicht EmDash und WordPress bei Kosten, Updates, Plugins und Migration.
  • Du willst eine WordPress-Site mit ACF-Feldern umziehen? Im Artikel zum ACF-Import zeige ich, wie Repeater, Bilder und Verweise sauber ankommen.
  • Du willst Plugins schreiben oder installieren? Der Artikel zur Plugin-Sandbox zeigt, was die Sandbox sperrt und wo ihre Grenzen liegen.
  • Deine Site ist online? Dann lies, wie du sie mit Backups absicherst und sicher aktualisierst.
  • Du willst tiefer in die Technik? Die offizielle Doku erklärt Abfragen, Felder und das Deployment im Detail.

Wenn du beim Einstieg an einer Stelle hängen bleibst, die hier fehlt, schreib es in die Kommentare. Ich ergänze den Artikel.

Änderungen an diesem Artikel

  • : Für 1.2.0 überarbeitet: Der Fehler beim Website-Titel ist behoben, und für einen späteren Domainwechsel gibt es einen eigenen Dialog.

Über den Autor

Kevin Kyburz

Kevin Kyburz

Seit 20 Jahren im Netz und noch immer nicht fertig damit. Kevin Kyburz führt die Webagentur this:matters, baut Websites mit WordPress und EmDash und arbeitet als Maintainer an EmDash mit. Als Schweizer schreibt er „gross“ statt „groß“, und zwar mit Absicht.

Kommentare

No comments yet

Erstkommentare erscheinen nach unserer Freigabe. Was mit deinen Angaben passiert