カスタム ドメインを接続する

Firebase Hosting では、ブランドを象徴する独自のドメイン名の使用をあきらめる必要はありません。Firebase でホストされるサイトには、Firebase で生成されるドメインの代わりに、example.comapp.example.com といったカスタム ドメインを使用できます。

Firebase Hosting は、ドメインごとに SSL 証明書をプロビジョニングし、グローバル CDN 経由でコンテンツを提供します。

カスタム ドメインを接続する方法を、以下で紹介します。

Hosting のドメインを設定する

プロジェクトの Firebase Hosting ページで [使ってみる] ウィザードが完了していて、Firebase プロジェクト内に Firebase Hosting サイトがあることを確認してください。

ステップ 1: カスタム ドメインを追加する

  1. プロジェクトの Hosting ページで、カスタム ドメインを接続するためのウィザードを開始します。

    • Hosting サイトが 1 つしかない場合は、[カスタム ドメインを追加] をクリックします。
    • 複数の Hosting サイトがある場合は、目的のサイトの [表示] をクリックしてから、[カスタム ドメインを追加] をクリックします。
  2. Hosting サイトに接続するカスタム ドメイン名を入力します。

  3. (省略可)カスタム ドメインのすべてのリクエストを 2 番目に指定されたドメインにリダイレクトするチェックボックスをオンにします(example.comwww.example.com を同じコンテンツにリダイレクトします)。

  4. [続行] をクリックして DNS レコードを構成し、カスタム ドメインの設定を完了します。

ステップ 2: カスタム ドメインを設定する

[ドメインを接続] 設定ウィザードで要求された場合は、apex ドメインを確認します。

以下の手順により、ドメインが Firebase プロジェクトにリンクされていないことと、指定したドメインを自分が所有していることを確認できます。

  1. ドメイン プロバイダのサイトで、DNS 管理ページを探します。

  2. 次のように入力して、新しいレコードを追加して保存します。

    • タイプ: TXT レコードを追加します。

      Firebase Hosting では、ドメインの所有者であることを証明し、サイトの SSL 証明書の割り当てと更新を Firebase で承認するために、この TXT レコードを常に DNS 設定で保持する必要があります。

      ドメイン プロバイダによっては、「レコードタイプ」といった用語を使用している場合があります。

    • ホスト: Apex ドメインキーを入力します。

      Apex ドメインまたはルートドメインの所有者であることと、そのすべてのサブドメインの所有権があることを証明します。

      ドメイン プロバイダによっては、「ホスト名」、「名前」、「ドメイン」といった用語を使用している場合があります。

    • : 一意の検証値をフィールドにコピーします。

      Firebase Hosting はこの値をチェックして、ドメインの所有権を証明します。

      ドメイン プロバイダによっては、「データ」といった用語を使用している場合があります。

  3. 更新された TXT レコードが伝播されるまで最長で 24 時間かかります。伝播されたら、[確認] をクリックします。

    [キャンセル] をクリックして [ドメインを接続] ウィンドウを安全に閉じ、後で再度開くことができます。この操作はレコードの伝播時間に影響しませんが、ウィンドウを再度開くときにドメイン名の再入力が要求されます。

    伝播するのに十分な時間が経過したら、Firebase コンソールの [ドメインを接続] ウィンドウで [確認] をクリックして、SSL 証明書のプロビジョニング プロセスを開始できます。

    ほとんどの場合、レコードの伝播とドメインの検証は数時間以内に行われます(ドメイン プロバイダによって異なります)。TXT レコードを追加するための詳細な手順と伝播時間については、ドメイン プロバイダのドキュメントをご覧ください。

    [確認] をクリックしてエラー メッセージが表示される場合は、レコードが完全に伝播されていないか、値が正しくありません。

Firebase コンソールの [カスタム ドメインを追加] ウィザードで、[クイック セットアップ] または [詳細設定] を選択します。

[クイック セットアップ] は、現在トラフィックを受信していない新しいドメインや、別の Hosting サイトから転送しようとしているドメインに使用できます。詳細設定は、すでに別のホスティング プロバイダでリクエストを受信しているドメインがあり、ゼロ ダウンタイムでの移行が必要な場合に使用できます。

[詳細設定] ウィザードを使用すると、SSL 証明書と所有権申し立てを確立し、トラフィックを受信する前に Hosting がドメインのトラフィックを提供できるようになります。

クイック セットアップ

  1. Firebase コンソールの [カスタム ドメインを追加] ウィザードに、ページが Firebase Hosting を指すように更新する必要がある不可欠なレコードが表示されます。次の入力を使用して、DNS プロバイダでドメインに対するレコードの追加、削除、保存を実行します。
    • タイプ: 指定した DNS レコードを追加します。
    • ホスト: レコードのカスタム ドメインキーを入力します。
    • ホストには、コンテンツを提供するドメイン(Apex ドメインまたはサブドメイン)を指定します。

      ドメイン プロバイダによっては、「ホスト名」、「名前」、「ドメイン」といった用語を使用している場合があります。

    • : 指定された IP アドレスをレコードの値に割り当てます。
    • ドメイン プロバイダによっては、「データ」、「ポイント」、「コンテンツ」、「アドレス」、「IP アドレス」といった用語を使用している場合があります。

  2. SSL 証明書がプロビジョニングされるのを待ちます。 DNS が Firebase Hosting を指定するよう設定してから、最大で 24 時間かかる場合があります。ほとんどの場合、レコードの伝播と SSL 証明書のプロビジョニングは数時間以内に行われます(ドメイン プロバイダによって異なります)。

詳細設定

[カスタム ドメインを追加] ウィザードの [詳細] 設定モードを使用すると、トラフィックをサーバーに転送する前にドメインを安全に提供するように Hosting を構成できます。一般に、Hosting がドメインのトラフィックを正常に処理するには、次の 3 つが必要です。

  • 所有権レコード: TXT レコードは、ドメイン上でサービスを提供するサイトを Hosting に指示します
  • SSL 証明書: Hosting サーバーとエンドユーザー間で暗号化された通信を使用可能にするドメイン固有の証明書
  • Hosting IP レコード: ドメインに対するすべてのリクエストを Hosting サーバーに転送する 1 つ以上の A レコードと AAAA レコード

[詳細] 設定では、Hosting が最初の 2 つの要件を事前に処理できるようにドメインを構成する手順が示されています。これにより、ドメインのトラフィックの受信を開始する前に適切なコンテンツを提供できるようになります。このウィザードでは、このプロセスを 2 段階のワークフローとして表現します。

  1. ドメインの準備
    • DNS レコードの更新: ドメインにレコードを 1 つ以上追加します。
      • 所有権:「hosting-site=[site_id]」の形式の TXT レコード。
      • CAA(省略可): Hosting認証局がドメインの SSL 証明書を作成できるようにする CAA レコードのペア。Hosting が証明書のプロビジョニングの妨げとなる既存の CAA レコードを検出した場合にのみ表示されます。
    • SSL 証明書を設定: このウィザードは、Hosting の認証局がドメインの SSL 証明書を作成する際に使用する ACME チャレンジを提供します。DNS または HTTP チャレンジを選択できます。
      • DNS チャレンジ: ドメイン プロバイダの DNS 管理サイトにアクセスします。ACME チャレンジ サブドメインのキーと指定された値を使用して、TXT レコードを追加します。TXT レコードが伝播されるまで最大で 24 時間かかります。
      • HTTP チャレンジ: 指定したテキスト ファイルを指定した URL にある既存のサイトにアップロードして、ファイルがアップロードsれたかを確認します。
    • Hosting は CA からの確認をリクエストする前に、ACME チャレンジ自体の検証を試みます。断続的なサービスの問題など、なんらかの理由で CA がチャレンジの検証に失敗した場合、Hosting は新しい一連のチャレンジの生成が必要になります。検証に成功した後、Hosting が SSL 証明書をプロビジョニングし、変更が反映されるまでに数時間かかることがあります。

  2. Hosting の誘導先
  3. Hosting がドメインの所有権を確立して SSL 証明書をプロビジョニングしたら、DNS プロバイダに戻って、Hosting にリクエストを転送する DNS A/AAAA レコードを追加します。

    • タイプ: リクエストされた DNS A/AAAA レコードを追加します。
    • ホスト: 両方のレコードのカスタム ドメインキーを入力します。

      ホストには、コンテンツを提供するドメイン(Apex ドメインまたはサブドメイン)を指定します。ドメイン プロバイダによっては、「ホスト名」、「名前」、「ドメイン」といった用語を使用している場合があります。

    • : 各 DNS A/AAAA レコードに値を割り当てて、ドメインが指定された IP アドレスを指すようにします。

      ドメイン プロバイダによっては、「データ」、「ポイント」、「コンテンツ」、「アドレス」、「IP アドレス」といった用語を使用している場合があります。

SSL 証明書のプロビジョニングを待機する

ドメイン所有権の確認が済むと、ドメインの SSL 証明書がプロビジョニングされ、DNS A レコードが Firebase Hosting を指すようになってから 24 時間以内に、グローバル CDN にデプロイされます。

ドメインは、FirebaseApp SSL 証明書にサブジェクト代替名(SAN)の 1 つとして表示されます。この証明書はブラウザのセキュリティ ツールを使って表示できます。ドメインのプロビジョニング中は、ドメイン名が記載されていない無効な証明書が表示されることがあります。これは、通常プロセスの一部であり、ドメインの証明書が入手可能になると解決します。

詳細設定の場合、プロジェクトの Firebase Hosting ページ設定ステータスが [接続されています] に更新されるまで、ウェブサイトは以前のホスティング プロバイダでホストされます。

カスタム ドメインキー

DNS レコードの追加または編集時に DNS 管理サイト内の [ホスト] フィールドに入力する値は、ドメイン プロバイダごとに異なります。以下に、よく利用されるプロバイダの一般的な入力情報をまとめました。詳細な手順については、ドメイン プロバイダのドキュメントをご覧ください。

ドメイン タイプ カスタム ドメインキー
Apex ドメイン

一般的な入力情報:

  • @
  • Apex ドメイン名(example.com など)
  • [ホスト] フィールドは空白のままにする
サブドメイン

一般的な入力情報:

  • 完全なサブドメイン名(app.example.com など)
  • サブドメイン部分のみ(app のみで .example.com は除外)
  • www.example.com のサブドメインには www のみ

一般的なドメイン プロバイダ

一般的なドメイン プロバイダと、それぞれに必要な入力の種類は次のとおりです。この情報は可能な限り最新の状態に保たれますが、詳しい手順についてはドメイン プロバイダのドキュメントをご覧ください。

タイプ ホスト
DNS TXT レコード入力
TXT example.com Firebase コンソールで提供される検証値
DNS A レコード入力
A example.com 199.36.158.100
A www 199.36.158.100
タイプ ホスト
DNS TXT レコード入力
TXT example.com Firebase コンソールで提供される検証値
DNS A レコード入力
A example.com 199.36.158.100
A www 199.36.158.100
タイプ ホスト
DNS TXT レコード入力
TXT @ Firebase コンソールで提供される検証値
DNS A レコード入力
A @ 199.36.158.100
A www 199.36.158.100
タイプ ホスト
DNS TXT レコード入力
TXT @ Firebase コンソールで提供される検証値
DNS A レコード入力
A @ 199.36.158.100
A www 199.36.158.100

カスタム ドメインのステータスの説明を設定する

ステータス 説明
設定が必要です

DNS レコードを使った構成の変更が必要な場合があります。

  • ほとんどの場合、DNS A レコードはドメイン名プロバイダから Firebase Hosting サーバーに伝播されていません。
    トラブルシューティングのヒント: 24 時間以上経過している場合は、レコードが Firebase Hosting を指していることを確認してください。

  • ごくまれに、特に詳細設定のフローを使用している場合は、以下の理由で SSL チャレンジが失敗する可能性があります。

    • SSL 証明書チャレンジが失敗し、トークン(サイトに提供された DNS TXT レコードまたはアップロードされたファイル)が無効になりました。
      トラブルシューティングのヒント: ドメインの [表示] をクリックしてから、既存のドメインに新しいトークンを入力します。
保留中

カスタム ドメインを正しく設定しましたが、Firebase Hosting は SSL 証明書をプロビジョニングしていません。

たまに次の問題によって、カスタム ドメインの SSL 証明書の作成が滞ることがあります。

  • CAA レコードの制限が厳しすぎます。
    トラブルシューティングのヒント: 認証局「letsencrypt.org」と「pki.goog」で、ドメインでの SSL 証明書の作成が許可されていることを確認してください。
  • チャレンジ コードが無効です。
    詳細設定のフローを使用していて、移行に失敗した場合、トークン(およびそのチャレンジ コード)は無効になります。
    トラブルシューティングのヒント: ドメインの [表示] をクリックしてから、既存のドメインに新しいトークンを入力します。
  • リクエストした証明書のサブドメイン数が多すぎます。
    トラブルシューティングのヒント: SSL 証明書の作成制限により、Firebase Hosting では一般に、1 つの Apex カスタム ドメインあたりのサブドメイン数を 20 以下にすることが推奨されます。
証明書を作成中

ドメインの SSL 証明書を作成しています。

接続済み

カスタム ドメインには適切な DNS レコードがあり、SSL 証明書があります。
自分のサイトのコンテンツを提供できます。