本記事では、Cloudflare で管理しているカスタムドメインを Vercel プロジェクトに設定する方法を解説します。2 つの設定方法と、それぞれのメリット・デメリットを詳しく説明します。
前提条件
- Cloudflare でドメインを管理している(例:
linto.dev) - Vercel にプロジェクトがデプロイ済み
- Vercel アカウントを持っている
設定方法の選択
Vercel にカスタムドメインを設定する方法は 2 つあります:
| 方法 | 概要 | メリット | デメリット |
|---|---|---|---|
| 方法 1: Cloudflare DNS を維持 | Cloudflare の DNS を使い続ける | Cloudflare の機能(CDN、WAF など)を利用可能 | Preview Deployment Suffix が使えない |
| 方法 2: Vercel Nameservers に移行 | DNS を Vercel に移管 | Preview Deployment Suffix が利用可能 | Cloudflare の機能が使えなくなる |
どちらを選ぶべきか
- Preview Deployment Suffix が必要な場合 → 方法 2(Vercel Nameservers)
- Cloudflare の CDN/WAF/DDoS 保護が必要な場合 → 方法 1(Cloudflare DNS)
- シンプルに設定したい場合 → 方法 1(Cloudflare DNS)
方法 1: Cloudflare DNS を維持する設定
Cloudflare の DNS を使い続けながら、Vercel にドメインを接続する方法です。
ステップ 1: Vercel でドメインを追加
- Vercel ダッシュボード にログイン
- プロジェクトを選択
- Settings → Domains に移動
- Add をクリック
- ドメイン名(例:
linto.dev)を入力して Add をクリック
ステップ 2: DNS レコード情報を確認
ドメインを追加すると、Vercel が必要な DNS レコード情報を表示します:
Apex ドメイン(例: linto.dev)の場合:
Type: A
Name: @
Value: 76.76.21.21サブドメイン(例: www.linto.dev)の場合:
Type: CNAME
Name: www
Value: cname.vercel-dns.comNote: CNAME の値はプロジェクトごとに異なる場合があります。Vercel ダッシュボードに表示される値を使用してください。
ステップ 3: Cloudflare で DNS レコードを設定
- Cloudflare ダッシュボード にログイン
- 対象のドメイン(例:
linto.dev)を選択 - DNS → Records に移動
- Add record をクリック
Apex ドメインの設定(linto.dev)
| 項目 | 値 |
|---|---|
| Type | A |
| Name | @ |
| IPv4 address | 76.76.21.21 |
| Proxy status | DNS only(オレンジの雲をクリックしてグレーに) |
| TTL | Auto |
www サブドメインの設定(www.linto.dev)
| 項目 | 値 |
|---|---|
| Type | CNAME |
| Name | www |
| Target | cname.vercel-dns.com |
| Proxy status | DNS only(グレーの雲) |
| TTL | Auto |
重要: Proxy status を「DNS only」にする理由
Cloudflare のプロキシ(オレンジの雲)を有効にすると、以下の問題が発生する可能性があります:
- SSL 証明書の競合: Vercel と Cloudflare の両方が SSL を終端しようとする
- リダイレクトループ: Cloudflare の「Always Use HTTPS」と Vercel の設定が競合
- キャッシュの問題: Cloudflare のキャッシュが Vercel の動的コンテンツをキャッシュ
Tip: Cloudflare の CDN 機能を使いたい場合は、SSL/TLS 設定を「Full (strict)」に変更し、慎重にテストしてください。
ステップ 4: Vercel で検証を確認
- Vercel ダッシュボードに戻る
- Settings → Domains で追加したドメインを確認
- ステータスが Valid Configuration になれば成功
DNS の反映には最大 48 時間かかる場合がありますが、通常は数分〜数時間で完了します。
ステップ 5: www リダイレクトの設定(オプション)
www.linto.dev から linto.dev へのリダイレクト(または逆)を設定できます:
- Vercel の Settings → Domains に移動
- リダイレクト元のドメインの Edit をクリック
- Redirect to でリダイレクト先を選択
方法 2: Vercel Nameservers に移行する設定
Preview Deployment Suffix を使用するには、ドメインの DNS を Vercel に移管する必要があります。
ステップ 1: Vercel でドメインを追加
方法 1 と同様に、Vercel でドメインを追加します。
ステップ 2: Nameservers 方式を選択
- ドメイン追加後、設定画面で Nameservers タブを選択
- Vercel が提供する Nameservers をメモ:
ns1.vercel-dns.com
ns2.vercel-dns.comステップ 3: Cloudflare から DNS レコードをエクスポート
Vercel に移行する前に、既存の DNS レコードをバックアップします:
- Cloudflare ダッシュボードで DNS → Records に移動
- Export をクリックして DNS レコードをダウンロード
ステップ 4: Cloudflare で Nameservers を変更
- Cloudflare ダッシュボードにログイン
- 対象のドメインを選択
- Overview ページで Advanced Actions → Remove site from Cloudflare をクリック
Warning: この操作により、Cloudflare のすべての機能(CDN、WAF、DDoS 保護など)が無効になります。
次に、ドメインレジストラ(Cloudflare Registrar を使用している場合は Cloudflare)で Nameservers を変更:
- Domain Registration → Manage Domains に移動
- 対象のドメインを選択
- Nameservers セクションで Edit をクリック
- Vercel の Nameservers に変更:
ns1.vercel-dns.comns2.vercel-dns.com
- Save をクリック
ステップ 5: Vercel で DNS レコードを追加
Cloudflare からエクスポートした DNS レコードを Vercel に追加します:
- Vercel ダッシュボードで Settings → Domains に移動
- ドメインをクリック
- DNS Records セクションで必要なレコードを追加
メール(MX レコード)などを使用している場合は、必ず追加してください:
Type: MX
Name: @
Value: mail.example.com
Priority: 10ステップ 6: 検証を待つ
Nameservers の変更が反映されるまで、最大 48 時間かかる場合があります。Vercel ダッシュボードでステータスを確認してください。
Preview Deployment Suffix の設定
Preview Deployment Suffix は Pro プランまたは Enterprise プランで利用可能です。
前提条件
- Vercel Pro または Enterprise プラン
- ドメインが Vercel Nameservers を使用している(方法 2)
ステップ 1: Preview Deployment Suffix を有効化
- Vercel ダッシュボードでチームを選択
- Settings → Billing に移動
- Add-Ons セクションで Preview Deployment Suffix を Enabled に設定
ステップ 2: カスタムドメインを設定
- Settings → General に移動
- Preview Deployment Suffix セクションまでスクロール
- カスタムドメイン(例:
preview.linto.dev)を入力 - Save をクリック
ステップ 3: ワイルドカード DNS レコードの確認
Vercel Nameservers を使用している場合、ワイルドカードレコードは自動的に設定されます。
設定後、Preview デプロイメントの URL は以下のように変わります:
変更前: https://my-app-git-feature-username.vercel.app
変更後: https://my-app-git-feature.preview.linto.devVercel Nameservers を使わずに Preview Deployment Suffix を使う方法
Cloudflare DNS を維持したまま Preview Deployment Suffix を使いたい場合、以下の制限付きで可能です:
ステップ 1: Cloudflare でワイルドカード CNAME を設定
Type: CNAME
Name: *.preview
Target: cname.vercel-dns.com
Proxy status: DNS onlyステップ 2: Vercel でドメインを追加
*.preview.linto.dev として追加します。
Note: この方法は公式にはサポートされておらず、動作しない場合があります。確実に動作させるには Vercel Nameservers への移行を推奨します。
トラブルシューティング
DNS レコードが反映されない
# DNS の反映状況を確認
dig A linto.dev +short
# 期待される出力
76.76.21.21反映されていない場合:
- Cloudflare の DNS レコードが正しく設定されているか確認
- TTL が過ぎるまで待つ(通常は数分〜数時間)
- ブラウザのキャッシュをクリア
SSL 証明書エラー
Cloudflare のプロキシが有効になっている可能性があります:
- Cloudflare で DNS レコードの Proxy status を確認
- DNS only(グレーの雲)に変更
- 数分待ってから再度アクセス
リダイレクトループ
Cloudflare と Vercel の両方で HTTPS リダイレクトが設定されている場合に発生します:
- Cloudflare の SSL/TLS → Edge Certificates に移動
- Always Use HTTPS を無効化
または:
- Cloudflare の SSL/TLS → Overview に移動
- Full (strict) を選択
「Domain is already in use」エラー
別の Vercel アカウントでドメインが使用されている場合に表示されます:
- TXT レコードによる所有権の検証が必要
- Vercel が表示する TXT レコードを Cloudflare に追加
- 検証完了後、ドメインが追加可能に
推奨構成
Production 環境
linto.dev → A レコード → 76.76.21.21
www.linto.dev → CNAME → cname.vercel-dns.comPreview 環境(Vercel Nameservers 使用時)
*.preview.linto.dev → Vercel が自動設定環境変数の設定
# Production
NEXT_PUBLIC_SITE_URL=https://linto.dev
BETTER_AUTH_URL=https://linto.dev
# Preview(GitHub Actions で動的に設定)
NEXT_PUBLIC_SITE_URL=https://my-app-git-feature.preview.linto.dev
BETTER_AUTH_URL=https://my-app-git-feature.preview.linto.devまとめ
| 設定項目 | Cloudflare DNS 維持 | Vercel Nameservers |
|---|---|---|
| 設定難易度 | 簡単 | やや複雑 |
| Cloudflare CDN | 利用可能 | 利用不可 |
| Cloudflare WAF | 利用可能 | 利用不可 |
| Preview Deployment Suffix | 利用不可 | 利用可能 |
| SSL 証明書 | Vercel が発行 | Vercel が発行 |
ほとんどのユースケースでは、方法 1(Cloudflare DNS を維持) がシンプルで推奨されます。
Preview Deployment Suffix を使用して Preview 環境と Production 環境間で Cookie を共有したい場合は、方法 2(Vercel Nameservers) を選択してください。