序章

GitLab CEまたはCommunityEditionは、主にGitリポジトリをホストするために使用されるオープンソースアプリケーションであり、問題追跡などの追加の開発関連機能を備えています。 独自のインフラストラクチャを使用してホストされるように設計されており、開発チームの内部リポジトリストア、ユーザーとのインターフェイスのパブリックな方法、または寄稿者が独自のプロジェクトをホストする手段として展開する際の柔軟性を提供します。

GitLabプロジェクトを使用すると、簡単なインストールメカニズムを使用して、独自のハードウェアにGitLabインスタンスをセットアップするのが比較的簡単になります。 このガイドでは、Debian9サーバーにGitLabをインストールして構成する方法について説明します。

前提条件

このチュートリアルでは、次のものが必要になります。

公開されているGitLabハードウェア要件は、次のサーバーを使用することを推奨しています。

  • 2コア
  • 8GBのRAM

RAMの代わりにスワップスペースを使用することで解決できる場合もありますが、お勧めしません。 このガイドでは、少なくとも上記のリソースがあることを前提としています。

  • サーバーを指すドメイン名。 詳細については、DigitalOceanDNSの使用を開始する方法に関するドキュメントを参照してください。 このチュートリアルでは、デモンストレーションの目的でドメイン名example.comを使用します。

ステップ1—依存関係のインストール

GitLab自体をインストールする前に、インストール中および継続的に活用するソフトウェアの一部をインストールすることが重要です。 幸い、必要なソフトウェアはすべて、Debianのデフォルトのパッケージリポジトリから簡単にインストールできます。

このセッションでaptを使用するのはこれが初めてなので、ローカルパッケージインデックスを更新してから、次のように入力して依存関係をインストールできます。

  1. sudo apt update
  2. sudo apt install ca-certificates curl openssh-server postfix

このソフトウェアの一部がすでにインストールされている可能性があります。 postfixのインストールでは、プロンプトが表示されたらインターネットサイトを選択します。 次の画面で、サーバーのドメイン名を入力して、システムがメールを送信する方法を構成します。

ステップ2—GitLabをインストールする

依存関係が整ったので、GitLab自体をインストールできます。 これは、インストールスクリプトを利用して、GitLabリポジトリでシステムを構成する簡単なプロセスです。

/tmpディレクトリに移動し、インストールスクリプトをダウンロードします。

  1. cd /tmp
  2. curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

ダウンロードしたスクリプトを自由に調べて、実行するアクションに問題がないことを確認してください。 スクリプトのホストバージョンもここにあります。

  1. less /tmp/script.deb.sh

スクリプトの安全性に満足したら、インストーラーを実行します。

  1. sudo bash /tmp/script.deb.sh

このスクリプトは、GitLabが管理するリポジトリを使用するようにサーバーをセットアップします。 これにより、他のシステムパッケージに使用するのと同じパッケージ管理ツールを使用してGitLabを管理できます。 これが完了すると、aptを使用して実際のGitLabアプリケーションをインストールできます。

  1. sudo apt install gitlab-ce

これにより、必要なコンポーネントがシステムにインストールされます。

ステップ3—ファイアウォールルールを調整する

GitLabを構成する前に、ファイアウォールルールがWebトラフィックを許可するのに十分な許容範囲であることを確認する必要があります。 前提条件にリンクされているガイドに従っている場合は、ufwファイアウォールが有効になっています。

次のように入力して、アクティブなファイアウォールの現在のステータスを表示します。

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

ご覧のとおり、現在のルールではSSHトラフィックの通過が許可されていますが、他のサービスへのアクセスは制限されています。 GitLabはWebアプリケーションであるため、HTTPアクセスを許可する必要があります。 Let’sEncryptから無料のTLS/SSL証明書を要求して有効にするGitLabの機能を利用するため、HTTPSアクセスも許可しましょう。

ファイアウォールを介した「WWWフル」アプリプロファイルを許可することで、HTTPとHTTPSの両方へのアクセスを許可できます。 OpenSSHトラフィックをまだ有効にしていない場合は、今すぐそのトラフィックも許可する必要があります。

  1. sudo ufw allow "WWW Full"
  2. sudo ufw allow OpenSSH

ufw statusをもう一度確認します。今回は、verboseフラグを追加します。 少なくとも次の2つのサービスに構成されたアクセスが表示されます。

  1. sudo ufw status verbose
Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp (OpenSSH) ALLOW IN Anywhere 80,443/tcp (WWW Full) ALLOW IN Anywhere 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6) 80,443/tcp (WWW Full (v6)) ALLOW IN Anywhere (v6)

上記の出力は、アプリケーションを構成するとGitLabWebインターフェイスにアクセスできることを示しています。

ステップ4—GitLab構成ファイルの編集

アプリケーションを使用する前に、構成ファイルを更新して再構成コマンドを実行する必要があります。 まず、Gitlabの構成ファイルを開きます。

  1. sudo nano /etc/gitlab/gitlab.rb

上部近くにexternal_url構成ラインがあります。 ドメインに一致するように更新してください。 httphttpsに変更して、GitLabがLet’sEncrypt証明書で保護されているサイトにユーザーを自動的にリダイレクトするようにします。

/etc/gitlab/gitlab.rb
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'https://example.com'

次に、letsencrypt['contact_emails']の設定を探します。 この設定は、ドメインに問題がある場合にLet’sEncryptプロジェクトが連絡するために使用できる電子メールアドレスのリストを定義します。 コメントを外してこれに記入することをお勧めします。そうすれば、問題を知ることができます。

/etc/gitlab/gitlab.rb
letsencrypt['contact_emails'] = ['[email protected]']

ファイルを保存して閉じます。 次のコマンドを実行して、Gitlabを再構成します。

  1. sudo gitlab-ctl reconfigure

これにより、サーバーに関して検出できる情報を使用してGitLabが初期化されます。 これは完全に自動化されたプロセスであるため、プロンプトに応答する必要はありません。 このプロセスでは、ドメインのLet’sEncrypt証明書も構成されます。

ステップ5—Webインターフェイスを介した初期構成の実行

GitLabを実行し、アクセスを許可すると、Webインターフェイスを介してアプリケーションの初期構成を実行できます。

初めてログインする

WebブラウザでGitLabサーバーのドメイン名にアクセスします。

https://example.com

初めてアクセスすると、管理者アカウントのパスワードを設定するための最初のプロンプトが表示されます。

GitLab initial password set prompt

最初のパスワードプロンプトで、管理者アカウントの安全なパスワードを入力して確認します。 終了したら、パスワードの変更ボタンをクリックしてください。

従来のGitLabログインページにリダイレクトされます。

GitLab first sign in prompt

ここでは、設定したパスワードでログインできます。 資格情報は次のとおりです。

  • ユーザー名: root
  • パスワード:[設定したパスワード]

これらの値を既存のユーザーのフィールドに入力し、サインインボタンをクリックします。 アプリケーションにサインインし、プロジェクトの追加を開始するように求めるランディングページに移動します。

GitLab initial login landing page

これで、いくつかの簡単な変更を加えて、GitLabを希望どおりにセットアップできます。

プロファイル設定の調整

新規インストール後に最初に行う必要があることの1つは、プロファイルをより良い形にすることです。 GitLabはいくつかの妥当なデフォルトを選択しますが、ソフトウェアの使用を開始すると、通常、これらは適切ではありません。

必要な変更を加えるには、インターフェースの右上隅にあるユーザーアイコンをクリックします。 表示されるドロップダウンメニューで、設定を選択します。

GitLab profile settings button

設定のプロファイルセクションに移動します。

GitLab profile settings page

NameおよびEmailアドレスを「Administrator」および「admin@example.com」からより正確なものに調整します。 選択した名前は他のユーザーに表示され、メールはデフォルトのアバター検出、通知、インターフェースを介したGitアクションなどに使用されます。

完了したら、下部にあるプロファイル設定の更新ボタンをクリックします。

GitLab update profile settings button

指定したアドレスに確認メールが送信されます。 メールの指示に従ってアカウントを確認し、GitLabでの使用を開始できるようにします。

アカウント名の変更

次に、左側のメニューバーのアカウント項目をクリックします。

GitLab account menu item

ここでは、プライベートAPIトークンを検索するか、2要素認証を構成できます。 ただし、現時点で関心のある機能は、ユーザー名の変更セクションです。

デフォルトでは、最初の管理者アカウントにはrootという名前が付けられています。 これは既知のアカウント名であるため、別の名前に変更する方が安全です。 引き続き管理者権限があります。 変更されるのは名前だけです。 rootをお好みのユーザー名に置き換えます。

GitLab change username section

ユーザー名の更新ボタンをクリックして変更を加えます。

GitLab update username button

次回GitLabにログインするときは、新しいユーザー名を使用することを忘れないでください。

アカウントにSSHキーを追加する

ほとんどの場合、GitでSSHキーを使用して、GitLabプロジェクトとやり取りすることをお勧めします。 これを行うには、SSH公開鍵をGitLabアカウントに追加する必要があります。

ローカルコンピューターでSSHキーペアを既に作成している場合は、通常、次のように入力して公開キーを表示できます。

  1. cat ~/.ssh/id_rsa.pub

次のような大量のテキストが表示されます。

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 [email protected]

このテキストをコピーして、GitLabのWebインターフェイスの設定ページに戻ります。

代わりに、次のようなメッセージが表示された場合は、マシンにSSHキーペアがまだ構成されていません。

Output
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

この場合、次のように入力してSSHキーペアを作成できます。

  1. ssh-keygen

デフォルトを受け入れ、オプションでキーをローカルで保護するためのパスワードを提供します。

Output
Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_rsa. Your public key has been saved in /home/sammy/.ssh/id_rsa.pub. The key fingerprint is: SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 [email protected] The key's randomart image is: +---[RSA 2048]----+ | ..%o==B| | *.E =.| | . ++= B | | ooo.o . | | . S .o . .| | . + .. . o| | + .o.o ..| | o .++o . | | oo=+ | +----[SHA256]-----+

これを取得したら、次のように入力して、上記のように公開鍵を表示できます。

  1. cat ~/.ssh/id_rsa.pub
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 [email protected]

表示されたテキストのブロックをコピーして、GitLabのWebインターフェイスの設定に戻ります。

左側のメニューのSSHキー項目をクリックします。

GitLab SSH Keys menu item

提供されたスペースに、ローカルマシンからコピーした公開鍵を貼り付けます。 説明的なタイトルを付けて、キーの追加ボタンをクリックします。

GitLab add SSH Key

これで、GitLabアカウントのクレデンシャルを提供しなくても、ローカルマシンからGitLabプロジェクトとリポジトリを管理できるようになります。

ステップ6—パブリックサインアップの制限または無効化(オプション)

GitLabインスタンスのランディングページにアクセスすると、誰でもアカウントにサインアップできることに気付いたかもしれません。 これは、公開プロジェクトをホストすることを検討している場合に必要なものかもしれません。 ただし、多くの場合、より制限的な設定が望ましいです。

まず、ページ上部のメインメニューバーにあるレンチアイコンをクリックして、管理エリアに移動します。

GitLab administrative area button

次のページで、GitLabインスタンス全体の概要を確認できます。 設定を調整するには、左側のメニューの下部にある設定項目をクリックします。

GitLab administrative settings button

GitLabインスタンスのグローバル設定に移動します。 ここでは、新規ユーザーがサインアップできるかどうかとアクセスレベルに影響を与えるいくつかの設定を調整できます。

サインアップの無効化

サインアップを完全に無効にする場合(新しいユーザーのアカウントを手動で作成することもできます)、サインアップの制限セクションまでスクロールします。

サインアップを有効にするチェックボックスの選択を解除します。

GitLab deselect sign-ups enabled

一番下までスクロールして、変更を保存ボタンをクリックします。

GitLab save settings button

サインアップセクションがGitLabランディングページから削除されます。

ドメインによるサインアップの制限

ドメインに関連付けられたメールアドレスを提供する組織の一部としてGitLabを使用している場合は、完全に無効にするのではなく、ドメインごとに登録を制限できます。

サインアップの制限セクションで、サインアップ時に確認メールを送信するボックスを選択します。これにより、ユーザーはメールを確認した後にのみログインできます。

次に、1つまたは複数のドメインを登録用ホワイトリストに登録されたドメインボックスに追加します(1行に1つのドメイン)。 アスタリスク「*」を使用して、ワイルドカードドメインを指定できます。

GitLab restrict sign-ups by domain

一番下までスクロールして、変更を保存ボタンをクリックします。

GitLab save settings button

サインアップセクションがGitLabランディングページから削除されます。

プロジェクト作成の制限

デフォルトでは、新規ユーザーは最大10個のプロジェクトを作成できます。 外部からの新規ユーザーに可視性と参加を許可したいが、新しいプロジェクトの作成へのアクセスを制限したい場合は、アカウントと制限の設定セクションで行うことができます。

内部では、デフォルトのプロジェクト制限を0に変更して、新しいユーザーがプロジェクトを作成できないようにすることができます。

GitLab set projects to zero

新しいユーザーは引き続き手動でプロジェクトに追加でき、他のユーザーが作成した内部プロジェクトまたは公開プロジェクトにアクセスできます。

一番下までスクロールして、変更を保存ボタンをクリックします。

GitLab save settings button

新規ユーザーはアカウントを作成できるようになりますが、プロジェクトを作成することはできません。

Let’sEncrypt証明書の更新

デフォルトでは、GitLabには、external_urlに基づいた正確な分で、4日ごとの深夜以降にLet’sEncrypt証明書を更新するように設定されたタスクがスケジュールされています。 これらの設定は、/etc/gitlab/gitlab.rbファイルで変更できます。 たとえば、7日ごとの12:30に更新する場合は、次のように構成できます。

/etc/gitlab/gitlab.rb
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"

/etc/gitlab/gitlab.rbに設定を追加して、自動更新を無効にすることもできます。

/etc/gitlab/gitlab.rb
letsencrypt['auto_renew'] = false

自動更新が行われていれば、サービスの中断について心配する必要はありません。

結論

これで、動作中のGitLabインスタンスが自分のサーバーでホストされているはずです。 新しいプロジェクトのインポートまたは作成を開始し、チームに適切なレベルのアクセスを構成できます。 GitLabは定期的に機能を追加し、プラットフォームを更新しているため、プロジェクトのホームページをチェックして、改善点や重要な通知について最新情報を入手してください。