Hugo GithubPagesで公開

Posted by ちょいハック on Monday, March 8, 2021

目次

Githubは、GithubPagesという機能があり、指定したディレクトリを公開することができます。
Publicなリポジトリだけの機能です。
この機能を使って、Hugoで作ったウェブサイトを独自ドメインで公開していきます。

出力ディレクトリを設定

Hugoで出力するディレクトリをdocsディレクトリにする必要があります。
config.tomlに以下の設定を追加することで出力先を設定できます。

publishDir = "docs"

本番用のビルド設定

Hugoではディレクトリによって、環境独自の設定を追加できます。

config
  ┣  config.toml  // デフォルトの設定
  ┣  production
  ┃    ┗  config.toml  // 本番用の設定
  ┗  development
       ┗  config.toml  // 開発用の設定

GithubPagesではサブディレクトリが公開されるので、baseurlで調整します。 以下の要領で、本番の設定をします。

baseurl = "https://example.com/repo_name/" # URL
canonifyurls = true # aタグなどのリンクを絶対パスにする場合はtrue

GoogleDomainsでドメインを取得

独自ドメインを設定したいので、取得します。 Google Domainsを使いました。
Google Domainsの特徴は以下です。

  • 全て込み(メール転送、プライバシー設定など)のシンプルな料金体系で1050[円/年]~
  • Googleの安定したインフラ
  • サブドメインの管理が簡単

私が取得したドメインは1400[円/年]でした。

GoogleDomainsの設定

GithubPagesに独自ドメインを設定する方法は2つあるようなのです。

  • Aレコード(Address Record):
    独自ドメインにIPアドレスを紐付けます。独自ドメインにアクセスした時に、指定されたIPアドレスにアクセスできるようになります。
  • CNAME(Canonical NAME):
    Canonicalは規準的なという意味です。ホスト名の別名を定義することができます。
    別名のホスト名でアクセスされた場合、正規ホスト名に転送します。

Aレコードの場合、Githubが指定しているIPアドレスを紐付けることになります。
CNAMEの場合、xxx.github.io のようなGithubのホスト名に対して、別名を設定することになります。

※ GoogleDomainsは仕様上Aレコードでしか対応できないようです。

Aレコードで指定する

https://domains.google.com/m/registrar/?hl=ja のページからAレコードを指定します。

DNSのメニューを選択すると、スクロールして下の方にカスタム リソース レコードが設定できます。
以下のURLにGithubの4つのIPアドレスが載っているので、これを設定します。 https://docs.github.com/en/github/working-with-github-pages/managing-a-custom-domain-for-your-github-pages-site#configuring-an-apex-domain

GithubPagesの設定

Githubのリポジトリから、Settings > GitHub Pagesへ行きます。 Custom domainの設定から、GoogleDomainsで取得したドメインを入力して保存します。

Https対応

Settings > GitHub PagesEnforce HTTPSのチェックを入れるだけです。 なんですが、カスタムドメイン設定直後はチェックを押せないようです。 1日程度待ってチェックを付けれるようになるようなので、ひたすら待ちましょう!