【GitLab Pages 公式 を訳してみた】GitLab Pages サーバー管理者向け説明書

法律: IT メディア 解説記事 ウェブ制作 フノス(訳者)

 

  はじめに


  この説明書は、最新のGitLab Pagesにおいて、サイトの管理者がしておくセットアップの内容を記したものです。
 GitLabの新機能につきましては、このページの後半部にある『変更点』をご覧ください。追加された機能によって、ページの設定を変更する必要が出てくる場合があります。
 

  概要

  GitLab Pagesは、GitLab Pagesデーモンというシステムで動いています。

 このシステムは、Go言語で記述された、いたって普通のHTTPサーバーです。外部IPアドレスの受付が可能なことで、独自ドメインやHTTPS証明書への対応を実現しています。
 SNIによる動的認証も利用可能。
 デフォルトの設定で、HTTP2によるページ出力がご利用いただけます。

 これらのシステムがどのような仕組みで動作しているのかについては、こちらのREADMEをご覧ください。
 

  独自ドメインを使う場合(ワイルドカードドメインは除く)、Pagesデーモンに「ポート80」あるいは「443」を受付けさせる必要があります。
 理由は以下の通りです。

  1.  GitLabのサーバー内でPagesデーモンを動作させるときに、補助IPアドレスを使えるようにするため。
  2. Pagesデーモンを単独サーバーで動作させる場合、そのサーバーをネットワークで共有するために、あらかじめPagesパス(同文中『ストレージパスを変更する』を参照)を設定する。そのパスを設定するときにポートが必要なため。
  3. GitLabサーバーでPagesデーモンを動作させる場合、同じIPアドレスに複数のポートを与えられるため。ポートを増やすと複数の通信プロキシを用意したとみなされ、ロードバランサーとしての役割を果たすようになる。(ロードバランスの方式は主にTCPとTLSの2種類がある。HTTPならびに、HTTPSと併用する場合に主流なのは TCP方式のほうで、こちらの利用を推奨する。もう1つのTLS方式の場合、ユーザーが用意したHTTPS証明書と併用できないことから、推奨されない。)


 もちろん、独自ドメインも補助IPアドレスも設置は義務ではありません。
 今回は、サイトを運営する上で最低限必要なオプションについて説明いたします。

 

  必要条件

  Pagesの設定に移る前に、今回のセッティングの大条件と大まかな工程を紹介します。

  1. GitLab Pagesのドメインを取得していること。デフォルトのドメインで結構である。(今回の説明では「example.io」を使っていく。)
  2. ワイルドカードDNSレコードを設定する。
  3. HTTPSサイトを構築する場合、ワイルドカードドメインに証明書を追加する。
  4. ランナーの共有を許可する。(推奨)
  5. 独自ドメインを使いたい場合のみ、補助IPアドレスを設定する。




 DNSレコード

  GitLab Pages では、皆さんに仮想ホストの展開を推奨しています。

 これから、みなさんのDNSサーバー/プロバイダにワイルドカードDNS Aレコードを設定しますが、ここでGitLabが動作しているホストを記入します。
 

======================
*.example.io. 1800 IN A 1.1.1.1
*.example.io. 1800 IN AAAA 2001::1
====================== 

  「example.io」はページのドメインです。
 1行目の「1.1.1.1」はIPv4アドレスで、
 2行目の「2001::1」はIPv6アドレスです。

 サイトを作るには最低限、IPv4アドレスが必要になりますが、
 IPv6においては任意での記入になります。IPv6の利用がない場合は、AAAAレコードの設定を省略しても構いません。
 

  注:実際にユーザーページを作成する時には、GitLabですでに使われているドメインを使わないようお願いします。(例:example.ioなど)理由は、後述の『セキュリティ』で紹介します。

 

  設定方法

  GitLab Pagesの設定方法には、4つの方法があります。あなたの用途に合わせて、どれにするか選んでください。
 設定は簡単なものから、難しいものまで順番に並べてあります。
 まず最低限、ワイルドカードDNSを設定しなくてはなりません。他の設定でも必ずや使うことになります。
 

  ワイルドカードドメイン

 もうお済みでしょうか?


 例示URL:http://page.example.io
 

  これから、最低限しておかなくてはならない設定を説明します。
 これ以下に説明する全ての設定で、この項目が定まっている必要があります。
 皆さんが送信したリクエストは、いったんNginxサーバーで収集されてから、GitLab Pagesデーモンに送られるようになっています。デーモンはそれ以外のところからの指示を受け付けないように設定されています。
 

  1.ディレクトリ「/etc/gitlab/gitlab.rb」でURLを認証させます。

======================
pages_external_url 'http://example.io'
======================

  2.GitLabをリセットします
 

  この設定方法のビデオチュートリアルもあります。

 

  ワイルドカードドメインにTLSを対応させる

  この設定をする前に


          が必要です。

 例示URL:https://page.example.io

  皆さんが送信したリクエストは、いったんNginxサーバーで収集されてから、GitLab Pagesデーモンに送られるようになっています。デーモンはそれ以外のところからの指示を受け付けないように設定されています。

  1. まず、証明書と暗号鍵をフォルダ「/etc/gitlab/ssl」に設置します
  2. 次に「/etc/gitlab/gitlab.rb」というフォルダで以下の設定を施します

======================
pages_external_url 'https://example.io'


pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/pages-nginx.crt"
pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/pages-nginx.key"
======================

  「etc/gitlab/ssl」以下にある、「pages-nginx.crt」「pages-nginx.key」にはそれぞれ証明書と暗号鍵が入っている。
 

  3.GitLabをリセットします

 

  少し高度な設定

  ワイルドカードドメインを設定したら、他の設定もできるようになります。
 4つのうち残り2つは、少し高度な設定です。いずれも任意で、絶対に必要というわけではありません。

 1つ目は、独自ドメインの設定方法です。これには、TLS証明書があるとなしとで少し差異があります。
 2つ目は、補助IPの設定です。こちらはIPv6とIPv4アドレスの両方をお持ちの方で、どちらかのアドレスに補助IPを与えます。
 

  独自ドメインの設定

  この設定をする前に、

          が必要です。

 例示URL:https://page.example.iohttp://domain.com

  まずは、TLS証明書がないカスタムドメインの設定方法を説明します。

 まず、「Pagesデーモンは、Nginxからの指示にしか従わないように設定されている」と述べてきましたが、独自ドメインを使う場合には、その設定を修正しなくてはなりません。

 このとき、Nginxからの指示と、外部サーバーの指示との両方に従うように修正します。
 

  1.「 /etc/gitlab/gitlab.rb」を以下のように編集する。

======================
pages_external_url "http://example.io"
nginx['listen_addresses'] = ['1.1.1.1']
pages_nginx['enable'] = false
gitlab_pages['external_http'] = ['1.1.1.2:80', '[2001::2]:80']
======================

  「1.1.1.1」とは、GitLab の主幹IPアドレスで、
1.1.1.2」並びに「2001::2(IPv6のアドレス)」はGitLab Pagesデーモンの補助IPアドレスです。
 IPv6を利用しない場合は、この補助IPアドレスの部分にIPv6のアドレスを記入しなくても構いません。
 

  2.GitLabをリセットします

 

  TLS証明書がついた独自ドメインの場合

  この設定をする前に


       が必要です。

例示URL:https://page.example.io http://domain.com
 

  ここでも、GitLab Pagesデーモンに、Nginxからの指示と、外部サーバーの指示との両方に従うよう設定を修正する点は同じです。
 ただし、独自ドメインにTLS証明書をつけるのですから、それだけ設定が増えます。
 

  1.「/etc/gitlab/gitlab.rb」を以下のように編集

======================
pages_external_url "https://example.io"
nginx['listen_addresses'] = ['1.1.1.1']
pages_nginx['enable'] = false
gitlab_pages['cert'] = "/etc/gitlab/ssl/example.io.crt"
gitlab_pages['cert_key'] = "/etc/gitlab/ssl/example.io.key"
gitlab_pages['external_http'] = ['1.1.1.2:80', '[2001::2]:80']
gitlab_pages['external_https'] = ['1.1.1.2:443', '[2001::2]:443']
======================

  「1.1.1.1」とは、GitLab の主幹IPアドレスで、
「1.1.1.2」並びに「2001::2(IPv6のアドレス)」はGitLab Pagesデーモンの補助IPアドレスです。
 IPv6を利用しない場合は、この補助IPアドレスの部分にIPv6のアドレスは記入しなくても構いません。
 

  2.GitLabをリセットします


 

  ストレージパスを変更する

  GitLab Pagesのコンテンツを入れているファイルをデフォルトから変更するには、次の設定をしてください。

  1.ページのコンテンツは何もいじらなければ「/var/opt/gitlab/gitlab-rails/shared/pages」に入っています。
 これを他のストレージに変更する場合は「/etc/gitlab/gitlab.rb」に次の設定を加えます。

======================
gitlab_rails [ 'pages_path' ] = "/mnt/storage/pages"
====================== 

  2.GitLabをリセットします

 

  ページの最大サイズを設定する

  それぞれのプロジェクトには、圧縮していないアーカイブのファイルの容量に制限が設けられています。
 この制限は「Application settings」の「Admin」エリアで変更することが可能です(MB単位)。デフォルトでは、100MBとされています。
 

  バックアップについて

  ページはあらかじめバックアップがされるうように設定されていますので、これといった調節は必要ありません。

 

  セキュリティ

  XSS 攻撃を防止するため、GitLabでサイトを使う時に使用するホスト名は、GitLabですでに使われているものを避けましょう。


 

  変更点

  GitLab Pagesという機能が最初に登場したのは、 GitLab EE 8.3のことです。以来、たくさんの機能が追加され、 CNAMEやTLSなども使えるようになりました。
 今後も様々な機能が追加されていくことでしょう。

 以下はGitLabバージョンごとの変更点です。
 この文章の最初にお知らせしました通り、今回の説明は最新版GitLabに準拠しております。
 

 GitLab 8.17 (documentation)


 GitLab 8.5 (documentation)


 GitLab 8.3 (documentation)

 Edit this page

 2017-10-15 12:39:13 / Hnoss
原文サイトを表示
[ 原文 ] https://docs.gitlab.com/ee/administration/pages/index.html
原文ページプロジェクト並びにドキュメントファイルは、MIT Licenseのもと公開されています。(URL: https://gitlab.com/gitlab-com/gitlab-docs/blob/master/LICENSE)この記事の文章は、訳者の判断によりCreative Commons BY (version 3.0) を適用するものとします。