プロジェクト管理に GitLab の使用を開始する必要があると判断しましたが、GitLab を安全にインストールする方法がわかりませんか? GitLab のインストールは複雑なプロセスであるだけでなく、正しく行わないとデータが危険にさらされる可能性があります。しかし、心配しないでください。あなたは正しい場所に来ました!
読者ではありませんか?この関連するビデオ チュートリアルをご覧ください。 ビデオが表示されない場合広告ブロッカーが無効になっていることを確認してください。このチュートリアルでは、GitLab を安全にインストールするプロセス全体を学習するため、SSL 暗号化をセットアップし、最適なパフォーマンスを得るために GitLab を構成できます。
興味深いですね?すぐに飛び込め!
前提条件
このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものが揃っていることを確認してください:
- ルート アクセス権のある Linux サーバー – このデモでは Ubuntu 20.04 LTS を使用していますが、どの Linux ディストリビューションでも動作します。
- サーバーを指す完全修飾ドメイン名 (FQDN)。
- Let's Encrypt をサーバーにインストールしました。
- 最小要件 – 8 GB の RAM、50~100 Mb/秒の帯域幅、2 GHz のプロセッサ、20 GB のディスク容量
GitLab Community Edition のインストール
FQDN とサーバーの準備が整ったので、GitLab をインストールします。 Omnibus パッケージの使用やソースからのコンパイルなど、GitLab をインストールする方法はいくつかあります。ただし、このチュートリアルでは、開発者の GitLab リポジトリを使用して GitLab をインストールすることに焦点を当てています。
GitLab には 2 つのディストリビューションがあります:
- GitLab コミュニティ エディション (CE) – GitLab のオープンソースでコミュニティがサポートするバージョンを好むユーザー向け。
- GitLab エンタープライズ エディション (EE) – GitLab Enterprise Edition が提供する追加機能を必要とするユーザー向け。
ただし、このデモでは Community Edition を使用して、開発者環境でアプリケーションをテストします。
1. 端末を開いて apt update
を実行します 以下のコマンドを実行して、システムがすべての最新のソフトウェア アップデートにアクセスできるようにします。
apt update
コマンドは、apt
で使用されるパッケージ インデックス ファイルを更新します。 利用可能なパッケージに関する情報を取得するユーティリティ。
sudo apt update -y

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

3. curl
を実行します 以下のコマンドでダウンロード (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
コマンドが完了すると、次の出力が得られます。

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

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

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

GitLab インストールの構成
これで GitLab がシステムにインストールされましたが、GitLab を使用する前にいくつかの構成変更を行う必要があります。 GitLab の構成ファイル (/etc/gitlab/gitlab.rb ) には、GitLab サーバーの環境に固有ではない GitLab のグローバル設定が含まれています。
GitLab の構成ファイルを変更して、FQDN ドメイン名を設定し、ドメインへの接続を保護します。
1. /etc/gitlab/gitlab.rb を開きます 設定ファイルをお気に入りのテキスト エディタで開きます。
GitLab 構成ファイルで最も重要なエントリの 1 つは、外部 URL です。 以下に示すように、ディレクティブ。このディレクティブにより、ユーザーは Web ブラウザーを介して GitLab にアクセスできます。
外部 URL を変更する http://gitlab.example.com からのディレクティブの値 https://gitlab.yourdomain.com へ 、ここで yourdomain.com は FQDN ドメイン名です。

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

3. 最後に、以下のコマンドを reconfigure
に対して実行します。 /etc/gitlab/gitlab.rb に変更を適用します 設定ファイルを GitLab に。
sudo gitlab-ctl reconfigure

SSL 接続用にファイアウォールを構成する
GitLab を構成したので、ファイアウォール ルールを構成して、SSL を許可し、サーバーへの接続を保護する必要があります。 Uncomplicited Firewall (UFW) は、Ubuntu でファイアウォール ルールを管理するためのデフォルトのプログラムです。
サーバーをファイアウォールの内側に配置する場合は、HTTP ポート 80
を開く必要があります。 SSL 接続用の HTTPS ポート 443。
次のコマンドを実行して OpenSSH
を開きます 、 HTTP
、および HTTPS
GitLab サーバーのポート
sudo ufw allow OpenSSH && sudo ufw allow http && sudo ufw allow http

次のコマンドを実行して、ファイアウォールのステータスを確認してください。
sudo ufw status

ウェブ インターフェース経由で GitLab を保護する
ファイアウォールは稼働していますが、それは GitLab が安全であることを意味しますか?セキュリティのレイヤーを追加することは、決してやり過ぎではありません。そのため、Web インターフェースを介して GitLab のインストールをさらに保護できます。
1. お気に入りの Web ブラウザーを開き、GitLab サーバーに移動します。例:http://gitlab.example.com 、ここで example.com は FQDN ドメイン名です。
セキュリティを強化するために、GitLab サーバーにアクセスするときは、Chrome または Firefox を選択してください。これらの Web ブラウザは独自の HTTP/HTTPS プロトコルを使用しており、セキュリティ ポリシーの適用に役立ちます。
以下に、GitLab のログイン ページが表示されます。

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

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

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

GitLab サーバーにログインすると、以下に示すように、ブラウザーが GitLab ダッシュボードにリダイレクトされます。

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

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

3. ブラウザーで GitLab ダッシュボードに戻り、以下を使用して公開鍵を追加します。
- SSH キーをクリックします ユーザー設定の左側のパネルにあるメニュー SSH キーにアクセスするためのページ ページ。
- コピーした公開鍵 (手順 2) を Key に貼り付けます 以下に示すように、フィールド
- タイトルにキーの好きな名前を入力してください 分野。ただし、このデモでは、名前は ATA として設定されています –GitHub。
- [キーを追加] をクリックします アカウントへの公開鍵の追加を完了します。

パブリック サインアップの無効化
セキュリティを強化するために、GitLab でのパブリック サインアップを無効にすることができます。なんで? GitLab のパブリック サインアップ機能により、誰でも GitLab サーバーでアカウントを作成できます。この機能を無効にすると、サーバーへのブルート フォース攻撃を回避できます。
1. GitLab ダッシュボードから、[メニュー] をクリックします。 —> 管理者 管理パネルにアクセスするには、[設定] をクリックします。 管理パネルの一般にアクセスするには 設定ページ (ステップ 2)。

2. [サインアップ有効] を無効にします 登録制限のオプション セクション。これを行うと、GitLab のパブリック サインアップ機能が無効になります。

3. 下にスクロールして [変更を保存] をクリックします。 (下) サインアップ制限設定に加えた変更を保存します。

4. 最後に、アカウントからログアウトし、GitLab ログイン画面に移動します。
以下に示すように、今すぐ登録 リンクはなくなりました。

GitLab サーバーのテスト
この時点で、GitLab サーバーの構成と保護は既に完了しています。しかし、GitLab サーバーが実際に動作していることをどうやって確認するのでしょうか? GitLab ダッシュボードを介して GitLab プロジェクトを作成し、そのプロジェクトをサーバーに複製して、サーバーをテストします。
1. GitLab ダッシュボードで、プラス (+) をクリックします。 アイコンをクリックし、[新しいプロジェクト] をクリックします。 をクリックして、新しい GitLab プロジェクトを作成します。

2. 次に、希望のプロジェクトを提供します 名前 、しかし、このデモでは、プロジェクト名は ATA GitLab として設定されています 、および プロジェクト スラッグ (ata に設定されています –gitlab )。
[作成] をクリックします プロジェクト 新しいプロジェクトを作成します。

3. 端末に戻り、次のコマンドを実行してグローバル ユーザー名 (--global user.name
) を設定します。 ) および電子メール (--global user.email
) Git の場合。各ユーザー名と電子メールは、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 という名前の新しいディレクトリが作成されます。 .

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

結論
このチュートリアルでは、Ubuntu Linux システムで安全な GitLab インストールを実行する方法を学びました。ウェブ インターフェースを介して GitLab サーバーを保護し、GitLab アカウントに SSH キーを追加し、GitLab サーバーが機能するかどうかをテストしました。
この新たな知識を基に、GitLab を使用して自動化された継続的インテグレーション (CI) システムをセットアップする方法を学びたいと思われますか?