このブログのホスティング費用は0円です。
払っているのはドメイン代だけで、それ以外に固定費はありません。記事は現在29本あります。
WordPressをやめた話では「なぜ移行したか」を書きました。この記事では、移行してから実際どうなっているかを数字で書きます。
構成
やっていることは単純です。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分前後です。
記事を書く側の手順は、こうなります。
- 記事のMarkdownを書く
- PRを出す
- マージする
これだけで公開されます。サーバーに入る作業はありません。
独自ドメインと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の記事に分けて書いています。