Ubuntu16.04にGitLabをインストールして構成する方法
序章
GitLabCEまたはCommunityEditionは、主にGitリポジトリをホストするために使用されるオープンソースアプリケーションであり、問題追跡などの追加の開発関連機能を備えています。 独自のインフラストラクチャを使用してホストされるように設計されており、開発チームの内部リポジトリストアとして、ユーザーとのインターフェイスとして公に、または寄稿者が独自のプロジェクトをホストする方法としてオープンに展開する際の柔軟性を提供します。
GitLabプロジェクトを使用すると、簡単なインストールメカニズムを使用して、独自のハードウェアにGitLabインスタンスをセットアップするのが比較的簡単になります。 このガイドでは、Ubuntu16.04サーバーにGitLabをインストールして構成する方法について説明します。
前提条件
このチュートリアルでは、新しいUbuntu16.04サーバーにアクセスできることを前提としています。 公開されている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
ダウンロードしたスクリプトを自由に調べて、実行するアクションに問題がないことを確認してください。 スクリプトのホストバージョンもここにあります。
- 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はLet’sEncryptプロジェクトから無料の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)
上記の出力は、アプリケーションを構成するとGitLabWebインターフェイスにアクセスできることを示しています。
GitLab構成ファイルの編集
アプリケーションを使用する前に、1つの構成ファイルを更新し、再構成コマンドを実行する必要があります。 まず、Gitlabの構成ファイルを開きます。
- sudo nano /etc/gitlab/gitlab.rb
上部近くにexternal_url
構成ラインがあります。 自分のドメインまたはIPアドレスに一致するように更新してください。 ドメインをお持ちの場合は、http
をhttps
に変更して、GitLabがリクエストするLet’sEncrypt証明書で保護されているサイトにユーザーを自動的にリダイレクトするようにします。
# 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 'https://yourdomain'
次に、GitLabサーバーにドメイン名がある場合は、ファイルでletsencrypt['enable']
設定を検索します。 行のコメントを外し、true
に設定します。 これにより、GitLabは、GitLabドメインのLet’s Encrypt証明書を要求し、それを使用してトラフィックを処理するようにアプリケーションを構成するように指示されます。
その下で、letsencrypt['contact_emails']
設定を探します。 この設定は、ドメインに問題がある場合にLet’sEncryptプロジェクトが連絡するために使用できる電子メールアドレスのリストを定義します。 コメントを外してこれにも記入することをお勧めします。そうすれば、問題を知ることができます。
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email protected]']
ファイルを保存して閉じます。 次に、次のコマンドを実行してGitlabを再構成します。
- sudo gitlab-ctl reconfigure
これにより、サーバーに関して検出できる情報を使用してGitLabが初期化されます。 これは完全に自動化されたプロセスであるため、プロンプトに応答する必要はありません。 Let’s Encrypt統合を有効にした場合は、ドメインに証明書を構成する必要があります。
Webインターフェイスを介した初期構成の実行
GitLabが実行され、アクセスが許可されたので、Webインターフェイスを介してアプリケーションの初期構成を実行できます。
初めてログインする
WebブラウザでGitLabサーバーのドメイン名にアクセスします。
http://gitlab_domain_or_IP
Let’s Encryptを有効にして、external_url
でhttps
を使用した場合は、安全なHTTPS接続にリダイレクトされるはずです。
初めてアクセスすると、管理者アカウントのパスワードを設定するための最初のプロンプトが表示されます。
最初のパスワードプロンプトで、管理者アカウントの安全なパスワードを入力して確認します。 終了したら、パスワードの変更ボタンをクリックしてください。
従来のGitLabログインページにリダイレクトされます。
ここでは、設定したパスワードでログインできます。 資格情報は次のとおりです。
- ユーザー名: root
- パスワード:[設定したパスワード]
これらの値を既存のユーザーのフィールドに入力し、サインインボタンをクリックします。 アプリケーションにサインインし、プロジェクトの追加を開始するように求めるランディングページに移動します。
これで、いくつかの簡単な変更を加えて、GitLabを希望どおりにセットアップできます。
プロファイル設定の調整
新規インストール後に最初に行う必要があることの1つは、プロファイルをより良い形にすることです。 GitLabはいくつかの妥当なデフォルトを選択しますが、ソフトウェアの使用を開始すると、通常、これらは適切ではありません。
必要な変更を加えるには、インターフェースの右上隅にあるユーザーアイコンをクリックします。 表示されるドロップダウンメニューで、設定を選択します。
設定のプロファイルセクションに移動します。
NameおよびEmailアドレスを「Administrator」および「admin@example.com」からより正確なものに調整します。 選択した名前は他のユーザーに表示され、メールはデフォルトのアバター検出、通知、インターフェースを介したGitアクションなどに使用されます。
完了したら、下部にあるプロファイル設定の更新ボタンをクリックします。
指定したアドレスに確認メールが送信されます。 メールの指示に従ってアカウントを確認し、GitLabでの使用を開始できるようにします。
アカウント名の変更
次に、左側のメニューバーのアカウント項目をクリックします。
ここでは、プライベートAPIトークンを検索するか、2要素認証を構成できます。 ただし、現時点で関心のある機能は、ユーザー名の変更セクションです。
デフォルトでは、最初の管理者アカウントにはrootという名前が付けられています。 これは既知のアカウント名であるため、これを別の名前に変更する方が安全です。 引き続き管理者権限があります。 変更されるのは名前だけです。
ユーザー名の更新ボタンをクリックして変更を加えます。
次回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のWebインターフェイスの[プロファイル設定]ページに戻ります。
代わりに、次のようなメッセージが表示された場合は、マシンに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のWebインターフェイスのプロファイル設定に戻ります。
左側のメニューのSSHキー項目をクリックします。
提供されたスペースに、ローカルマシンからコピーした公開鍵を貼り付けます。 説明的なタイトルを付けて、キーの追加ボタンをクリックします。
これで、GitLabアカウントのクレデンシャルを提供しなくても、ローカルマシンからGitLabプロジェクトとリポジトリを管理できるようになります。
パブリックサインアップの制限または無効化(オプション)
GitLabインスタンスのランディングページにアクセスすると、誰でもアカウントにサインアップできることに気付いたかもしれません。 これは、公開プロジェクトをホストすることを検討している場合に必要なものかもしれません。 ただし、多くの場合、より制限的な設定が望ましいです。
まず、ページ上部のメインメニューバーにあるレンチアイコンをクリックして、管理エリアに移動します。
次のページで、GitLabインスタンス全体の概要を確認できます。 設定を調整するには、左側のメニューの下部にある設定項目をクリックします。
GitLabインスタンスのグローバル設定に移動します。 ここでは、新規ユーザーがサインアップできるかどうか、およびユーザーのアクセスレベルに影響を与えるいくつかの設定を調整できます。
サインアップの無効化
サインアップを完全に無効にする場合(新しいユーザーのアカウントを手動で作成することもできます)、サインアップの制限セクションまでスクロールします。
サインアップを有効にするチェックボックスの選択を解除します。
一番下までスクロールして、保存ボタンをクリックします。
サインアップセクションがGitLabランディングページから削除されます。
ドメインによるサインアップの制限
ドメインに関連付けられたメールアドレスを提供する組織の一部としてGitLabを使用している場合は、完全に無効にするのではなく、ドメインごとに登録を制限できます。
サインアップの制限セクションで、最初にサインアップ時に確認メールを送信するボックスを選択して、ユーザーがメールを確認した後にのみログインできるようにします。
次に、ドメインを登録用ホワイトリストに登録されたドメインボックスに1行に1つずつ追加します。 アスタリスク「*」を使用して、ワイルドカードドメインを指定できます。
一番下までスクロールして、保存ボタンをクリックします。
サインアップセクションがGitLabランディングページから削除されます。
プロジェクト作成の制限
デフォルトでは、新規ユーザーは最大10個のプロジェクトを作成できます。 外部からの新規ユーザーに可視性と参加を許可したいが、新しいプロジェクトの作成へのアクセスを制限したい場合は、アカウントと制限の設定セクションで行うことができます。
内部では、デフォルトのプロジェクト制限を0に変更して、新しいユーザーがプロジェクトを作成できないようにすることができます。
新しいユーザーは引き続き手動でプロジェクトに追加でき、他のユーザーが作成した内部プロジェクトまたは公開プロジェクトにアクセスできます。
一番下までスクロールして、保存ボタンをクリックします。
新規ユーザーはアカウントを作成できるようになりますが、プロジェクトを作成することはできません。
証明書を自動的に更新するためのcronジョブの作成Let’sEncrypt
設計上、Let’sEncrypt証明書は90日間のみ有効です。 以前にGitLabドメインでLet’sEncryptを有効にした場合は、サービスの中断を回避するために、証明書が定期的に更新されるようにする必要があります。 GitLabは、gitlab-ctl renew-le-certs
コマンドを提供して、現在のアセットの有効期限が近づいたときに新しい証明書を要求します。
このプロセスを自動化するために、このコマンドを定期的に自動的に実行するcronジョブを作成できます。 このコマンドは、有効期限が近づいたときにのみ証明書を更新するため、定期的に安全に実行できます。
まず、テキストエディタで/etc/cron.daily/gitlab-le
にファイルを作成して開きます。
- sudo nano /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’sEncrypt証明書を更新する必要があるかどうかを毎日自動的にチェックする必要があります。 含まれている場合、コマンドは証明書を自動的に更新します。
結論
これで、動作中のGitLabインスタンスが自分のサーバーでホストされているはずです。 新しいプロジェクトのインポートまたは作成を開始し、チームに適切なレベルのアクセスを構成できます。 GitLabは定期的に機能を追加し、プラットフォームを更新しているため、プロジェクトのホームページをチェックして、改善点や重要な通知について最新情報を入手してください。