あなたはプロジェクト管理に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
ユーティリティが利用可能なパッケージの情報を取得するために使用するパッケージインデックスファイルを更新します。

2. 次に、以下のapt install
コマンドを実行して、GitLabのインストールに必要な以下の依存関係(curl
)をダウンロードしてinstall
します:
openssh-server
パッケージ – OpenSSHサーバーデーモンおよび関連ツール(ホストキー管理ツールやサーバーなど)が含まれ、ユーザーにリモートログインアクセスを提供します。ca-certificates
パッケージ-CA証明書のリストが含まれています。このパッケージは、サーバーでHTTPSサポートを有効にするために必要なファイルを提供します。

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

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

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

インストールにはしばらく時間がかかりますが、インストールが完了すると、次の出力が表示されます。この出力により、システムに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ドメイン名です。

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

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

SSL接続のためにファイアウォールを設定する
GitLabを設定したら、サーバーへのSSLおよびセキュア接続を許可するためにファイアウォールルールを設定する必要があります。Ubuntuでは、ファイアウォールルールを管理するデフォルトプログラムは、Uncomplicated Firewall(UFW)です。
サーバーをファイアウォールの背後に配置する場合、SSL接続のためにHTTPポート80
とHTTPSポート443を開く必要があります。
次のコマンドを実行して、GitLabサーバーのOpenSSH
、HTTP
、およびHTTPS
ポートを開きます。

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

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のログインページが表示されます。

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

ターミナルに戻り、以下のcat
コマンドを実行してinitial_root_password
を取得します。
デフォルトでは、GitLabのインストールには自動生成された初期ルートパスワードが付属しています。
初期ルートパスワードをコピーして安全な場所に保存してください。このパスワードは、GitLabにログインする際に使用します(ステップ4)。

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

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

GitLabアカウントにSSHキーを追加する
Webインターフェイスの他に、安全な方法でコマンドライン環境からもGitLabにアクセスできます。方法は?まず、アカウントにSSHキーを追加しておく必要があります。これにより、パスワードを入力せずに端末でコマンドを実行してGitLabにアクセスできます。
1. SSHキーを生成するには、ssh-keygen
コマンドを実行します。プロンプトが表示されたら、Enterキーを押してSSHキーのデフォルト保存場所(/root/.ssh/id_rsa)を保持し、パスフレーズを追加しないでください。

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

3. ブラウザーでGitLabダッシュボードに戻り、次の手順で公開鍵を追加します:
- SSH Keysメニューをクリックして、User Settingsページの左パネルからSSH Keysページにアクセスします。
- コピーした公開鍵(ステップ2)をKeyフィールドに貼り付けます。
- Titleフィールドにキーの名前を入力します。ただし、このデモでは名前がATA–GitHubに設定されています。
- Add Keyをクリックして、公開鍵をアカウントに追加します。

パブリックサインアップの無効化
追加のセキュリティのために、GitLabでパブリックサインアップを無効にすることができます。なぜ? GitLabのパブリックサインアップ機能は、誰でもGitLabサーバーにアカウントを作成できるようにします。この機能を無効にすると、サーバーへのブルートフォース攻撃を回避できます。
1. GitLabダッシュボードから、Menuをクリック —> Adminをクリックして管理パネルにアクセスし、次にSettingsをクリックして管理パネルのGeneral設定ページにアクセスします(ステップ2)。

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

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

4. 最後に、アカウントからログアウトし、GitLabのログイン画面に移動します。
以下に示すように、Register nowリンクは消えています。

GitLabサーバーのテスト
この時点で、GitLabサーバーを構成してセキュリティを確保しましたが、サーバーが実際に動作しているかどうかはどうやって確認しますか?GitLabダッシュボードを使用してGitLabプロジェクトを作成し、プロジェクトをサーバーにクローンしてテストします。
1. GitLabダッシュボードで、検索ボックスの横にあるプラス(+)アイコンをクリックし、次にNew projectをクリックして、新しいGitLabプロジェクトを作成します。

2. 次に、好みのProject nameを指定しますが、このデモではプロジェクト名はATA GitLabとし、Project slugは(ata–gitlab)に設定されています。
Create projectをクリックして新しいプロジェクトを作成します。

3. ターミナルに戻り、以下のコマンドを実行して、Git のグローバルユーザー名(--global user.name
)とメールアドレス(--global user.email
)を設定します。各ユーザー名とメールアドレスは、GitLab サーバー上のすべてのアカウントでグローバルに一意です。
4. 今度は、以下の git clone
コマンドを実行して、作成した ATA GitLab プロジェクト(ステップ2)を現在のディレクトリにクローンします。 yourdomain.com
を FQDN に置き換えてください。
すべてがうまくいくと、次のような出力が表示されます。クローンが完了すると、ATA-GitLabという新しいディレクトリが作成されます。

5. 最後に、ls
コマンドを実行して、ATA-GitLab ディレクトリが存在するか確認します。
新しい ATA GitLab プロジェクトをクローンし、ATA GitLab ディレクトリが存在するため、以下の出力が GitLab サーバーが正常に動作していることを確認しています。

結論
このチュートリアルでは、Ubuntu Linux システムに安全な GitLab をインストールする方法を学びました。Web インターフェイスを介して GitLab サーバーをセキュリティ設定し、GitLab アカウントに SSH キーを追加し、GitLab サーバーが動作するかテストしました。
この新しい知識を活用して、おそらく GitLab と自動化された継続的インテグレーション(CI)システムを設定する方法 を学びたいですか?