Gitlab を安全にインストールする方法(チュートリアル)

あなたはプロジェクト管理にGitLabを使用することを決定しましたが、GitLabを安全にインストールする方法がわからない場合はどうすればよいでしょうか? GitLabをインストールするだけでなく、それを正しく行わないと、データが危険にさらされる可能性があります。しかし心配しないでください、あなたは正しい場所に来ました!

このチュートリアルでは、GitLabを安全にインストールする全体のプロセスを学び、SSL暗号化を設定し、GitLabを最適なパフォーマンスに構成する方法を説明します。

面白そうですか? すぐに始めましょう!

前提条件

このチュートリアルは実演形式です。一緒に進める場合は、以下を確認してください:

  • A Linux server with root access – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.
  • A fully qualified domain name (FQDN) pointing to your server.
  • Let’s Encryptがサーバーにインストールされていること。
  • 最小要件 – 8 GBのRAM、50-100 Mb/sの帯域幅、2 GHzのプロセッサー、および20 GBのディスクスペース。

GitLab Community Editionのインストール

FQDNとサーバーが準備できたら、GitLabをインストールする準備が整いました。 GitLabをインストールする方法はいくつかありますが、このチュートリアルでは、開発者からのGitLabリポジトリを使用してGitLabをインストールする方法に焦点を当てています。 Omnibus パッケージを使用するか、ソースからコンパイルするなどの方法がありますが、このチュートリアルでは、GitLabリポジトリからGitLabをインストールする方法に焦点を当てています。

GitLabは2つの配布で提供されています:

  • GitLab Community Edition(CE) – GitLabのオープンソースでコミュニティサポートされているバージョンを希望するユーザー向け。
  • GitLab Enterprise Edition(EE) – GitLab Enterprise Editionが提供する追加機能が必要なユーザー向け。

ただし、このデモでは開発者環境でアプリケーションをテストするためにCommunity Editionを使用しています。

1. ターミナルを開いて、以下のapt updateコマンドを実行して、システムがすべての最新のソフトウェア更新にアクセスできることを確認します。

apt updateコマンドは、aptユーティリティが利用可能なパッケージの情報を取得するために使用するパッケージインデックスファイルを更新します。

sudo apt update -y
Updating your package index

2. 次に、以下のapt installコマンドを実行して、GitLabのインストールに必要な以下の依存関係(curl)をダウンロードしてinstallします:

  • openssh-serverパッケージ – OpenSSHサーバーデーモンおよび関連ツール(ホストキー管理ツールやサーバーなど)が含まれ、ユーザーにリモートログインアクセスを提供します。
  • ca-certificatesパッケージ-CA証明書のリストが含まれています。このパッケージは、サーバーでHTTPSサポートを有効にするために必要なファイルを提供します。
sudo apt install curl openssh-server ca-certificates -y
Installing the required dependencies

3.以下のcurlコマンドを実行して、GitLab(https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce)からインストールスクリプトをダウンロードしてください。その後、インストールスクリプトをシェルスクリプト(script.deb.sh)として保存し、スーパーユーザー(sudo bash)として実行します。

sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

curlコマンドが完了すると、次の出力が表示されます。

Adding the GitLab repository to your system

4.以下のapt-cache コマンドを実行して、GitLabリポジトリが正常に追加されたことを確認します。

apt-cache policy docker-ce
Verifying if GitLab Repository Exists

5.今、apt updateコマンドを再実行して、利用可能なパッケージのリストを更新します。このコマンドにより、GitLabをインストールする際にシステムが新しく追加されたGitLabリポジトリを使用することが保証されます。

sudo apt update -y

6.最後に、以下のapt installコマンドを実行して、システムにGitLab(gitlab-ce)をインストールします。

sudo apt install gitlab-ce -y
Installing GitLab

インストールにはしばらく時間がかかりますが、インストールが完了すると、次の出力が表示されます。この出力により、システムにGitLabが正常にインストールされたことが確認されます。

Getting the Welcome Page after Installing GitLab

GitLabインストールの設定

あなたのシステムにはGitLabがインストールされていますが、GitLabを使用する前にいくつかの設定変更が必要です。GitLabの設定ファイル(/etc/gitlab/gitlab.rb)には、GitLabサーバーの環境に固有でないGitLabのグローバル設定が含まれています。

GitLabの設定ファイルを変更して、FQDNドメイン名とドメインへの安全な接続を設定します。

1. 好きなテキストエディタで/etc/gitlab/gitlab.rb設定ファイルを開きます。

GitLabの設定ファイルの中でも重要なのは、以下に示すexternal urlディレクティブです。このディレクティブは、ユーザーがWebブラウザを通じてGitLabにアクセスできるようにします。

external urlディレクティブの値をhttp://gitlab.example.comからhttps://gitlab.yourdomain.comに変更します。ここでyourdomain.comはFQDNドメイン名です。

Setting FQDN domain name in the external URL directive

2. 次に、一番下にあるLet’s Encrypt統合セクションに移動し、以下の指示でディレクティブを設定します:

  • letsencrypt['enable']ディレクティブの先頭の#を削除して、値をnilからtrueに変更します。このディレクティブはGitLabにサーバー上で自動的にHTTPSを設定するよう指示します。
  • letsencrypt['contact_emails']ディレクティブの先頭の#を削除し、値にあなたのメールアドレスを入力します。Let’s EncryptはSSL証明書を更新する必要があるときに、このメールアドレスを使用します(90日ごと)。
  • エディターから変更を保存して終了します。
Configuring Let’s Encrypt Integration

3. 最後に、以下のコマンドを実行して、変更を再構成し、/etc/gitlab/gitlab.rb構成ファイルへの変更をGitLabに適用します。

sudo gitlab-ctl reconfigure
Reconfiguring GitLab

SSL接続のためにファイアウォールを設定する

GitLabを設定したら、サーバーへのSSLおよびセキュア接続を許可するためにファイアウォールルールを設定する必要があります。Ubuntuでは、ファイアウォールルールを管理するデフォルトプログラムは、Uncomplicated Firewall(UFW)です。

サーバーをファイアウォールの背後に配置する場合、SSL接続のためにHTTPポート80とHTTPSポート443を開く必要があります。

次のコマンドを実行して、GitLabサーバーのOpenSSHHTTP、およびHTTPSポートを開きます。

sudo ufw allow OpenSSH && sudo ufw allow http && sudo ufw allow http
Adding new firewall rule

次に、ファイアウォールの状態を確認するために次のコマンドを実行します。

sudo ufw status 
Checking the status of your firewall

Webインターフェイス経由でGitLabをセキュリティで保護する

ファイアウォールは起動していますが、GitLabが安全であることを意味するでしょうか?セキュリティの層を追加することは決して多すぎません。そのため、Webインターフェイスを介してGitLabのインストールをさらにセキュリティで保護します。

1. 好きなWebブラウザーを開き、GitLabサーバーに移動します。たとえば、http://gitlab.example.com、ここでexample.comはあなたのFQDNドメイン名です。

Choose either Chrome or Firefox when accessing your GitLab server for better security. These web browsers use their own HTTP/HTTPS protocols, which help enforce security policies.

以下に、GitLabのログインページが表示されます。

Accessing the GitLab Log in screen

2. 次に、パドロックアイコン(左上)をクリックし、アドレスバーの横に接続状態が表示されます。このデモでは、接続は安全ですと表示されます。これは、サーバーへの接続がHTTPS経由であることを示しています。

Checking your connection status

ターミナルに戻り、以下のcatコマンドを実行してinitial_root_passwordを取得します。

デフォルトでは、GitLabのインストールには自動生成された初期ルートパスワードが付属しています。

 cat /etc/gitlab/initial_root_password

初期ルートパスワードをコピーして安全な場所に保存してください。このパスワードは、GitLabにログインする際に使用します(ステップ4)。

Getting your initial root password

4. ウェブブラウザに戻り、ユーザー名にroot、パスワードに初期ルートパスワードを入力します。 ログインをクリックして、GitLabサーバーにログインします。

Logging in to your GitLab server

GitLabサーバーにログインした後、ブラウザは以下のGitLabダッシュボードにリダイレクトされます。

Viewing GitLab Dashboard

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

Webインターフェイスの他に、安全な方法でコマンドライン環境からもGitLabにアクセスできます。方法は?まず、アカウントにSSHキーを追加しておく必要があります。これにより、パスワードを入力せずに端末でコマンドを実行してGitLabにアクセスできます。

1. SSHキーを生成するには、ssh-keygenコマンドを実行します。プロンプトが表示されたら、Enterキーを押してSSHキーのデフォルト保存場所(/root/.ssh/id_rsa)を保持し、パスフレーズを追加しないでください。

ssh-keygen
Generating an SSH keypair

2. 以下のcatコマンドを実行して、公開鍵を画面に表示します。ssh-rsa公開鍵文字列全体をコピーし、安全な場所に保存してください。この公開鍵を後でGitLabに追加します(ステップ3)。

 cat ~/.ssh/id_rsa.pub
Viewing the entire ssh-rsa public key string

3. ブラウザーでGitLabダッシュボードに戻り、次の手順で公開鍵を追加します:

  • SSH Keysメニューをクリックして、User Settingsページの左パネルからSSH Keysページにアクセスします。
  • コピーした公開鍵(ステップ2)をKeyフィールドに貼り付けます。
  • Titleフィールドにキーの名前を入力します。ただし、このデモでは名前がATAGitHubに設定されています。
  • Add Keyをクリックして、公開鍵をアカウントに追加します。
Adding SSH Keys

パブリックサインアップの無効化

追加のセキュリティのために、GitLabでパブリックサインアップを無効にすることができます。なぜ? GitLabのパブリックサインアップ機能は、誰でもGitLabサーバーにアカウントを作成できるようにします。この機能を無効にすると、サーバーへのブルートフォース攻撃を回避できます。

1. GitLabダッシュボードから、Menuをクリック —> Adminをクリックして管理パネルにアクセスし、次にSettingsをクリックして管理パネルのGeneral設定ページにアクセスします(ステップ2)。

Viewing the GitLab Admin panel

2. Sign-up enabledオプションをSign-up restrictionsセクションの下で無効にします。これにより、GitLabの公開サインアップ機能が無効になります。

Disabling GitLab Public Sign-ups

3. 下にスクロールしてSave changesをクリックして、サインアップ制限設定への変更を保存します。

Saving your changes

4. 最後に、アカウントからログアウトし、GitLabのログイン画面に移動します。

以下に示すように、Register nowリンクは消えています。

Verifying if the Register now link is gone

GitLabサーバーのテスト

この時点で、GitLabサーバーを構成してセキュリティを確保しましたが、サーバーが実際に動作しているかどうかはどうやって確認しますか?GitLabダッシュボードを使用してGitLabプロジェクトを作成し、プロジェクトをサーバーにクローンしてテストします。

1. GitLabダッシュボードで、検索ボックスの横にあるプラス(+)アイコンをクリックし、次にNew projectをクリックして、新しいGitLabプロジェクトを作成します。

Adding New GitLab Project

2. 次に、好みのProject nameを指定しますが、このデモではプロジェクト名はATA GitLabとし、Project slugは(atagitlab)に設定されています。

Create projectをクリックして新しいプロジェクトを作成します。

Creating a new project

3. ターミナルに戻り、以下のコマンドを実行して、Git のグローバルユーザー名(--global user.name)とメールアドレス(--global user.email)を設定します。各ユーザー名とメールアドレスは、GitLab サーバー上のすべてのアカウントでグローバルに一意です。

git config --global user.name "ATA"
git config --global user.email "[email protected]"

4. 今度は、以下の git clone コマンドを実行して、作成した ATA GitLab プロジェクト(ステップ2)を現在のディレクトリにクローンします。 yourdomain.com を FQDN に置き換えてください。

git clone http://gitlab.yourdomain.com/root/ATA-GitLab.git

すべてがうまくいくと、次のような出力が表示されます。クローンが完了すると、ATA-GitLabという新しいディレクトリが作成されます。

Cloning the ATA GitLab project

5. 最後に、lsコマンドを実行して、ATA-GitLab ディレクトリが存在するか確認します。

ls

新しい ATA GitLab プロジェクトをクローンし、ATA GitLab ディレクトリが存在するため、以下の出力が GitLab サーバーが正常に動作していることを確認しています。

Listing new directory ATA-GitLab

結論

このチュートリアルでは、Ubuntu Linux システムに安全な GitLab をインストールする方法を学びました。Web インターフェイスを介して GitLab サーバーをセキュリティ設定し、GitLab アカウントに SSH キーを追加し、GitLab サーバーが動作するかテストしました。

この新しい知識を活用して、おそらく GitLab と自動化された継続的インテグレーション(CI)システムを設定する方法 を学びたいですか?

Source:
https://adamtheautomator.com/install-gitlab/