GitHub PagesからGitLab Pagesに移行してみた
なぜだかCloud Flareで発行した証明書から自分のドメインが消えてしまうという謎の事象を解決できなかったのもあって、自前のSSL/TLS証明書を設定できるGitLab Pagesにブログを移行した。
基本的な設定は置いておいて、独自ドメインの設定とSSL/TLS証明書の設定方法のメモ。
DNSの設定
お名前.comの管理画面でDNSのAレコードをGit LabページのIPアドレス(52.167.214.135)に向けておく。
Let’s EncryptでSSL/TLS証明書を設定する
Let’s Encryptをダウンロードして証明書を発行していきます。
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto certonly --agree-tos -a manual -d gyoza.beer
FATAL: macOS support is very experimental at present...
if you would like to work on improving it, please ensure you have backups
and then run this script again with the --debug flag!
Alternatively, you can install OS dependencies yourself and run this script
again with --no-bootstrap.
MacはExperimentalらしく、初回コマンド実行時はエラーになるので、--debug
オプションをつけて実行する。
(3回目からはオプションなくても良いみたい)
$ ./letsencrypt-auto certonly --agree-tos -a manual -d gyoza.beer
コマンドの実行結果の中に以下のようなのが出力される。後で指定されたURLで値を返すように設定しないといけないのでメモっておく。
Make sure your web server displays the following content at
http://gyoza.beer/.well-known/acme-challenge/MVcYbRe68R9_hMc8hGGl1bGh3dOXP0qjYf9vO8D8M40 before continuing:
MVcYbRe68R9_hMc8hGGl1bGh3dOXP0qjYf9vO8D8M40.6w_jWE2mP9CxdvJca7dEsHUCF_JEu2f5uP3ZLVuW3hg
GitLabにSSL/TLS証明書を設定
発行された証明書をGitLab PagesのSettings->Pagesから設定します。
$ sudo cat /etc/letsencrypt/live/gyoza.beer/fullchain.pem | pbcopy
$ sudo cat /etc/letsencrypt/live/gyoza.beer/privkey.pem | pbcopy
それぞれCertificate(PEM), Key(PEM)に貼り付けます。
.gitlab-ci.ymlの設定
Gitlab PagesのHugoのサンプルプロジェクトの.gitlab-ci.ymlを参考に作成します。
先ほど証明書生成時にのログに出てきたacme-challengeのファイルを作成して、public下の所定のフォルダへコピーするようにしてみました。
image: alpine
before_script:
- bin/hugo version
test:
script:
- bin/hugo
except:
- master
pages:
script:
- bin/hugo
- mkdir -p public/.well-known/acme-challenge
- cp content/.well-known/acme-challenge/MVcYbRe68R9_hMc8hGGl1bGh3dOXP0qjYf9vO8D8M40 public/.well-known/acme-challenge
artifacts:
paths:
- public
only:
- master
これで移行できました。
ただ、GitLab Pageは独自にHTTPヘッダーを記述できていないので、以前に設定したHSTSが効かなくなってしまいました。
GitLabにIssueが上がってたので、+1しときました。そのうち対応してくれないかな。