AI Cowork Lab
【実験ログ】Cloudflare Pagesで4サイトを無料公開した手順とハマりポイント
実験ログ 約28分で読めます

【実験ログ】Cloudflare Pagesで4サイトを無料公開した手順とハマりポイント

Astro(Webサイトを作るための道具。表示が速いのが特徴)で作ったサイトを公開するとき、最初にぶつかるのが「どこに公開するか」という問題です。Vercel、Netlify、AWS Amplify、Cloudflare Pages(GitHubと連携してサイトを無料で公開できるサービス)、あるいはレンタルサーバー。選択肢はたくさんあります。

この実験ログでは、Cloudflare Pagesを使って4つのAstroサイトを完全無料で公開した全手順と、その途中で遭遇したハマりポイントを正直に記録します。結論から言うと、2サイト目以降は5分で完了するようになりました。でも初回は想像以上に罠が多かった。ここに書くことは、すべて自分が実際に踏んだ地雷です。


なぜCloudflare Pagesを選んだのか

公開先の選択肢を比べてみた

まず、主なサービスを並べて比較しました。個人が複数サイトを運用する前提で、コスト・帯域・使いやすさを重視しました。

サービス無料枠有料プランビルド回数/月帯域制限カスタムドメインGit連携
Cloudflare Pages完全無料-500回無制限無料GitHub/GitLab
Vercel無料枠ありPro $20/月6,000分100GB無料GitHub/GitLab/Bitbucket
Netlify無料枠ありPro $19/月300分100GB無料GitHub/GitLab/Bitbucket
AWS Amplify12ヶ月無料従量課金1,000分15GB有料(Route53)GitHub等
エックスサーバーなし約$10/月-無制限含むなし

比較してわかったのは、Vercelは帯域が100GBまでという制限があること。画像が多いメディアサイトを4つ運用すると、いつか引っかかる可能性があります。Netlifyも同じです。AWS Amplifyは設定が複雑で、個人サイトにはオーバースペック。エックスサーバーは月額がかかるうえに、Git(ファイルの変更履歴を管理する仕組み)との連携もありません。

決め手は3つありました。帯域が完全に無制限なこと、何サイト作っても完全無料なこと、そして**Cloudflareの世界規模CDN(世界中にコピーを置いて、近い場所から配信する仕組み。表示が速くなる)**が使えること。日本からアクセスしても、アメリカからアクセスしても、最寄りのサーバーからコンテンツが配信されます。静的サイトとの相性は抜群です。

ℹ️

4サイト運用のホスティング費用

Cloudflare Pages x 4サイト = 月額$0。ビルド回数も500回/月の無料枠で、記事を更新するたびにデプロイ(サイトをネットに公開すること)しても余裕があります。もしVercelのProプランを使っていたら、4サイト x $20 = 月額$80。年間で$960の差になります。

もう一つ大きかったのは、Cloudflare Pagesには「そろそろ有料プランにしてね」というプレッシャーがほぼないこと。Vercelは商用利用でProプランを求めてくるし、Netlifyも無料枠を超えると課金が始まります。Cloudflare Pagesは無料枠の中で十分に使えて、「いつか課金されるかも」という不安がありません。


初回セットアップの全手順 ── 5ステップ

最初のサイト(trip-journal.net)を公開するまでの手順を、順番に書いていきます。結果的に約30分かかりましたが、そのうち半分以上はハマりポイントで消費した時間です。

Step 1: GitHubリポジトリの作成とpush

# Astroプロジェクトのフォルダで
git init
git add .
git commit -m "Initial commit"

# GitHubで新しいリポジトリを作成した後
git remote add origin https://github.com/ketyaso/trip-journal.git
git branch -M main
git push -u origin main

GitHub(Gitのデータを保存するクラウドサービス)でリポジトリを作るとき、READMEの自動生成はしないほうがいいです。ローカルですでにinitしているので、リモートとの競合が起きます。空のリポジトリを作って、ローカルからpushするのが一番スムーズです。

所要時間: 2分

Step 2: Cloudflare Pagesに接続 ── ここが最初の落とし穴

Cloudflare Dashboardにログインして、左メニューから「Workers & Pages」を選択。「Create」ボタンを押します。

…するとWorkersの作成画面が出てきます。Pagesの画面じゃないんです。

⚠️

Workers と Pages を間違える ── これが最大の罠

「Create」ボタンを押すとWorkersの画面に行ってしまいます。Pagesは、画面内にある「Pages」タブか「Looking to deploy Pages? Get started」というリンクから入る必要があります。WorkersとPagesの統合が進んだ影響で、画面がわかりにくくなっています。初めて触る人のほとんどがここで迷います。

正しい手順を整理するとこうなります。

  1. Workers & PagesCreate を押す
  2. 上のタブで 「Pages」 を選択(初期状態ではWorkersタブが表示されている)
  3. 「Connect to Git」 をクリック
  4. GitHubアカウントを連携(初回だけ認証が必要)
  5. デプロイしたいリポジトリを選択
  6. ビルド設定を入力して「Save and Deploy」

ちなみに、Workersはサーバー上でプログラムを動かす環境で、PagesはGitHub連携でサイトを公開する仕組み。名前は似ていますが役割は全然違います。Cloudflareとしては将来的に統合したいみたいですが、今の時点ではPagesタブを意識して選ぶ必要があります。

所要時間: 3分(初回の「どこだ?」を含む)。

Step 3: ビルド設定

Pagesプロジェクトの作成画面で、フレームワークの設定をします。

項目設定値備考
Framework presetAstroドロップダウンから選択
Build commandnpm run buildAstro選択で自動入力される
Build output directorydistAstroのデフォルト出力先
Root directory/モノレポ(複数のプロジェクトを1つのフォルダで管理する方法)でなければそのまま
Node.js version18以上環境変数(APIキーなどの秘密情報を安全に保存する場所)で指定推奨

Framework presetを「Astro」にすれば、Build commandとBuild output directoryは自動で入力されます。手で打つ必要はありません。

ただしNode.jsのバージョンには注意が必要です。Cloudflare Pagesの初期設定だとNodeのバージョンが古くて、Astroのビルドが謎のエラーで失敗することがあります。環境変数にNODE_VERSION=18を設定しておくと確実です。

所要時間: 1分

Step 4: 独自ドメインの設定

ここが一番時間がかかるステップです。まずドメインを取得して、Cloudflareにドメインを追加して、ネームサーバー(「このドメインはどこのサーバーを使ってるか」を教える設定)を変更して、DNS(ドメイン名とサーバーの住所を紐づける電話帳のようなもの)反映を待って、最後にPagesプロジェクトにCustom domainを追加します。

ドメインの取得にはエックスサーバードメインを使いました。キャンペーンで.com.netが初年度1円で取得できます。

ドメイン取得価格用途
trip-journal.net1円旅行メディア
vibe-code-lab.com1円バイブコーディング入門
ai-cowork-lab.com1円AI活用ラボ
ceo-tax.com約200円経営者向け税金ガイド

ドメイン4つ合計で約204円。2年目以降は更新費がかかりますが、初年度はほぼ無料で始められます。

Cloudflareにドメインを追加する手順:

  1. Cloudflare Dashboardの「Add a site」からドメインを入力
  2. Freeプランを選択(迷わずFreeでOK)
  3. Cloudflareがネームサーバーの変更を指示してくる ── 2つのアドレスが表示される
  4. エックスサーバードメインの管理画面でネームサーバーを変更

エックスサーバー側のネームサーバー変更手順:

  1. エックスサーバードメインにログイン
  2. 対象ドメインの「ネームサーバー設定」を開く
  3. 「その他のネームサーバー」を選択
  4. Cloudflareが指定した2つのアドレスを入力
  5. 設定を保存

ネームサーバーの変更が反映されると、Cloudflareのダッシュボードでドメインのステータスが「Active」に変わります。この状態になったら、PagesプロジェクトのCustom domainsタブから独自ドメインを追加できます。

Pages Project → Custom domains → Set up a custom domain
→ ドメイン名を入力 → Activate domain

これだけです。 DNSレコードを手動で追加する必要はありません。Pages側のCustom domains機能に任せれば、必要な設定が自動的に行われます。

⚠️

DNSレコードを手動で追加しないこと

「先に設定しておこう」と思って、手動でCNAMEレコード(ドメインの転送設定)を追加してからCustom domainを設定しようとすると、「もうレコードがある」とエラーになることがあります。Pages側のCustom domains機能だけを使うのが正解です。

所要時間: 15〜30分(DNS反映の待ち時間を含む)。

Step 5: 動作確認

https://your-domain.com にアクセスして、サイトが正常に表示されることを確認します。SSL証明書(通信を暗号化するための仕組み)も自動で発行されるので、HTTPSでのアクセスが最初から可能です。面倒なSSL設定は一切不要です。

ここまでの合計所要時間: 約30分(初回のUI迷子 + DNS反映待ちを含む)。


4つの最大のハマりポイント

4サイトを設定する過程で遭遇した問題を、影響度の大きい順にまとめます。これらを事前に知っていれば、初回でも15分で完了できたはずです。

罠1: Workers vs Pages の画面を間違える

Workers vs Pages の画面を間違える

こうなる: 「Create」を押してもPagesの画面が出ない。Workersのコード編集画面が表示される。

原因: CloudflareがWorkersとPagesのダッシュボードを統合し始めたせいで、「Workers & Pages」というメニューに統合されました。でもデフォルトで表示されるのはWorkersタブ。Pagesは「タブを切り替えないとたどり着けない」状態になっています。

解決策: 「Create」を押した後、画面上部にある「Pages」タブをクリック。または「Looking to deploy Pages? Get started」というリンクを探す。

失った時間: 初回は約10分。何が起きているかわからず、Workersのドキュメントを読んでさらに混乱しました。

Cloudflareの公式ドキュメントも、Workers向けとPages向けで分かれているのに、ダッシュボード上のURLは統合されています。このねじれが混乱の原因です。今後改善されるかもしれませんが、今は「Pagesタブを探す」と覚えておくしかないです。

罠2: ネームサーバーはドメインごとにバラバラ

ネームサーバーの罠

Cloudflareのネームサーバーはドメインごとにランダムに割り当てられるんです。同じCloudflareアカウントでも、ドメインが違えばネームサーバーも違います。

ドメインネームサーバー1ネームサーバー2
trip-journal.netaliza.ns.cloudflare.comduke.ns.cloudflare.com
vibe-code-lab.comemily.ns.cloudflare.comuriah.ns.cloudflare.com
ai-cowork-lab.comjade.ns.cloudflare.competer.ns.cloudflare.com

つまり「前のドメインと同じネームサーバーでいいだろう」と思ってコピペすると、いつまでたっても接続できません。

解決策: 必ず各ドメインの「Add a site」画面で、Cloudflareが指示するネームサーバーを個別に確認してからエックスサーバー側に入力すること。

2サイト目を設定するとき、「同じアカウントなんだから、ネームサーバーも同じだろう」と思い込んで1サイト目の値をコピペしました。結果、30分待っても有効にならず、設定を見直してようやく気づきました。かんたんに言うと、「住所を間違えてるから荷物が届かない」のと同じ状態だったということです。

罠3: DNS反映は待つしかない

DNS反映の待ち時間

こうなる: ネームサーバーを変更したのに、Cloudflareのダッシュボードがいつまでも「Pending」のまま。

反映にかかる時間の目安:

  • 最短: 数分(運がいい場合)
  • 通常: 15〜30分
  • 最長: 数時間(まれですが起きます)

やっちゃダメなこと: 「設定を間違えたかも」と焦って、ネームサーバーを何度も変更すること。変更するたびにカウントがリセットされて、反映がさらに遅くなる可能性があります。

正しい対応: 設定が正しいことを一度確認したら、あとはただ待つ。

最初のドメインのとき、15分待っても「Pending」が消えないので不安になり、ネームサーバーを別の値に変えたり戻したりを3回繰り返しました。結局、最初の設定で合っていたんです。ただ反映に時間がかかっていただけでした。

ℹ️

待ち時間の有効活用

DNS反映を待つ間に、次のサイトのコンテンツを書いたり、他のドメインの設定を並行して進めたりするのが賢い方法です。焦って設定をいじるのが一番非生産的。コーヒーでも淹れて待ちましょう。

罠4: GitHubリポジトリの権限を追加し忘れる

リポジトリが見えない問題

こうなる: Cloudflare PagesでGitHubリポジトリを選ぼうとしたとき、新しく作ったリポジトリが一覧に出てこない。

原因: GitHubとの連携設定で「選択したリポジトリだけ許可する」にしている場合、新しいリポジトリは自動的に許可されません。

解決策:

  1. github.com/settings/installations にアクセス
  2. Cloudflare Pagesの設定を開く
  3. 「Configure」をクリック
  4. 「Repository access」で新しいリポジトリを追加

失った時間: 初回は5分(原因の調査含む)

セキュリティのために「全部のリポジトリを許可」ではなく「選んだものだけ許可」にするのは正しい判断ですが、新しいプロジェクトを追加するたびにこの手順が必要になります。4サイト目あたりでは体が覚えていました。


ドメイン購入: エックスサーバードメインの活用

ドメインの購入先にはエックスサーバードメインを選びました。理由はシンプルで、初年度1円キャンペーンがあるからです。

.com.netが1円で取得でき、Whois代行(ドメインの持ち主情報を非公開にするサービス)も無料。2年目以降の更新費は.comが約1,600円/年、.netが約1,800円/年ですが、初年度はほぼ無料で複数ドメインを試せます。サイトの方向性が決まってから本格運用を判断できるので、実験段階にはぴったりです。

注意点として、取得したドメインのネームサーバーは初期状態でエックスサーバーのものが設定されています。Cloudflare Pagesを使う場合は、これをCloudflare指定のネームサーバーに変更する必要があります。エックスサーバーのレンタルサーバーを使わないのに、エックスサーバードメインでドメインだけ買う、というのは全く問題ありません。


2サイト目以降: 5分で完了するフロー

初回セットアップでCloudflareアカウント、GitHub連携、ネームサーバーの仕組みを理解していれば、2サイト目以降はびっくりするほど速いです。

2サイト目以降のフロー(所要時間: 約5分)

1
GitHubにリポジトリ作成 + push
1分。git init → add → commit → push。もう手が覚えてます。
|
2
GitHub連携でリポジトリを許可
30秒。github.com/settings/installations → Configure → リポジトリ追加。
|
3
Cloudflare PagesでConnect to Git → Deploy
2分。Pagesタブ → Connect to Git → Framework: Astro → Save and Deploy。
|
4
Custom domainを追加
1分。ドメインのネームサーバーは事前に変更済みなので、Activate domainを押すだけ。
|
OK
公開完了
独自ドメインでサイトが表示される。HTTPS自動設定。

初回の30分がウソのように、2サイト目以降は5分で終わります。フローが同じだからです。唯一忘れがちなのがStep 2のGitHubリポジトリ権限の追加。「なぜリポジトリが出てこないんだ」と毎回30秒ほど考えてから思い出します。


環境変数の設定: ビルド時だけ使われる

Cloudflare Pagesで環境変数(APIキーなどの秘密情報を安全に保存する場所)を設定するのは、Settings → Environment variablesから。ここで大事なのは、AstroのSSG(サイトを事前にHTMLファイルとして作っておく方式。表示が速い)では環境変数はビルド時にだけ使われるという点です。

変数名用途いつ使われるか
GOOGLE_PLACES_API_KEYPlaces APIでお店の写真を取得ビルド時のみ
NODE_VERSIONNodeバージョン指定ビルド時のみ

つまり、公開後のHTMLにはAPIキー(サービスを使うための鍵のようなもの)は含まれません。ビルドサーバー上でAPIを呼び出して、その結果だけがHTMLに埋め込まれます。公開されたサイトのソースコードを見ても、APIキーは一切見えません。セキュリティ面で安心です。

💡

PUBLIC_ プレフィックスに注意

Astroでサイトを見ている人のブラウザから環境変数を使うにはPUBLIC_プレフィックスが必要です(例: PUBLIC_GA_ID)。サーバー側のビルドスクリプトからはプレフィックスなしで使えます。APIキーのような秘密情報には絶対にPUBLIC_を付けてはいけません。つまり、PUBLIC_を付けると「見せてOK」という意味になるということです。

環境変数は「Production」と「Preview」で分けて設定できます。普通はProductionにだけ設定すれば十分ですが、プレビュー版でもAPIを使いたい場合はPreviewにも同じ値を設定します。


Cloudflare Pagesの便利な機能

セットアップが終わって、実際に使ってみて「これは便利だな」と感じた機能を書いておきます。

Preview Deployments(プレビューデプロイ)

mainブランチ以外にpushしたり、Pull Requestを作ったりすると、自動的にプレビューURLが生成されます。abc123.project.pages.devのような一時URLで変更を確認でき、本番サイトに影響を与えずにレビューできます。

かんたんに言うと、「本番に出す前に、テスト版のURLで確認できる」ということです。CSSの変更やレイアウトの調整を確認するときに特に役立ちます。

Web Analytics

Cloudflare Dashboardから、無料でアクセス解析ができます。Google Analyticsのような追跡タグをサイトに埋め込む必要がありません。ページビュー、訪問者数、国別アクセス、どこから来たかなどが確認できます。

Google Analyticsほど詳しくはないですが、「サイトが見られているかどうか」を確認するには十分です。何より、追跡用のJavaScriptを入れなくて済むので、サイトの表示速度に影響しません。

ロールバック

過去の状態に一瞬で戻せます。ビルドが壊れたときに、前の正常なバージョンに数クリックで戻せるんです。つまり、「壊れても元に戻せる」という安心感があるので、大胆な変更にも挑戦しやすくなります。

自動HTTPS

Custom domainを設定すると、SSL証明書が自動的に発行されます。面倒な設定や更新作業は一切不要。レンタルサーバーで手動でSSL設定をした経験がある人なら、この自動化のありがたみがわかるはずです。


コスト実績 ── 4サイト x 1ヶ月

実際にかかった費用

項目金額備考
Cloudflare Pages(4サイト)$0無料枠で十分
ドメイン4つ(初年度)約204円1円x3 + 200円x1
GitHub(Private repos)$0無料枠
ビルド回数(1ヶ月)約80回500回の無料枠以内
帯域使用量計測不要無制限
月額ランニングコスト$0ドメイン更新費のみ年1回発生

ホスティング費用ゼロ。 ドメイン代の初年度204円だけで、4サイトが完全に運用できています。

もしVercelのProプランを使っていたら月額$80(4サイト分)、年間で約$960。Cloudflare Pagesならその全額が浮きます。個人でサイトを運営する人にとって、この差は大きいです。


教訓まとめ ── 5つの学び

Cloudflare Pagesで4サイトを公開して学んだこと

1. 画面の罠は「知っている」だけで回避できる WorkersとPagesの混同、ネームサーバーのランダム割り当て。どちらも事前に知っていれば5秒で解決します。知らないと30分以上ロスします。つまり、スキルの問題じゃなくて、知識の問題ということです。

2. DNS反映は「信じて待つ」が最適解 設定を何度もいじるのは逆効果。正しい設定を1回だけ行って、あとはコーヒーを飲んで待つ。不安になったらCloudflareのステータスページを確認するだけで十分です。

3. 2サイト目以降の速さが本当の価値 初回30分、2回目以降5分。このスケールする感じが、複数サイト運用では決定的に重要です。10サイト作っても追加コストはゼロ。

4. 環境変数のビルド時参照を理解する APIキーをビルド時に使って、HTMLには結果だけを埋め込む。かんたんに言うと、「裏方で秘密の鍵を使って作業して、お客さんには完成品だけ見せる」ということ。このパターンを理解すれば、セキュリティとコストの両方を最適化できます。

5. 無料でここまでできる時代に感謝 Cloudflare Pages + GitHub + エックスサーバードメインの組み合わせで、プロ並みのインフラが年間数百円で手に入ります。サーバー管理不要、SSL自動化、CDN標準装備。個人でサイトを作るハードルは確実に下がっています。

💡

Cloudflare Pagesの総評

無料で複数サイトを運用できるサービスとして、今のところCloudflare Pagesが最強だと言い切れます。帯域無制限、ビルド500回/月、プレビューデプロイ、自動HTTPS、アクセス解析。必要なものが全部揃っています。唯一の弱点は画面のわかりにくさですが、それは初回だけの問題です。

Cloudflare Pagesを使い始めて約1ヶ月。4サイトを運用して、一度もダウンタイムを経験していません。ビルドも安定しているし、CDNのおかげでページ表示も速い。何より「月額ゼロ」という気持ちの軽さがいいです。サイトの運営費を気にせず、コンテンツに集中できる環境。それがCloudflare Pagesの一番の価値だと感じています。

他のカテゴリの記事