Date: 2018-05-05
Tags: sphinx, netlify, 静的サイトホスティング

Netlify - 静的サイトホスティングを試してみた

Netlify で静的サイトを自動ビルドしてホスティングできるというのを聞いたので、やってみました。

Netlifyでできること

https://www.netlify.com/features/ に書いてある。興味を惹いたのだけメモ。

  • ソースリポジトリ連携: GitHub, GitLab, Bitbucket と連携。Privateリポジトリも可能

  • Automate deployment: 自動デプロイが組み込み

  • Custom Domain: 無料のカスタムドメイン

  • HTTPS: 無料のHTTPS

  • Functions: AWS Lambda でバックエンド処理ができるらしい

  • Identity: サイトにアクセス制御を追加!ただしJWTで提供

  • Site Password: サイト全体にパスワード制御。チームプランのみ 45ドル/月~

Sphinxデプロイまでの手順

  1. リポジトリ用意

  2. Netlify Sign up

    https://www.netlify.com/ の右上からGitHub OAuthでサインアップした

  3. GitHubリポジトリと接続

    https://app.netlify.com/ から New site from Git で接続した

    ../../_images/connect-repo.png

    Create new site -- Netlify

  4. 自動的にビルドされた

    • ビルドログ

    • デプロイされたページ: epic-boyd-bd3d84.netlify.com/ (URL変えたのでこれはもう見えない)

  5. ドメイン設定

とりあえずできました。

../../_images/netlify-sphinx-trying.png

あとはGitHubにPushすれば自動的にビルドされる。

Sphinxに限らず、静的サイトを楽にビルドしてホスティングしたい場合、だいぶ便利な感じでした。

パスワードアクセス制御

パスワードアクセス制御をしたいモチベーションては、秘密のコンテンツを特定の人にだけ見せる仕組みが欲しい。例えばSphinxで執筆・翻訳中の本なんかをプライベートリポジトリで管理して、自動ビルドしたものを特定の人にだけ共有したい。VPS等で自動ビルドしてBASIC認証かける程度で良いのだけど、セットアップして保守するのが面倒なので簡単な仕組みが欲しい。

Netlifyの Identity で出来るかな?と思ったけど、ちょっと厳しそう。 GoTrue による認証バックエンドと、JSの認証Widgetが提供されていて、認証するとJWTが発行される。これを使って認証したときだけサイトを見せれば良さそうだが、サイトに組み込む必要がある。NetlifyにはIdentityの利用例として Netlify CMS が紹介されている。Sphinxのような静的サイトジェネレータの場合、認証された場合だけページを見せるように 頑張って 組み込まないといけなくて厳しい。

Netlifyにはもうひとつ、 Site Password というサイト全体にアクセス制限を設定する機能もあるけど、これはチームプランのみ。 45ドル/月~ なのでカジュアルに使うにはちょっと厳しいお値段。