EmDashをCloudflareに立ち上げる手順|作成からログインまで
連載「WordPressからEmDashへ移行する」の第2回です。今回は、EmDashのサイトを作り、Cloudflareの仮アドレスで管理画面にログインできるところまでを進めます。
コマンドは、筆者がClaude Code(パソコンの中でコマンドを打ってくれるAI)に頼んで実行してもらいました。人が操作したのは、ブラウザでの許可、サブドメインの登録、管理画面の初期設定だけです。
✅ この記事で解決できること
- EmDashのサイトを作り、Cloudflareの仮アドレスで管理画面にログインするまでを再現できる
- 初回のデプロイでつまずく3か所(サブドメイン未登録、HTTPSのエラー、データベースの準備)の対処がわかる
- パスキーとドメインの関係を、先に知っておける
- 所要時間:約30分(つまずき込み)
🎯 こんな人に最適です
- WordPressからEmDashへの移行を考えていて、まず新しいサイトを立ち上げたい人
- Cloudflare Workersを初めて使う人
- コマンド操作をAI(Claude Code)に任せながら進めたい人
🔧 必要な環境・前提
- Mac
- Node.js 22.23.4以上(筆者は v24.22.1、npm 11.19.1)
- EmDash 1.4.0、テンプレート「ブログ(Cloudflare向け)」
- Cloudflareのアカウント(この時点では無料プラン)
- Claude Code(なくても、同じコマンドをターミナルで打てば同じことができます)
- 検証日:2026年10月30日
⚠️ 先に第1回の準備を済ませてください
バックアップとCloudflareのアカウントの用意がまだの人は、先に第1回「【図解】WordPressからEmDashへ移行する手順(準備編)」を済ませてから進めてください。
📋 作業全体の流れ
- 手順1:EmDashのサイトを作る(手元のパソコン)
- 手順2:WranglerでCloudflareにログインする
- 手順3:Cloudflareにデプロイする
- 手順4:データベースの準備を終わらせる
- 手順5:管理画面の初期設定をする
この記事で出てくる言葉
| 言葉 | 意味 |
|---|---|
| デプロイ | 作ったサイトをインターネット上(Cloudflare)に出すこと |
| Worker | Cloudflareのサーバーで動くプログラム。EmDashのサイトそのもの |
| Wrangler | CloudflareにWorkerを出すための公式のコマンド |
| D1 | Cloudflareのデータベース(記事や設定の入れ物) |
| R2 | Cloudflareのファイル置き場(画像などのメディアを入れる) |
| KV | ログイン状態などを覚えておく小さな保存場所 |
| workers.dev のサブドメイン | Cloudflareが配る仮のアドレスの名前。本番のドメインに切り替える前は、このアドレスでサイトを開く |
| マイグレーション | 空のデータベースに、EmDashが使う表(テーブル)を順番に作っていく作業 |
| パスキー | パスワードの代わりに、Macの指紋認証(Touch ID)などでログインするしくみ |
手順1:EmDashのサイトを作る(手元のパソコン)
手順1-1:作成のコマンドを実行する
ターミナル(文字だけでパソコンを操作する画面)で、次のコマンドを実行しました。Node.js(JavaScriptのプログラムを動かす土台)とnpm(部品を取ってくる道具)を使います。
npm create emdash@latest site -- --template cloudflare:blog --pm npm --no-sandboxed-plugins --install --yessite:できるフォルダの名前です。--template cloudflare:blog:ブログ用・Cloudflare向けのテンプレート(サイトのひな形)です。--no-sandboxed-plugins:有料プランが必要な「サンドボックス型プラグイン」を使わない設定です。無料プランで動かすために付けました。
部品(666個)のインストールに、約1分かかりました。
手順1-2:npm 11 のときは2つの部品を許可する
作成のあと、手元でサイトが起動しませんでした。原因はnpm 11の仕様です。
workerd(Cloudflareの実行環境を手元で再現する部品)とesbuild(プログラムを組み立てる部品)の2つです。この2つを許可して、組み立て直すと動きます。npm install-scripts approve workerd esbuild
npm rebuild workerd esbuild手順1-3:名前を自分のサイト用に変える
wrangler.jsonc(Cloudflare向けの設定ファイル)を開きます。- 初期値の名前(
my-emdash-siteなど)を、自分のサイト用に変えます。
筆者は、Workerを manual-chang、D1を manual-chang-db、R2を manual-chang-media にしました。
作成のときに、次のファイルも自動で作られます。
.env:暗号化キー(秘密の値)が入っています。git(変更の履歴を残す道具)には入らない設定になっています。.mcp.json:Claude CodeからEmDashの公式ドキュメントを検索できる設定です。
筆者は、ここでサイトのフォルダをgitで管理し始めました。
手順1-4:手元で起動を確認する
npm run devを実行します。- ブラウザで http://localhost:4321 を開きます。
- テンプレートの「My Blog」が表示されれば成功です。黒い背景で、記事は0件(「No posts yet」)です。

ここまで、作成から起動の確認まで約5分でした。
手順2:WranglerでCloudflareにログインする
npx wrangler loginを実行します。- ブラウザに「Wrangler wants to access your account」の画面が開きます。
- アカウントを確認して、「Authorize」を押します。
- 「Authorization granted to Wrangler」と表示されれば完了です。

手順3:Cloudflareにデプロイする
手順3-1:最初のデプロイで止まる
npm run deploy を実行しました。中身は「組み立て(build)」と「wrangler deploy」です。結果は、次のエラーで失敗しました。
You need to register a workers.dev subdomain before publishing to workers.dev手順3-2:workers.dev のサブドメインを登録する
- Cloudflareのダッシュボード(管理画面)を開きます。
- 左のメニューで「Compute」→「Workers & Pages」を開きます。
- 右下の「Account details」にある「Subdomain」の欄で、鉛筆マークを押します。
- 名前を決めて登録します。

この時点では、Workerはまだ0個(「No projects found」)です。右上には無料枠が表示されていました。1日10万リクエストまで無料で、請求額は $0.00 です。
決めた名前は、アカウント全体の仮アドレス <名前>.workers.dev になります。サイトの仮アドレスは https://<Worker名>.<名前>.workers.dev です。
手順3-3:もう一度デプロイする
- もう一度
npm run deployを実行します。 - D1・R2・KVが自動で作られてから、アップロードされます。約30秒でした。
Cloudflareの画面でデータベースなどを自分で作る必要はありませんでした。wrangler.jsonc に書いた名前で作られます。

手順3-4:暗号化キーをCloudflareにも登録する
手順1-3で .env に作られた暗号化キーを、Cloudflare側にも登録します。
npx wrangler secret put EMDASH_ENCRYPTION_KEY入れる値は、.env にあるものです。値は画面にもログにも出さないでください。
手順3-5:HTTPSのエラーが出たら1〜2分待つ
デプロイの直後、サイトを開くとHTTPSの接続エラーになりました。
手順4:データベースの準備を終わらせる
HTTPSのエラーが消えたあと、今度は「Database migrations are required」(503)と表示されました。
手順4-1:原因を知る
- データベースの準備(マイグレーション)は、全部で91段階あります。
- Workerは、最初のアクセスのときに自動で準備を進めます。ただし、重い段階(51段階目以降)は手元のコマンドで実行する仕様です。
- さらに、自動の実行が途中で止まり、「作業中」の印(ロック)が残っていました。
手順4-2:コマンドで残りを実行する
ここはClaude Codeが実行しました。
① wrangler.jsonc に、D1のIDを書き足します。自動で作られたD1は、IDが書かれていないため、コマンドがどのデータベースか特定できないからです。
② 状況を確認します。
npx emdash migrate --status筆者の場合は、50段階まで完了、41段階が未実行で、ロックが残っていました。
③ 残りを実行します。<…> には、--status の結果に出る値を入れます。
npx emdash migrate --take-over-lock=<ロックのID> --expected-target-fingerprint=<確認用の文字列>このコマンドには、CloudflareのアカウントIDとAPIトークンが必要です。環境変数 CLOUDFLARE_ACCOUNT_ID と CLOUDFLARE_API_TOKEN に入れて使いました。トークンは新しく発行せず、ログイン済みのWranglerから npx wrangler auth token で取り出しました。
⚠️ トークンは貼らない
APIトークンとアカウントIDは秘密の値です。チャットやブログ、スクショに載せないでください。
手順4-3:表示を確認する
- トップページが表示されることを確認します。
- 管理画面
/_emdash/adminを開きます。 - 初期設定の画面
/_emdash/admin/setupに移動すれば正常です。
サブドメインの登録から表示の確認まで、データベースのトラブル込みで約15分でした。
手順5:管理画面の初期設定をする
ここだけは人が操作します。
⚠️ デプロイしたら、すぐに初期設定をする
初期設定が終わるまでは、アドレスを知っている人が先に管理者を作れてしまいます。
ブラウザで https://<Worker名>.<名前>.workers.dev/_emdash/admin を開きます。「サイトをセットアップ」の画面(日本語表示)が開きます。設定は「サイト」→「アカウント」→「ログイン」の3ステップです。
手順5-1:サイト
- 「サイトタイトル」を入れます。筆者は「マニュアルちゃん」にしました。
- 「キャッチフレーズ」を入れます。初期値は英語(Thoughts on building for the web)なので、今のサイトと同じ文に変えました。
- 「どのように始めますか?」で、「空のサイト」を選びます。
- 「続行 →」を押します。

手順5-2:アカウント
- メールアドレスを入れます。
手順5-3:ログイン(パスキーを作る)
- パスキーを作成します。MacではTouch IDを使いました。
- 「パスキーを作成しました」と表示されます。
- 「ダッシュボードを開く」を押します。

パスキーの確認、名前の変更、追加は、あとから「セキュリティ設定」でできると画面に表示されます。
パスキーとドメインの注意
パスキーは、アドレスごとに作られます。workers.devの仮アドレスで作ったパスキーは、本番のドメイン(manual-chang.com)では使えません。
- 最初は「パスキーは本番ドメインで登録しないといけない」と思っていました。
- 公式の「Move to a New Domain」ガイドを読むと、workers.devで作ってから本番に移す方法が用意されていました。
- 本番に切り替えるときに、管理画面の「設定」→「一般」→「ドメインを変更」から、新しいアドレス用のパスキーを登録し直せばよいです(第5回で実際にやりました)。
⚠️ この段階では本番ドメインを設定しない
最初から本番ドメイン(EMDASH_SITE_URL)を設定すると、ドメインを切り替えるまで管理画面に入れなくなります。この時点の本番ドメインは、まだ古いWordPressを指しているためです。ドキュメントの一部だけを読むと誤解しやすい点です。
うまくいかないときは
| 症状 | 原因 | 対処 |
|---|---|---|
| 作成後、npm run dev で起動しない | npm 11がインストール時のスクリプト(workerd、esbuild)を止めている | npm install-scripts approve workerd esbuild のあと npm rebuild workerd esbuild |
| デプロイで「You need to register a workers.dev subdomain…」 | Workersを初めて使うアカウント | 「Compute」→「Workers & Pages」の「Account details」→「Subdomain」で名前を登録して、もう一度デプロイ |
| デプロイ直後にページが開かない(HTTPSのエラー) | 証明書の準備中 | 1〜2分待つ |
| 「Database migrations are required」(503) | データベースの準備が途中で止まっている | D1のIDを wrangler.jsonc に書き、npx emdash migrate --status で状況を見て、npx emdash migrate で残りを実行 |
| 本番ドメインに切り替えたらログインできない | パスキーはアドレスごと | 切り替えのときに「ドメインを変更」から本番用のパスキーを登録し直す(第5回) |
まとめ
npm create emdash@latestでサイトを作ります。npm 11では、workerdとesbuildの許可が必要です。- Workersを初めて使うなら、デプロイの前にworkers.devのサブドメインを登録します。
- D1・R2・KVは、デプロイのときに自動で作られます。
- 「Database migrations are required」が出たら、
npx emdash migrateで残りの準備を実行します。 - デプロイしたら、すぐに管理画面の初期設定をします。移行するなら「空のサイト」を選びます。
この回の終わりの時点で、EmDashは仮アドレス(workers.dev)で動き、管理者としてログインできます。記事はまだ0件です。本番のmanual-chang.comは、まだ古いWordPressのままなので、読者からは何も変わって見えません。
次回は、第3回「WordPressの記事をEmDashに移す手順|無料プランで止まった時の対処」です。ここでCloudflareの無料プランの上限に当たります。



