Google Domainsで取得したドメインをGitHub Pagesでホストしたサイトに割り当てる

Page content

はじめに

タイトル通りのことをやります。

ホストしているリポジトリが{username}.github.ioでもそうでない場合でも手順は変わりません。
またホストしているリポジトリがfoobarなど複数あったとして、fooリポジトリに独自ドメインを割り当ててもbarには今まで通りのURL({username}.github.io/bar)でアクセスできます。


ドメインを購入

Googleアカウントが必要です。ここではfoo.comドメインを購入したとします。


ドメイン割り当て

以下のページにアクセスし、左メニューのマイドメインからfoo.comを選択します。

左メニューのDNSを選択し、カスタムリソースレコードの設定を行います。

ここからApexドメイン(foo.com)を割り当てるか、サブドメイン(bar.foo.com)を割り当てるかで分岐します。お好みのほうをどうぞ。

Apexドメインの場合

まずgithub.ioのIPアドレスを調べます。

$ dig github.io

; <<>> DiG 9.16.1-Ubuntu <<>> github.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45149
;; flags: qr rd ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;github.io.                     IN      A

;; ANSWER SECTION:
github.io.              0       IN      A       185.199.109.153
github.io.              0       IN      A       185.199.110.153
github.io.              0       IN      A       185.199.111.153
github.io.              0       IN      A       185.199.108.153

;; Query time: 180 msec
;; SERVER: 172.18.176.1#53(172.18.176.1)
;; WHEN: Fri Nov 25 21:03:26 JST 2022
;; MSG SIZE  rcvd: 100

ANSER SECTIONに出力されているIPアドレスをすべて控えておきます。

Google Domainsのページに戻り、カスタムレコードの入力項目を以下のように設定します。

  • ホスト名 : (無記入)
  • タイプ : A
  • TTL : (そのままでOK)
  • データ : (先程のIPアドレスすべて)

ホストしているGitHubリポジトリのページに行き、Settings -> PagesからCustom domainのフォームにfoo.comと入力します。
この際、GitHub Pages公開対象のブランチのディレクトリ以下に、入力したドメインが記載されたCNAMEファイルが自動作成されます。

foo.com

サブドメインの場合

ここではサブドメインをbarとしています。お好みの英数字文字列をどうぞ。
Apexドメインの場合とは違い、IPアドレスを調べる必要はありません。
カスタムレコードの入力項目を以下のように設定します。

  • ホスト名 : bar
    • サブドメイン名だけでOK。
  • タイプ : CNAME
  • TTL : (そのままでOK)
  • データ : {username}.github.io

ホストしているGitHubリポジトリのページに行き、Settings -> PagesからCustom domainのフォームにbar.foo.comと入力します。
この際、GitHub Pages公開対象のブランチのディレクトリ以下に、入力したドメインが記載されたCNAMEファイルが自動作成されます。

bar.foo.com

おわり

数時間以内には割り当てたドメインであなたのサイトにアクセスできるでしょう。


おまけ

GitHub Pagesデプロイの自動化には、peaceiris/actions-gh-pagesが便利です。
使い方はGetting startedを見ればだいたいわかります(注意 : CNAMEファイルがデプロイ先のディレクトリに含まれるようにしましょう。)