Cloudflare×Ghost Proで簡単!.pageドメインを使ったカスタムドメイン設定ガイド

.pageドメインでのセットアップをしている人を見なかったので。

ドメインといえば.comがいまでも主流ですが、ドメインを新規で使う分にはどれを選んでも同じなため、ちょっと面白いものを選びたいですね。

今回は.pageドメインを利用してみました。Googleがレジストラーとして管理しており、HTTPSが強制され、HSTS Preloadも勝手に登録されるのでブログを使う身としては安心でらくちんです。

HSTSとはなんぞや

HSTS(HTTP Strict Transport Security)って、簡単に言うと「ブラウザが自動でHTTPアクセスをHTTPSアクセスに切り替えるようにする仕組み」です。たとえばふつうならHTTPでアクセスすると、そのままHTTPでサーバーに行くわけですよね。でもHSTSを設定しておくと、いったんブラウザが「このサイトはHSTSに対応してるんだから、そもそもHTTPでの接続を試そうとしちゃダメ」って判断し、強制的にHTTPSに変えてくれるんです。
そうすると、ユーザーがURLバーに http://example.com って打ち込もうが何しようが、ブラウザ自体が「あ、ここはHSTSサイトなんだから」とHTTPSオンリーで通信しようとするので、結果的にHTTPでの通信を許さなくなるわけですね。これがどう便利かっていうと、たとえばSSL証明書の設定をミスっていたり、意図しないHTTPリクエストが入ったりしても、そこを自動的に撥ねてくれるわけですよ。

Strict-Transport-Security - HTTP | MDN
HTTP の Strict-Transport-Security はレスポンスヘッダーで(しばしば HSTS と略されます)、ブラウザーに、そのサイトは HTTPS を使用してのみアクセスすべきであり、今後 HTTP を使用してアクセスしようとした場合は自動的に HTTPS にアップグレードされるべきであるという情報を通知します。

さらに「HSTS Preload」という仕組みもあって、これは多くのブラウザ(ChromeやFirefox、Safariなど)が共有している「はじめっからHTTPSに行くサイト一覧」みたいなリストに、あらかじめドメインを登録しておく方法です。Preloadリストに載ると、ユーザーのブラウザが初回アクセスする前から「ここは最初からHTTPS使うべし!」と分かるんですね。
つまり、HTTPでアクセスが来る前にブラウザ側が「そんな接続は聞きませんよ」とブロックして、HTTPSへ飛ばしてくれるから、リダイレクトをサーバー側で処理するよりも先に“安全”が担保されるんです。ブラウザは「このサイトは絶対HTTPSだな」と知っているから、HTTPでアクセスしようとした時点で止めちゃう。実際にリクエストがHTTPでサーバーに届く前からHTTPSに置き換えられるんですよ。
.pageドメインは、Googleが管理していることもあって、自動的にHSTS Preloadリストに載ります。なので、ユーザーが http://example.page なんて打っても「そのドメインは最初っからHTTPSしか通信させないように指定されてるよね?」ってブラウザが言って、無条件にHTTPSに切り替えちゃう。これを知らないと「なぜかHTTPでアクセスできないんだけど…?」という状況に陥りますが、そもそも「HTTPでアクセスできないのが正しい」わけですね。

それからHSTSは、一度ユーザーがアクセスして「このサイトはHSTSですよ」っていうヘッダーをブラウザが受け取ると、設定した期間(たとえばmax-age=31536000 で1年とか)はずっとHTTPS強制モードでアクセスするようになります。しかも preload に登録していれば、ユーザーが一度もアクセスしなくても、リストを持ったブラウザが「このサイトはHTTPダメ」と判断する。
ただ、この機能は便利な半面、一度HSTS Preloadに登録すると外すのがちょっと大変だったりします。予期せぬトラブル(たとえばSSL証明書が期限切れで更新失敗しているのに、HTTPすら試せない)なんかを起こしてしまうと、緊急時の迂回ルートがなくなるんで、そこは注意が必要。
とはいえ、しっかりSSLまわりを管理していて、HTTPSへの一本化を進めたいならHSTSはかなり強力な味方ですね。「ブラウザが勝手にHTTPをHTTPSに書き換えてくれる」って状況そのものがセキュリティ強化につながるし、Google的にも(SEO評価的にも)HTTPS推奨なんで、安心感が段違いです。

要するに、「もうHTTPでアクセスなんかさせるもんか。ユーザーが間違えて打ち込もうが何しようが全部HTTPSへ持ってくぞ!」っていう、ちょっと強引だけど頼もしいセキュリティ機構なんですね。特に今回みたいに .pageドメインを使ってる人は、最初から自動でPreloadされてるわけなので、設定で頭を悩ませるというよりは「何もしなくてもHTTPが不可になってるじゃん」って現象に出会うかもしれません。でも、それがHSTSの力というわけです。

ブログのホスティングについて

本ブログのホスティングはCMSであるGhostの提供する公式ホスティングであるGhost Proを利用しています。

Ghost: The best open source blog & newsletter platform
Beautiful, modern publishing with email newsletters and paid subscriptions built-in. Used by Platformer, 404Media, Lever News, Tangle, The Browser, and thousands more.

ブログといえばWordPressですが、WordPressらしさがあまりかっこよくない上に、WordPressの運営が今はもめているようですから、今からブログを始めるのであればちょこっとGhostを試してみてもいいと思います。

まあ、とはいえ今回の騒動もユーザー側の影響は少ないですから、別にって方は定石のWordPressといった感じでもいいです。ここら辺はちょこっと触ってみて気に入ったほうを使えばいいと思います。

何と言ったってWordPressでホスティングをすれば、制限はあれども無料でサイトを構築できますものね。

ドメインを購入する

まずはドメインを購入しましょう。

購入できるドメインはレジストラによって異なりますが、迷惑なメールでの割引通知や使いやすいドメイン管理画面が欲しいのであれば実質的にCloudflareとGandiに絞られます。

ドメイン登録と管理 | Cloudflare Registrar
Cloudflare Registrarでドメイン名を安全に登録。 Cloudflareは利益を上乗せせず、ドメイン名を原価で提供します。 Cloudflare Registrarにドメイン名を移管しましょう。
Gandi.net: ドメイン名、メールボックス、ウェブホスティング、SSL/TLS証明書
➤ Manage your websites, your emails, your SSL certificates, and VPS servers. ✅ Included with a domain name: 1 SSL certificate, Unlimited aliases & forwarding, and our LiveDNS.

かつてはGoogleもドメインを販売していて、使いやすかったのですが、サ終しました。

Google Domains

Cloudflareはドメインを卸値で売っています。更新料が初期購入の費用と同じなのでコストの計算が付きやすいですが、割引もないので1円でドメインを取得することはできません。別のレジストラから買ってきて移管してもいいと思うかもしれませんが、Clouflareで販売していないドメインは移管しても更新はCloudflareでは行えません。ちょっと面倒。

このドメインあるかなあぁ。買えるかなあというものはCloudflareが検索サイトを用意してくれていますから、ここでいろいろ試してください。

ドメインの購入に関して、ドメインなんて安く買えればそれでいいのでしたらどこを使っても同じですが、設定やメールのうざさが天と地ほどの差があります。

ドメインを買ったことがない、よくわからんって人は以下の記事を見てみてください。

ドメインレジストラ8社使ってみたので比較レビュー | なうびるどいんぐ
こんにちは、生きてます。世の中には色々なドメインレジストラがあります。日本だけでも片手で数え足りないくらいあるのですが、何を思ったのか数種類を並行して利用中なのでレビュー的なのを。

私は今回このサイトで利用するドメインを購入しました。見ての通り、.pageドメインです。

ドメインについての豆知識

世の中にはたくさんドメインがあります。

.comや.net、.infoなど購入や利用に何も制限がないドメインもあれば.newなど利用に特定の要件が設定されているドメインもあります。

ちょっと面白いのがGoogleの管理しているドメインです。

(Google Domainsはサ終によりGoogleからドメインを買うことはできなくなりましたが、Google Registryは今もあります。つまり、Googleはドメインを直接販売しませんが、ドメインの管理事業はそのままです。他の会社からGoogleの管理しているドメインを購入できます)

Expanding the online frontier | Google Registry
More and more people make websites every day, but not everyone knows how to stay safe and secure online. Learn what you need to be aware of to keep your data safe online.

Googleの管理しているドメインはHTTPSが強制され、自動的にHSTS Preloadに登録されます。これにはセキュリティ的なメリットもありますし、ブログなんかを書く場合はGoogleからの評価的にお得です。HSTSなんか自分で設定するの面倒ですからね。

サーバーで HTTPS を有効にする | Articles | web.dev
サーバーで HTTPS を有効にすることは、ウェブページを保護するうえで不可欠です。

ChromeでもHTTPSでの接続が優先され、HTTPでの接続前にユーザーに警告が表示されるようになりました。

知る/活用する | JPDirect
JPDirectからドメイン名お申し込み方法の変更やサービスの変更、障害情報、メンテナンススケジュール等のお知らせをご案内いたします。 | JPDirect

ということで、買ってみるならGoogleのドメインは面白いからおススメしたいよ~ってことでした。


逆に売られているからと言って購入ができるわけじゃないドメインもあります。

.co.jpなどは有名ですが、個人ではそんなドメイン面白くもありません。.bankや.pharmacyなどです。面白ドメインかと思いきや利用用途が本当の銀行や薬局の身になっており、実質的に個人での所有は不可能です。気をつけるほどでもないですが、頭の片隅にでも置いといてください。

Ghost Proにカスタムドメインを設定する

Ghost Proはマネージドサービスなので、最初っからghost.ioというドメインでアクセスが可能です。そこにカスタムドメイン(つまりあなたのドメイン)を追加するということで、ghostの管理するサーバーとあなたのドメインを紐づけることになります。

Adding a custom domain
Make your site memorable and easy to find with a branded custom domain.

カスタムドメインを追加する- Ghost公式ドキュメント

私はCloudflareからドメインを購入しましたので、以下のインストラクションに従います。なお、ブログなどではwwwなどのサブドメインを利用することが一般的です

Cloudflare domain setup
Learn how to setup a custom domain with Ghost(Pro) and Cloudflare.

CloudflareではDNSのほかにCDNとしての側面もありますが、今回はDNSだけを利用します。

Ghost ProはCDNにFastlyを使っていますので、Cloudflare側ではCDNを使う必要はありません。というか、何も考えずプロキシ機能を有効化してしまうとエラーで画像なんかが読み込めなくなったりします。

Does Ghost(Pro) support other CDN providers?
Using other CDNs on top of Ghost(Pro) infrastructure is not supported.

2025/03/06追記

CloudflareのProxyを有効にすると画像が読み込めなくなるとしていましたが、「Scrape Shield」の「Hotlink の保護」が有効化されていたためでした。ghostはsakashita.pageの下にある画像ファイルを管理画面ghost.ioから読み込もうとするため画像が表示されないだけでした。

これはいわゆる「直リンク」の禁止をするための機能です。

Hotlink Protection · Cloudflare Web Application Firewall (WAF) docs
Hotlink Protection prevents your images from being used by other sites, which can reduce the bandwidth consumed by your origin server.

したがって「Scrape Shield」の「Hotlink の保護」 を無効化することで普通に使えます。「直リンク」を許可したくない場合は、ルールから細かく設定をすることもできますが、めんどくさいのでオフにしました。

ただ、カスタムドメインの登録時にはGhostのシステムが確認をとれなくなるので、登録の時だけProxyをオフにし、登録出来たらProxyをオンにすれば問題ありません。

追記終わり


Cloudflareの管理画面からDNSのメニューを開きます。

DNSの設定画面で以下のようにレコードを追加します。

サブドメイン DNS 設定

レコードタイプ ホスト プロキシ状態
CNAME www [subdomain].ghost.io DNSのみ
A @ 178.128.137.126 DNSのみ

このときプロキシをオフにする(雲マークを灰色にする)ことが重要です。

Ghostのカスタムドメインセットアップ画面に行き、ドメインのことを入力し、ActivateをクリックしたらGhostがシステムのほうから設定を自動的に確認してくれます。

たまに確認がうまくいきません。半日以上待ってからもう一度GhostのほうでActivateするとうまくいきます。焦らないで安心してください。

Apexドメインへのアクセスをwwwサブドメインへとリダイレクトする

Apexドメイン、ルートドメインやネイキッドドメインなどと呼ばれますが、ここに来るアクセスをwwwなどのサブドメインへとリダイレクトすることがCloudfalreでは簡単にできます。
昔であればNginxなどでちまちま書いていたのですが、Cloudflareをつかうことで、データセンターをルーターと見立てることができて便利です。

公式フォーラムを見てみます。

https://community.cloudflare.com/t/deprecated-redirect-example-com-to-www-example-com/78348

するとモデレーターの方が以下のようなコメントを残しているので、リンクをたどります。

This tutorial is deprecated in favour of Single Redirects — Example rules · Cloudflare Rules docs

と、いうことでリンクをたどりますと、公式ドキュメントへとたどり着きます。

Redirect from root to WWW · Cloudflare Rules docs
Create a redirect rule to forward HTTPS requests from the root (also known as the “apex” or “naked” domain) to the WWW subdomain.

どうやら以前、自分で必要な項目をフィールドに埋めていた設定画面がRulesに統一され、ぽちぽちボタンをクリックしていくだけで設定ができるようになったようです。

丁寧にガイドが書かれていますので、この公式ドキュメントを参考に手順をすすめていきます。

「ルール」から「テンプレート」を見ていくと「ルートから WWW にリダイレクト」とあります。

デプロイをしようとすると、Cloudflare内でリダイレクトをするためのプロキシがApexドメインにありませんと出ます。

要するにCloudflareに来たApexドメインへのアクセスを内部でごにょごにょするための設定が必要ということです。

具体的な設定はDNSのAレコードまたはAAAAレコード、CNAMEレコードにプロキシを設定するということです。
どれに設定をしても全く同じですので好きなものを選べばいいです。
(一応気になる人向けですが、AレコードはIPv4アドレスの指定用、AAAAレコードはIPv6アドレスの指定用、CNAMEはDNSでの「リンク」です。)

私は特に理由はないですが、なんとなくAAAAレコードを選びました。

AAAAレコードを選んだ場合は100::を指定します。Aレコードを選んだ場合は192.0.2.1を指定します。CNAMEレコードを選んだ場合は、自分のサブドメインを指定します。

Proxy status · Cloudflare DNS docs
While your DNS records make your website or application available to visitors and other web services, the Proxy status of a DNS record defines how Cloudflare treats incoming DNS queries for that record.

下に行って設定を完成させて終わりです。


おまけ

.pageドメインのHSTS設定項目はどうなっているのか?

CloudflareではHSTSの設定が管理画面からポチポチするだけでできるようになっているのですが、.pageなどのドメインでは(多分googleが)勝手に登録してくれるので設定が不要です。Cloudflareからではどう見えるんだろうなあと気になったので、設定画面を見てみます。

普通に設定項目がありますし、そもそも有効になっていませんね……

有効にしておきましょう。

どうやら.pageドメインではHSTS Preloadへ自動的に登録されるってことなようです。HSTS自体は自分でセットアップしてくださいってことのようですね。

実際にHSTS Preloadへの登録申請を行うページで私のドメインがどうなっているのか見てみます。

HSTS Preload List Submission

ここで申請を行います

ということで、下のほうにあるドメインのPreload状況を確認してみると......

HSTS Preload List Submission

実際の結果を見たい方はこちら......

問題なく登録されていることがわかります。まあ、各ドメインを登録しているというより、まるっと.pageドメインが登録されているのでしょう。

サイトにhttpでアクセスしてみる

Cloudflareではhttpをhttpsでリダイレクトする設定になっていても、HSTS Preloadに登録していない限り、リダイレクト前にブラウザがHTTPでの接続と警告をユーザーに表示します。.pageなどを利用しているドメインではHSTS Preloadに勝手に登録されるはずなので、httpでアクセスしても勝手にhttpsの接続に切り替わるはずです。というかhttpでの接続が不可能なはずです。

ブラウザのアドレス欄に私のサーバーのドメインをhttpで入力して実験してみます。

私の場合、サブドメインであるwwwへリダイレクトをしているため以下のように接続が切り替わるはずです。

  1. ブラウザに http://sakashita.page を入力してエンター
  2. .page ドメインは HSTS Preload に登録されているため、ブラウザが 自動的に HTTPS へ切り替えて https://sakashita.page へアクセスを試みる
  3. DNS で名前解決を行い、Cloudflare のサーバーへ到達
  4. Cloudflare は Apex ドメイン(sakashita.page へのアクセス)に対し、www サブドメインへのリダイレクトを返す(例えば 301)
  5. ブラウザが https://www.sakashita.page へアクセスし直す
  6. 再度 DNS を引いて Cloudflare に接続
  7. Cloudflare が裏で Ghost のサーバーにプロキシし、最終的にブラウザにコンテンツが表示される

実際にアクセスしてみると、上で仮定したようにうまく接続されます。

やったね!!


これでCloudflareとGhost Proを組み合わせたカスタムドメインの設定からリダイレクトまで、できたとおもいます。
Ghostを使っている人は多くはないと思うのですが、参考になればうれしいです。ぜひご自身のブログ運営スタイルに合わせて試してみてください。それでは、快適なウェブを!