Ubuntu 18.04でGitLabをインストールおよび構成する方法

前書き

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

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

前提条件

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

published GitLab hardware requirementsは、次のサーバーを使用することをお勧めします。

  • 2コア

  • 8GBのRAM

RAMの一部をスワップスペースに置き換えることでうまくいくかもしれませんが、お勧めしません。 このガイドでは、少なくとも上記のリソースがあることを前提としています。

  • サーバーを指すドメイン名。 詳細については、get started with DNS on DigitalOceanの実行方法に関するドキュメントを参照してください。 このチュートリアルでは、ドメイン名example.comを使用します。

[[step-1 -—- installing-the-dependencies]] ==ステップ1—依存関係のインストール

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

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

sudo apt update
sudo apt install ca-certificates curl openssh-server postfix

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

[[step-2 -—- installing-gitlab]] ==ステップ2—GitLabのインストール

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

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

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

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

less /tmp/script.deb.sh

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

sudo bash /tmp/script.deb.sh

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

sudo apt install gitlab-ce

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

[[step-3 -—- atjusting-the-firewall-rules]] ==ステップ3—ファイアウォールルールの調整

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

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

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

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

HTTPおよびHTTPSのプロトコルからポートへのマッピングは/etc/servicesファイルで利用できるため、そのトラフィックを名前で許可できます。 OpenSSHトラフィックをまだ有効にしていない場合は、今すぐそのトラフィックも許可する必要があります。

sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

ufw statusをもう一度確認してください。少なくとも次の2つのサービスに構成されたアクセスが表示されます。

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

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

[[step-4 -—- editing-the-gitlab-configuration-file]] ==ステップ4—GitLab構成ファイルの編集

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

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's Encryptプロジェクトが連絡するために使用できるメールアドレスのリストを定義します。 コメントを外して記入することをお勧めします。これにより、問題を把握できます。

/etc/gitlab/gitlab.rb

letsencrypt['contact_emails'] = ['[email protected]']

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

sudo gitlab-ctl reconfigure

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

[[step-5 -—- performing-initial-configuration-through-the-web-interface]] ==ステップ5—Webインターフェイスを介した初期構成の実行

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

初めてログインする

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

https://example.com

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

GitLab initial password set prompt

初期パスワードプロンプトで、管理アカウントの安全なパスワードを入力して確認します。 終了したら、Change your passwordボタンをクリックします。

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

GitLab first sign in prompt

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

  • ユーザー名:root

  • パスワード:[設定したパスワード]

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

GitLab initial login landing page

いくつかの簡単な変更を行って、GitLabを希望どおりにセットアップできるようになりました。

プロファイル設定の調整

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

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

GitLab profile settings button

設定のProfileセクションに移動します。

GitLab profile settings page

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

完了したら、下部にあるUpdate Profile settingsボタンをクリックします。

GitLab update profile settings button

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

アカウント名を変更する

次に、左側のメニューバーのAccount項目をクリックします。

GitLab account menu item

ここで、プライベートAPIトークンを見つけるか、2要素認証を構成できます。 ただし、現時点で関心のある機能はChange usernameセクションです。

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

GitLab change username section

Update usernameボタンをクリックして、変更を加えます。

GitLab update username button

次回GitLabにログインするときは、必ず新しいユーザー名を使用してください。

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

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

local computerにSSHキーペアを既に作成している場合は、通常、次のように入力して公開キーを表示できます。

cat ~/.ssh/id_rsa.pub

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

Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

このテキストをコピーして、GitLabのウェブインターフェースの[プロファイル設定]ページに戻ります。

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

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

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

ssh-keygen

デフォルトを受け入れ、オプションでパスワードを指定して、キーをローカルで保護します。

OutputGenerating 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]-----+

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

cat ~/.ssh/id_rsa.pub
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

表示されているテキストのブロックをコピーして、GitLabのウェブインターフェースでプロフィールSettingsに戻ります。

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

GitLab SSH Keys menu item

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

GitLab add SSH Key

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

[[step-6 -—- restricting-or-disabling-public-sign-ups-optional]] ==ステップ6—パブリックサインアップの制限または無効化(オプション)

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

まず、ページ上部のメインメニューバーにあるwrench iconをクリックして、管理領域に移動します。

GitLab administrative area button

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

GitLab administrative settings button

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

サインアップを無効にする

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

Sign-up enabledチェックボックスの選択を解除します。

GitLab deselect sign-ups enabled

一番下までスクロールして、Save changesボタンをクリックします。

GitLab save settings button

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

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

ドメインに関連付けられた電子メールアドレスを提供する組織の一部としてGitLabを使用している場合、サインアップを完全に無効にする代わりにドメインごとに制限できます。

[Sign-up Restrictions]セクションで、[Send confirmation email on sign-up]ボックスを選択します。これにより、ユーザーはメールを確認した後にのみログインできます。

次に、1つまたは複数のドメインをWhitelisted domains for sign-upsボックスに追加します(1行に1つのドメイン)。 アスタリスク「*」を使用して、ワイルドカードドメインを指定できます。

GitLab restrict sign-ups by domain

一番下までスクロールして、Save changesボタンをクリックします。

GitLab save settings button

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

プロジェクト作成の制限

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

内部では、Default projects limitを0に変更して、新しいユーザーがプロジェクトを作成できないようにすることができます。

GitLab set projects to zero

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

一番下までスクロールして、Save changesボタンをクリックします。

GitLab save settings button

新しいユーザーはアカウントを作成できますが、プロジェクトを作成できなくなります。

Let's Encrypt証明書の更新

デフォルトでは、GitLabには、4日ごとの深夜0時以降に、external_urlに基づいた正確な分で、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は定期的に機能を追加し、プラットフォームを更新しています。そのため、プロジェクトのホームページをチェックして、改善点や重要な通知を常に最新の状態にしてください。