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

前書き

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

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

前提条件

このチュートリアルでは、新しいUbuntu 16.04サーバーにアクセスできることを前提としています。 http://docs.gitlab.com/ee/install/requirements.html#hardware-requirements [公開されているGitLabハードウェア要件]では、次のサーバーを使用することを推奨しています。

  • 2コア

  • 4GBのRAM

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

開始するには、サーバーで設定された `+ sudo +`アクセスを持つ非rootユーザーが必要です。 また、基本的なファイアウォールを設定して、追加のセキュリティレイヤーを提供することもお勧めします。 Ubuntu 16.04初期サーバーセットアップガイドの手順に従って、このセットアップを取得できます。

上記の前提条件を満たしたら、インストール手順を開始します。

依存関係のインストール

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

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

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

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

GitLabのインストール

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

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

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

ダウンロードしたスクリプトを自由に調べて、実行するアクションに慣れていることを確認してください。 また、スクリプトhttps://packages.gitlab.com/gitlab/gitlab-ce/install[here]のホストバージョンを見つけることもできます。

less /tmp/script.deb.sh

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

sudo bash /tmp/script.deb.sh

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

sudo apt-get install gitlab-ce

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

ファイアウォールルールの調整

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

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

sudo ufw status
OutputStatus: active

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

ご覧のとおり、現在のルールはSSHトラフィックの通過を許可していますが、他のサービスへのアクセスは制限されています。 GitLabはWebアプリケーションであるため、HTTPアクセスを許可する必要があります。 GitLabサーバーにドメイン名が関連付けられている場合、GitLabはhttps://letsencrypt.org/[Let’s Encrypt project]から無料のTLS / SSL証明書をリクエストして有効にし、インストールを保護できます。 この場合も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                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

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

GitLab構成ファイルの編集

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

sudo nano /etc/gitlab/gitlab.rb

上部近くには、 + external_url +`設定行があります。 独自のドメインまたはIPアドレスと一致するように更新します。 ドメインがある場合、GitLabがユーザーが要求するLet’s Encrypt証明書で保護されたサイトに自動的にリダイレクトするように、 `+ http`を + https`に変更します。

/etc/gitlab/gitlab.rb

# If your GitLab server does not have a domain name, you will need to use an IP
# address instead of a domain and keep the protocol as `http`.
external_url 'http://'

次に、GitLabサーバーにドメイン名がある場合は、ファイルで「+ letsencrypt ['enable'] 」設定を検索します。 行のコメントを解除して、「 true +」に設定します。 これにより、GitLabドメインのLet’s Encrypt証明書を要求し、それを使用してトラフィックを処理するようにアプリケーションを構成するようにGitLabに指示します。

その下で、 `+ letsencrypt ['contact_emails'] +`設定を探します。 この設定は、ドメインに問題がある場合にLet’s Encryptプロジェクトが連絡するために使用できるメールアドレスのリストを定義します。 コメントを外して記入することをお勧めします。これにより、問題を把握できます。

/etc/gitlab/gitlab.rb

letsencrypt['enable'] =
letsencrypt['contact_emails'] = ['']

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

sudo gitlab-ctl reconfigure

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

Webインターフェイスを介した初期設定の実行

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

初めてログインする

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

http://

Let’s Encryptを有効にし、 `+ external_url `で ` https +`を使用した場合、安全なHTTPS接続にリダイレクトされるはずです。

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/gitlab_initial_password2.png [GitLab初期パスワード設定プロンプト]

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/gitlab_first_signin2.png [GitLabの最初のサインインプロンプト]

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

  • ユーザー名:* root *

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/landing_page2.png [GitLab初期ログインランディングページ]

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

プロファイル設定の調整

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/profile_settings_button2.png [GitLabプロファイル設定ボタン]

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/profile_settings2.png [GitLabプロファイル設定ページ]

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/update_profile_settings_button2.png [GitLabプロファイル設定更新ボタン]

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

アカウント名を変更する

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/account_menu_item2.png [GitLabアカウントメニュー項目]

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/change_username2.png [GitLabユーザー名の変更セクション]

[ユーザー名の更新]ボタンをクリックして、変更を行います。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/update_username_button2.png [GitLabユーザー名更新ボタン]

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

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

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

*ローカルコンピューター*で既に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のウェブインターフェースのプロファイル設定に戻ります。

左側のメニューの[* SSH Keys *]アイテムをクリックします。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/ssh_keys_menu_item2.png [GitLab SSH Keysメニュー項目]

指定されたスペースに、ローカルマシンからコピーした公開キーを貼り付けます。 わかりやすいタイトルを付けて、[キーを追加]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/add_ssh_key2.png [GitLab SSHキーの追加]

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

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

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/admin_area_button2.png [GitLab管理エリアボタン]

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/admin_settings_button2.png [GitLab管理設定ボタン]

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

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

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

[サインアップを有効にする]チェックボックスをオフにします。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/deselect_sign-ups_enabled.png [GitLabサインアップの選択解除を有効化]

下にスクロールして、[保存]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/save_settings_button2.png [GitLab設定保存ボタン]

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

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

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

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

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

image:https://assets.digitalocean.com/articles/gitlab_install_1604/restrict_sign-ups_by_domain.png [GitLabはドメインごとにサインアップを制限]

下にスクロールして、[保存]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/save_settings_button2.png [GitLab設定保存ボタン]

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

プロジェクト作成の制限

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

内部では、* Default projects limit *を0に変更して、新規ユーザーによるプロジェクトの作成を完全に無効にすることができます。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/set_projects_to_zero.png [GitLabプロジェクトをゼロに設定]

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

下にスクロールして、[保存]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/gitlab_install_1604/save_settings_button2.png [GitLab設定保存ボタン]

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

Let’s Encrypt証明書を自動的に更新するためのCronジョブの作成

設計上、Let’s Encrypt証明書は90日間のみ有効です。 GitLabドメインでLet’s Encryptを以前に有効にした場合は、サービスの中断を避けるために、証明書を定期的に更新する必要があります。 GitLabには、現在のアセットの有効期限が近づくと新しい証明書を要求するための `+ gitlab-ctl renew-le-certs +`コマンドが用意されています。

このプロセスを自動化するために、cronジョブを作成して、このコマンドを定期的に自動的に実行できます。 このコマンドは、有効期限が近づいたときにのみ証明書を更新するため、定期的に安全に実行できます。

最初に、テキストエディタで `+ / etc / cron.daily / gitlab-le +`にファイルを作成して開きます。

sudo nano /etc/cron.daily/gitlab-le

内部に、次のスクリプトを貼り付けます。

/etc/cron.daily/gitlab-le

#!/bin/bash

set -e

/usr/bin/gitlab-ctl renew-le-certs > /dev/null

完了したら、ファイルを保存して閉じます。

次のように入力して、ファイルを実行可能としてマークします。

sudo chmod +x /etc/cron.daily/gitlab-le

これで、GitLabはLet’s Encrypt証明書を更新する必要があるかどうかを毎日自動的に確認する必要があります。 存在する場合、コマンドは証明書を自動的に更新します。

結論

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

Related