EmDashへの移行更新日
#EmDashはCloudflare以外のサーバーでも動きますか?
Node.jsが動くサーバーであれば、Cloudflare以外でも動きます。PHP専用のレンタルサーバーでは動きませんが、Node.js対応の仮想マシンやクラウド環境なら導入が可能です。WordPressから乗り換える人は、今のサーバーでNode.jsが使えるかを先に確かめてください。
必要なNode.jsの版はNode.js向けの導入ガイドに載っていて、v22.22.0以上です。Astro 7.3以前を使う場合だけはv22.16.0でも足ります。データベースにSQLiteを選ぶなら、再起動してもデータが消えない永続ディスクを用意しておきましょう。
また、Cloudflare環境ではD1を使いますが、一般的なサーバーであればSQLite、Turso/libSQL、PostgreSQLから選べますね。画像やバックアップなどのファイル保存先についても、ローカルのファイルシステムだけでなく、AWS S3や各種S3互換ストレージを接続できます。
プラグインのうち、ほかと切り離して動かす隔離型のものも、Node.jsで使えます。Cloudflare上ではDynamic Workerを使いますが、Node.js環境ではworkerdの子プロセスとして実行する仕組みです。この実行には専用パッケージの導入が必要になります。
新しくサイトを作るときは、npm create emdash@latestから始めます。このコマンドで始まるのはサイトの作成までなので、本番公開にはこのあとサーバー側の準備が必要です。
#EmDashはCloudflareのD1・R2・Workersをどう使っていますか?
D1、R2、Workersと名前が三つ並ぶと、どれが何をしているのか分かりにくいですよね。役割は単純で、Workersがサイトを動かし、D1が記事などのデータを保存し、R2が画像などのメディアを保存します。設定ファイル上では、D1の接続名が「DB」、R2の接続名が「MEDIA」として指定されます。
運用面で注意したいのが予約公開の設定ですね。Cloudflare上で指定日時に記事を自動公開するには、Cron TriggerとWorker側のscheduledハンドラーの両方が揃っていなければなりません。どちらか一方でも設定が抜けていると、予定時刻になっても記事は公開されないままになります。手元で予約公開がうまくいっても、本番の設定がそろっている証拠にはなりませんね。
ところで、既定のautoモードでは、デプロイ後に最初のアクセスが来た時点で、まだ適用されていない基本の移行処理が走ります。ただし、記事データなどの大規模な移行については、手動でemdash migrateを実行するまで反映されず、その間は503エラーが返される仕様です。
もう一つ見落としやすいのが、バックアップの置き場所です。EmDashでは自動JSONバックアップがメディアと同じバケット内のbackups/という場所に保存されます。R2バケットを公開設定にするなら、ストレージの説明のとおり、この部分を公開対象から外してください。
なお、ステージングなどのプレビュー環境を作る場合は、本番用のD1データベースやR2バケットとは完全に分けた専用の保存領域を用意します。本番のものをプレビューにつなぐのは避けてください。
#EmDashをCloudflareの無料枠や有料プランで動かすには?
隔離型のプラグインを使わなければ、Workersの無料プランで動かせます。初期作成時のテンプレートではWorker Loaderの設定がコメントアウトされているため、追加の隔離設定を有効にしなければ無料枠の範囲で稼働します。ただし、これはWorkersの話で、サービス全体の費用が必ずゼロになるという意味ではありません。
一方、隔離型プラグインを使いたいなら、話は変わります。この仕組みはDynamic Workersの上で動いていて、Dynamic Workersの料金案内にあるとおり、Workers Paidプランでしか使えません。marketplace、registry、sandboxedのどれも使わないサイトなら、設定からsandboxRunnerとLOADERバインディングを外せます。導入例にはLOADERが入っているので、無料プランで運用するときは設定ファイルを一度見直しておきましょう。
デプロイの流れは次のとおりです。
- テンプレートと依存パッケージを用意する
- pnpm wrangler loginでCloudflareにログインする
- wrangler.jsoncのD1とR2の設定を確認する
- pnpm buildを実行する
- pnpm wrangler deployを実行する
まだ作っていないD1やR2は、最初のデプロイのときにWranglerが作成します。
本番公開が完了した後は、通常の公開ページが見えるか、管理画面のURLである /_emdash/admin にログインできるかを確かめます。テスト用の画像はアップロードするだけでなく、取り出せるところまで見てください。定期実行の処理は、pnpm wrangler tailでログを追えば動いているかが分かります。
#EmDashはCloudflareへのロックインが心配ではないですか?
Cloudflareから離れる道は、ちゃんと用意されています。ソースコード全体がMITライセンスのもとで公開されているオープンソースソフトウェアだからです。Node.js環境を選べば、PostgreSQLを組み合わせて完全に自前のインフラで運用可能です。PostgreSQLに接続する場合は、EmDash側のpostgresアダプターを指定し、依存関係にpgパッケージを追加して接続文字列を記述します。
さらに、プラグインの隔離も、Cloudflareだけの機能ではありません。Cloudflare上ではDynamic Worker Loadersを利用しますが、Node.js環境であればオープンソースのランタイムであるworkerdの子プロセスとしてサンドボックスを起動します。
一方で、懸念の声もあります。WordPressの共同創設者であるMatt Mullenweg氏は、EmDashへの意見を公開し、EmDashはCloudflareのサービスをもっと売るために作られたという見方を示しました。開発元がクラウド事業者である以上、そう感じる人がいるのは自然なことでしょう。
気をつけたいのは、対応しているデータベースがあることと、D1に入れたデータをそのまま移せることは別の話だという点です。Cloudflareで始める場合も、いつか移す可能性があるなら、その作業は自分で見込んでおく必要があります。
#EmDashの導入事例にはどんなものがありますか?
導入事例として分かりやすいのは、開発元であるCloudflare自身です。同社は2026年8月に、自社の公式ブログを従来のCMSからEmDashへと全面的に移行しました。
Cloudflareブログの移行報告では、移行前の検証として、毎秒7,000リクエストをいきなり送り込む負荷試験をしています。本番環境へ移行した後の初期実績としても、最大で毎秒850リクエストを処理しながら、エラーの減少と高速な応答を維持できたと報告されました。7,000 RPSはあくまで試験でかけた負荷で、移行後の実績とは分けて読んでください。また、この数字はCloudflare上での結果なので、Node.jsサーバーで動かした場合にも同じ性能が出るとは限りませんね。
こんな聞き方も
- emdash cloudflare
- cloudflare の emdash
- emdash by cloudflare
- what is emdash cloudflare
- cloudflare emdash hosting
- em dash cloudflare cost
- emdash cloudflare reddit
- EmDashはCloudflareに依存しないと使えないのですか?
- EmDashは本当にCloudflareが開発しているのですか?
- EmDashはCloudflareへのロックインが心配ではないですか?
- EmDashはCloudflare以外のNode.js環境でセルフホストできますか?
- EmDashはCloudflareのD1・R2・Workersをどう使っていますか?
- EmDashを本番で動かすにはCloudflare Workersの有料プランが必要ですか?
- EmDashをCloudflareの無料枠で運用できますか?
- EmDashをCloudflareにワンクリックでデプロイする方法は?
- Cloudflare公式ブログがEmDashへ移った事例では、どのくらいのアクセスに耐えましたか?
あわせて知りたい(関連する疑問)
QEmDashは本当にCloudflareが開発しているのですか?
GitHubでソースコードを探すと、置き場所がcloudflareではなくemdash-cmsという名前のアカウントなので、本当にCloudflareのものなのか戸惑う人もいるでしょう。プロジェクトの全ソースコードはGitHub上の公式リポジトリ(emdash-cms/emdash)で公開されており、世界中の開発者がコードの更新履歴や改善内容を直接確認できます。
開発しているのはCloudflareです。EmDashは、CloudflareがAstroを土台に作っているオープンソースのCMSで、公式サイトでもそう紹介されています。節目となるEmDash 1.0の正式リリースも、Cloudflareの公式ブログ上で発表されました。
ただ、Cloudflareが作っていることと、Cloudflareで動かさなければならないことは別の話です。EmDashはCloudflareのD1・R2・Workersで動かせるほか、SQLiteを使うNode.jsサーバーでも動きます。開発元がCloudflareだから使えない、と考える必要はありません。
QCloudflare Birthday WeekでEmDash 1.0と一緒に発表されたものは?
2026年9月28日のCloudflare Birthday Weekで、EmDash 1.0と一緒に発表されたのは、AT Protocolの上に作られた分散型のプラグインレジストリです。EmDash 1.0とレジストリの発表と同時に、plugins.emdashcms.comで公開されました。
このレジストリで提供されるサンドボックス型プラグインは、動作に必要な権限や通信先ホストを事前にマニフェストで宣言する仕組みを採用しています。管理者はインストール画面で検証状態や要求された権限を入念に確認した上で承認でき、実行時にもその範囲内だけに動作が制限されます。WordPressのプラグインで不安になりがちな「何をされるか分からない」という点に、仕組みで答えようとしているわけですね。
このプラグイン隔離の仕組みはCloudflare上だけでなく、Node.js環境でもworkerdを別プロセスで立ち上げることで利用できます。ただし、実行環境によって設定や制限は違います。
レジストリから入れる流れは次のとおりです。
- ストレージとサンドボックスの実行環境を設定する
- 管理画面のRegistryで入れたいプラグインを選ぶ
- 確認画面で検証状態と求められる権限を見て、承認する
もうひとつ、同じ発表では、ホスティング事業者などが自分で運用したり組み込んだりできるAIサイトビルダー、EmDash Buildのアルファ版も公開され、オープンソースになりました。まだアルファ版なので、本番で使う前提では考えないほうがよいでしょう。
QEmDashをDockerで動かせますか?
たとえば、手元のVPSにDockerだけ入っていて、ほかの環境はなるべく増やしたくない場合でも、EmDashは動かせます。公式のリポジトリには、動作に必要な設定が記されたDockerfileとcompose.yamlがあらかじめ同梱されています。公式ドキュメントでもDockerを用いた構築と起動の手順が案内されており、Cloudflareのアカウントを用意しなくてもローカル環境ですぐに動作確認が可能です。
コンテナで起動する際は、DockerfileとComposeファイルを用意した上で、ターミナルから docker compose up -d を実行します。データベースのデータをコンテナの再起動で消さないために、名前付きボリュームを割り当ててSQLiteの永続化を行う設定も必要ですね。
一つ取り違えやすいのが、Dockerfileの種類です。公式ドキュメントに掲載されているDockerfileは、自分のEmDashサイトをパッケージングして構築するための記述例です。リポジトリのルート階層にある、全体テンプレート構築用のDockerfileとは用途が異なるため、そのまま置き換えて使うことはできません。自分のサイトを動かしたいなら、ドキュメント側の例をもとにしてください。
つまり、Cloudflareへのデプロイは必要なく、自分のハードウェアでも好きなサービスの上でも動かせますよ。
QCloudflareの画像変換に上限はありますか?
上限はあります。Cloudflare Imagesの料金では、無料プランなら月5,000件までのユニークな変換を無料で使えます。この月間5,000件という枠は、画像の保存枚数や閲覧回数そのものではなく、「元画像と加工条件の組み合わせ」によってカウントされるルールです。EmDashのCloudflare向けドキュメントにも、同じ上限が書かれています。
同じ月のうちに同じ変換をもう一度リクエストしても、件数は増えません。たとえば、1枚の画像を100×100ピクセルと200×200ピクセルの2種類にリサイズして配信すると、消費される枠は2件です(Cloudflare向けの導入手順)。ただし、フォーマットの自動変換や品質設定の違いについては別件として重複カウントされません。
もし無料枠の月5,000件を使い切ってしまった場合でも、サイト上の全画像が消えてしまうわけではありません。すでに変換されてキャッシュにある画像はそのまま表示され続けます。しかし、新しい変換は9422エラーになり、その画像のリクエストは失敗します(画像のトラブル対応)。
それ以上の変換が必要なら、Images Paidプランに切り替えます。無料枠を超えただけで勝手に課金されることはありません。
また、月間の件数制限とは別に、Images bindingを用いた処理では入力画像のファイルサイズに20MBという上限が設定されています。
この内容をChatGPTで相談