概要
GitHub Pages に独自ドメインを割り当てるための最短手順と、レジストラ・レジストリ・権威DNS・NSレコードなどの用語関係を図解で整理。初心者でも“どこで何を設定するか”がわかるようにまとめました。
この記事は匿名の個人メモです。 例として
example.com/www.example.comとusername.github.ioを使用します。
0. まず結論(最短手順)
GitHub Pages に独自ドメインをつなぐ最小セットはこれだけ:
GitHub(リポジトリ → Settings → Pages)で Custom domain に
example.comを保存(CNAMEファイルが自動作成される場合あり)。DNS(権威DNSの管理画面)でレコードを追加:
Apex(
example.com) … A を4件1 2 3 4A 185.199.108.153 A 185.199.109.153 A 185.199.110.153 A 185.199.111.153ApexにCNAMEは置けません。
www(
www.example.com) … CNAME をusername.github.ioに向ける(末尾ドット不要)。
HTTPS を有効化(GitHub Pages の Enforce HTTPS をON)。
→ 反映後、example.com / www.example.com のどちらでも Pages サイトに到達します。
1. 用語の整理:誰が何をしている?
- Registrant(登録者) … あなた。ドメインの所有者。
- Registrar(レジストラ) … ドメインの“販売・窓口”。例:お名前.com, Route 53 Domains, Cloudflare Registrar など。
- Registry(レジストリ) … TLD を運用する主体。例:
.comの Verisign、.jpの JPRS。.com」や「.net」「.jp」などのトップレベルドメイン毎に1つのみ存在する一番上位の機関をいいます。 - Authoritative DNS(権威DNS) … そのドメインの最終的な答え(A/AAAA/CNAME/MX/TXT…)を返すDNS。例:
01–04.dnsv.jp(お名前.com DNS)、Cloudflare DNS、Route 53 Hosted Zone など。 - Recursive Resolver(再帰DNS) … 8.8.8.8 / 1.1.1.1 など。クライアントの代わりに辿って答えをキャッシュしてくれる。
- NSレコード(Name Server) … 「このドメインの権威DNSはどれか」を親ゾーンに教える“委任”情報。
- DSレコード … DNSSEC を使う場合、親ゾーンに登録する検証用情報。
ポイント:レジストラは必ずしも自社DNSを提供するわけではありませんが、多くは権威DNSサービスも提供しています(お名前.comの
dnsv.jpなど)。一方、Cloudflare や Route 53 は「レジストラ機能」も「権威DNS」も提供可能です。
2. 名前解決の全体像(ざっくり図解)
- NSレコードは「どこに聞くか」を指す案内板。A/AAAA/CNAMEといった中身の答えは権威DNSが持っています。
- 複数のAレコードを返した場合、どのIPに接続するかはクライアント側(OS/ブラウザ)の実装次第(順番に試す・並行接続・失敗時切替など)。
3. GitHub Pages × 独自ドメイン:具体手順
3.1 GitHub 側の設定
- リポジトリ → Settings → Pages → Custom domain に
example.comを保存。 - Enforce HTTPS をON(Let’s Encrypt による証明書が自動発行)。
3.2 DNS 側の設定(権威DNSの画面)
- Apex(
example.com):A を4件、可能なら AAAA も4件(上記一覧を転記) - www(
www.example.com):CNAME →username.github.io - ApexにCNAMEは不可。もし DNS が ALIAS / ANAME をサポートしているなら、それを
username.github.ioに向けてもOK(提供事業者による)。
3.3 反映確認(dig 例)
| |
4. よくある疑問と注意点
Q1. Aレコードは1つでも動く?
動くことはありますが、4つ全部(`185.199.108.153–111.153`)を入れるのが実務推奨。Q2. “浸透待ち”って何?
再帰DNSのキャッシュTTLが更新されるのを待つこと。数分〜数時間、場合によっては24–48時間程度。Q3. `www` にも A/AAAA を入れていい?
推奨しません。 `www` は CNAME → `username.github.io` のみ。Q4. Apex に CNAME を置けないのはなぜ?
DNS仕様上、ゾーンの頂点にCNAMEを置くと他レコードと両立できません。代替は A/AAAA か、DNS事業者の ALIAS/ANAME。Q5. NS はどこで決まる?
レジストラの管理画面で設定し、レジストリ(例:`.com`=Verisign)へ登録されます。5. 役割の違いをもう一度(誤解しがちなポイント)
- レジストラ … レジストリに NS(+DS) を登録する“窓口”。
- レジストリ … 親ゾーンに NS(委任) を掲載。A/AAAA/CNAME等は保持しない。
- 権威DNS … A/AAAA/CNAME/MX/TXT…の最終回答を返すサーバー群。
6. 仕上げチェックリスト(コピペ用)
- GitHub → Pages → Custom domain に
example.com - Enforce HTTPS ON
- Apex に A ×4(185.199.108.153〜111.153)
- Apex に AAAA ×4(
2606:50c0:8000::153〜::8003::153)※対応時 -
wwwに CNAME →username.github.io - (任意)CAA
letsencrypt.org -
digで NS / A / AAAA / CNAME を確認
以上。この記事の手順をそのまま置換すれば、Hugo/静的サイトでも数分で独自ドメイン化できます。
あらためて、設定例をまじえて手順をまとめます。
7 GitHub Pagesとお名前.comの最終設定手順
1. GitHub Pages 側の設定
- GitHubリポジトリの Settings → Pages へ移動します。
- 「Custom domain」にあなたの独自ドメイン(例:
example.com)を入力します。 - 「Enforce HTTPS」にチェックを入れます。
- GitHubが自動的に Let’s Encrypt 証明書を発行します。
2. お名前.com側のDNSレコード設定例
お名前.comのDNSレコード設定で、以下のように登録します。
(TTLや優先度はデフォルト値のままで問題ありません。)
| ホスト名 | TYPE | TTL | VALUE | 備考 |
|---|---|---|---|---|
| example.com | NS | 86400 | 01.dnsv.jp | ネームサーバ |
| example.com | NS | 86400 | 02.dnsv.jp | ネームサーバ |
| example.com | NS | 86400 | 03.dnsv.jp | ネームサーバ |
| example.com | NS | 86400 | 04.dnsv.jp | ネームサーバ |
| example.com | A | 3600 | 185.199.108.153 | GitHub Pages Aレコード |
| example.com | A | 3600 | 185.199.109.153 | GitHub Pages Aレコード |
| example.com | A | 3600 | 185.199.110.153 | GitHub Pages Aレコード |
| example.com | A | 3600 | 185.199.111.153 | GitHub Pages Aレコード |
| www.example.com | CNAME | 3600 | username.github.io | GitHub Pages CNAME |
🔁 補足:
username.github.ioの部分は、自分のGitHub Pages用URLに置き換えてください。
3. 注意点
- 設定変更後、反映までに最大で 24時間 ほどかかる場合があります。
- HTTPS有効化がうまくいかない場合は、GitHub Pagesのドメイン設定を削除 → 再登録 すると解決することがあります。
wwwサブドメインを使う場合は CNAME、ルートドメイン(例:example.com)を使う場合は Aレコード を設定します。
4. まとめ
| 項目 | 設定内容 |
|---|---|
| 独自ドメイン | お名前.comなどで取得 |
| DNS設定 | GitHub Pages推奨A/CNAMEを登録 |
| HTTPS | GitHub Pagesで自動発行(Let’s Encrypt) |
| 所要時間 | 数時間〜1日で反映完了 |
