このブログのホスティング費用は0円です。

払っているのはドメイン代だけで、それ以外に固定費はありません。記事は現在29本あります。

WordPressをやめた話では「なぜ移行したか」を書きました。この記事では、移行してから実際どうなっているかを数字で書きます。


構成

GitHub main にマージ Cloudflare ビルドして配信 読者 独自ドメイン この間、私がやる作業はゼロ かかっている費用はドメイン代だけ

やっていることは単純です。GitHubの main にマージすると、Cloudflareが自動でビルドして配信します。その間、私の作業はありません。

役割 使っているもの 費用
サイト生成 Astro 0円
ソース管理 GitHub 0円
配信 Cloudflare 0円
ドメイン Cloudflare Registrar $11.84 程度

ドメインだけが有料です。金額の根拠と他社との比較はドメイン取得サービスの比較記事にまとめています。


「Pages」のつもりが、Workersだった

これは書いていて気づきました。

移行時のメモにも、前に書いた記事にも「Cloudflare Pages」と書いていました。ところが実際のデプロイ先を確認すると、workers.dev のドメインが割り当てられていました。

つまりこのブログは、Pagesではなく Cloudflare Workers の静的アセット配信で動いています。設定ファイルもこれだけです。

{
  "name": "blog-tech",
  "compatibility_date": "2026-08-14",
  "assets": {
    "directory": "./dist"
  }
}

assets.directory で出力先を指しているだけで、サーバーのコードは1行も書いていません。

CloudflareはPagesからWorkersへの移行ガイドを公式に用意しており、静的サイトをWorkersで配信することを想定した作りになっています。Pagesの終了について公式が何か言っているわけではありませんが、これから始めるなら、どちらで動いているのかは確認しておいたほうがいいと思います。無料枠の条件が変わってきます。


無料枠はどこまでか

Cloudflareの公式ドキュメントに書かれている、無料プランの上限がこちらです。

項目 無料プランの上限
1デプロイあたりのファイル数 20,000
1ファイルの最大サイズ 25 MiB

そして課金について、公式にこう明記されています

Requests to static assets are free and unlimited.

静的なファイルへのアクセスは、無料で無制限ということです。アクセスが増えても課金されません。課金が発生するのは、サーバー側でコードを動かした場合です。このブログは静的ファイルを置いているだけなので、そこに該当しません。

手元の現在地

では、29記事を載せた現状はどれくらいなのか。ビルド結果を数えました。

項目 実測 上限に対して
ファイル数 228 20,000 の 約1%
最大ファイルサイズ 0.6MB 25 MiB の 約2%
合計サイズ 約32MB

内訳は、HTMLが38・画像が182・その他8でした。画像の大半はAstroが自動生成したWebPです。

記事1本あたり、おおよそ8ファイル増える計算です。単純に割れば、上限の20,000ファイルまでには2,000本以上書ける余地があります。

💡 個人ブログの規模で無料枠に当たることは、まず考えなくていいと思います。当たるとすればファイル数で、画像を大量に載せる構成のときです。


ビルドとデプロイ

手元で、キャッシュを消した状態からビルドを3回計測しました。

  • 38ページの生成に約5秒

画像の最適化を含めてこの時間です。Cloudflare側はここにリポジトリの取得と依存関係のインストールが加わるので、実際の反映まではもう少しかかります。PRをマージしてから本番で確認できるまで、体感で1分前後です。

記事を書く側の手順は、こうなります。

  1. 記事のMarkdownを書く
  2. PRを出す
  3. マージする

これだけで公開されます。サーバーに入る作業はありません。


独自ドメインとHTTPS

ドメインをCloudflare Registrarで取ったので、DNSの設定は実質不要でした。同じ事業者の中で完結するので、ネームサーバーを手で書き換える手間がありません。

HTTPS証明書も自動で用意されます。ここは何もしていません。

ひとつだけ、自分で直した設定

公開してしばらくして、Google Search Consoleから通知が来ました。調べると、http:// でアクセスしても https:// に転送されていませんでした

HTTP/1.1 200 OK   ← 転送されずに、そのまま表示されていた

httpとhttpsの両方でページが見える状態だったため、Googleが重複として扱っていました。Cloudflareの管理画面で 「Always Use HTTPS」をONにしたところ、301で転送されるようになりました。

HTTP/1.1 301 Moved Permanently
Location: https://sunny-engineering.com/...

証明書が自動で付くことと、httpからの転送が有効になっていることは別です。ここは見落としやすいので、公開したら一度確認しておくといいと思います。


結局いくらかかっているか

項目 年間
ホスティング 0円
独自ドメイン $11.84 程度
合計 ドメイン代のみ

アクセス解析(GA4)、お問い合わせフォーム(Googleフォーム)、ソース管理(GitHub)も、いずれも無料の範囲で使っています。


この構成が向かない場合

正直に書くと、万能ではありません。

  • サーバー側で動的な処理をしたい場合 — 静的なファイルを置くだけの構成では足りません。Workersでコードを動かすことになり、そこからは課金対象です
  • 管理画面から記事を書きたい場合 — WordPressのような編集画面はありません。Markdownを書いてPRを出す運用に慣れが要ります
  • 画像を大量に扱う場合 — 唯一、上限が見えるのがファイル数です

逆に、記事が数百本規模までの個人ブログで、書く手段としてMarkdownに抵抗がないなら、費用面で困ることはないと思います。


まとめ

  • ホスティングは0円。払っているのはドメイン代だけ
  • このブログはPagesではなく Workers の静的アセット配信で動いていた。設定は出力先を指す数行のみ
  • 無料プランの上限は20,000ファイル / 1ファイル25 MiB
  • 静的ファイルへのアクセスは無料・無制限(公式明記)。アクセス増で課金されない
  • 29記事の現在地は228ファイルで、上限の約1%
  • ビルドは38ページで約5秒。マージから公開まで体感1分前後
  • 証明書の自動付与と、httpからの転送は別物。Always Use HTTPS は自分でONにする必要があった

移行を決めた理由そのものはWordPressをやめた話に、Astro側で踏んだ落とし穴はZennの記事に分けて書いています。