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

前書き

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

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

前提条件

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

  • * root *以外の `+ sudo +`ユーザーと基本的なファイアウォールを備えたDebian 9サーバー。 これを設定するには、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9 [Debian 9初期サーバー設定ガイド]に従ってください。

http://docs.gitlab.com/ce/install/requirements.html#hardware-requirements [公開されているGitLabハードウェア要件]では、次のサーバーを使用することを推奨しています。

  • 2コア

  • 8GBのRAM

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

  • サーバーを指すドメイン名。 詳細については、https://www.digitalocean.com/docs/networking/dns/quickstart/ [DigitalOceanでDNSを始めよう]の方法に関するドキュメントを参照してください。 このチュートリアルでは、デモのためにドメイン名* example.com *を使用します。

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

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

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

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

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

ステップ2-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 install gitlab-ce

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

ステップ3-ファイアウォールルールの調整

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

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

sudo ufw status
OutputStatus: active

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

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

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

sudo ufw allow "WWW Full"
sudo ufw allow OpenSSH

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

sudo ufw status verbose
OutputStatus: 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)

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

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

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

sudo nano /etc/gitlab/gitlab.rb

上部近くには、 `+ external_url `設定行があります。 ドメインに合わせて更新してください。 GitLabがユーザーをLet's Encrypt証明書で保護されたサイトに自動的にリダイレクトするように、「 http」を「+ https」に変更します。

/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 'http://'

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

/etc/gitlab/gitlab.rb

letsencrypt['contact_emails'] = ['']

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

sudo gitlab-ctl reconfigure

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

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

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

初めてログインする

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

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 *という名前が付けられます。 これは既知のアカウント名であるため、これを別の名前に変更する方が安全です。 それでも管理者権限があります。変更されるのは名前だけです。 * 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プロジェクトとリポジトリを管理できるようになります。

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

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/new_save_changes_button.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/new_save_changes_button.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/new_save_changes_button.png [GitLab設定保存ボタン]

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

Let’s Encrypt証明書の更新

デフォルトでは、GitLabにはスケジュールされたタスクが設定されており、4日ごとに真夜中以降にLet’s Encrypt証明書を更新します。正確な分は `+ external_url `に基づきます。 これらの設定は、 ` / 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は定期的に機能を追加し、プラットフォームを更新しています。そのため、プロジェクトのホームページをチェックして、改善点や重要な通知を常に最新の状態にしてください。