EmDashでブログをゼロから立ち上げた記録(つまずき4つと解決方法)

EmDashでブログを立ち上げた記録のアイキャッチ

EmDash 1.3.1でブログを作り、Cloudflareに公開するまでの記録。R2の有効化、データベースの準備が途中で止まる問題など、実際につまずいた点と直し方をまとめました。

このブログ自体を、EmDashで今日ゼロから作りました。最初の記事として、立ち上げの流れと、実際につまずいた点を残しておきます。

使ったもの

  • EmDash 1.3.1(Astro 7.4.2)
  • Node.js 24.14.1
  • 公開先:Cloudflare Workers(データベースはD1、画像はR2)

1. ひな形を作る

ひな形には、ブログ専用の「blog」テンプレートを使いました。Starterより、記事一覧・タグ・RSSなどブログ向けの部品が最初からそろっています。

npm create emdash@latest emdash-blog -- --template cloudflare:blog

コードはGoogleドライブなどの同期フォルダの外に置きました。部品のファイルが大量にあり、同期のせいで手元のデータベースが壊れることがあるためです。

2. 手元で動かす

npm run dev で起動し、http://localhost:4321/_emdash/admin/ で初回設定をします。サイト名、メールアドレス、パスキー(指紋や顔認証でのログイン)を登録すれば、管理画面が使えるようになります。

管理画面で記事を書いて「Publish now」を押すと、すぐにサイトに出ます。ここまではとても簡単でした。

3. 見た目を日本語向けに整える

テンプレートは英語圏向けなので、次の点を直しました。

  • フォントを日本語向け(IBM Plex Sans JP)に変更し、行間を広めに
  • 日付が世界標準時のまま出て、日本時間と1日ずれていた → 日本時間・「2026.10.24」形式に
  • 「min read」「All posts」などの英語を日本語に
  • 色は src/styles/theme.css で上書き(テンプレートの決まりで、ここに書けば元の設定に勝つ)

4. 公開でつまずいた4つのこと

つまずき1:日本語フォントの取得が途中で止まる

公開用に組み立てる(npm run build)とき、日本語フォントは383ファイルに分かれていて、取得が途中でエラーになりました。取得済みのファイルは保存されるので、同じコマンドを何度かやり直すと最後まで通りました。

つまずき2:R2が有効になっていない

最初の公開で「R2 bucket not found」、作ろうとすると「Please enable R2 through the Cloudflare Dashboard」と出ました。R2(画像の保存場所)は、Cloudflareの管理画面で一度申し込みが必要です。無料の範囲は保存10GBまでですが、支払い方法の登録を求められました。

つまずき3:やり直したらセッションの保管場所が重複した

1回目の公開で作られたKV(ログイン情報の保管場所)があるのに、2回目でもう一度作ろうとして「already exists」になりました。wrangler.jsonc に既存のKVのIDを書いて解決しました。注意点として、設定は組み立て時に固まるので、書き換えたら npm run build からやり直す必要があります。

つまずき4:「Database migrations are required」

公開できたと思って管理画面を開くと、このエラーが出ました。データベースの準備(全91工程)が自動で始まったものの49工程目で止まり、「作業中」の印が残っていたのが原因です。

emdash migrate --status で状況を確認し、表示された値を使って残りを適用すると直りました。公式の手順にも「大きな更新は自動では適用されない」とあるので、公開後はこの確認を毎回するのが安全です。

5. 公開直後にすぐやること

EmDashは、初回設定を最初に済ませた人が管理者になります。公開したらすぐに、本番のURLで初回設定を終わらせてください。手元で登録したパスキーは本番では使えないので、登録し直しになります。

初回設定の「How do you want to start?」で「Empty site」を選ぶと、英語のサンプル記事なしで始められます。

6. ターミナルから記事を投稿するときの「承認画面」

この記事は、管理画面ではなくターミナル(AIの作業画面)から投稿しました。EmDashのコマンドで emdash login を実行すると、ブラウザで開くURLと、8文字のコードが表示されます。

ログイン済みのブラウザでそのURLを開くと、次のような承認画面が出ます。

EmDashのデバイス承認画面。デバイスコードと「管理者フルアクセス」の権限が表示され、承認・拒否のボタンがある

表示されたコードが、ターミナルに出たコードと同じであることを確かめてから「承認」を押します。権限は「管理者フルアクセス」なので、自分が今まさに操作しているとき以外は承認しないのが安全です。

承認が完了した画面。「デバイスを承認しました」と表示されている

「デバイスを承認しました」と出れば完了です。パスワードやパスキーをターミナルに渡さずに済むのが、この仕組みのよいところです。作業が終わったら emdash logout で接続を切っておきます。

まとめ

手元で動かすところまでは、コマンド1つですぐでした。時間がかかったのは公開のところで、つまずきの多くはCloudflare側の準備(R2の申し込み、データベースの準備)でした。同じところで止まった人の参考になればうれしいです。

次は、記事一覧やタグのページの日本語化と、記事を書く流れを整えていきます。

コメント

    名前やメールアドレスは不要です。いただいたコメントは、確認してから公開します。

    0 / 1000