🦊

GitLabをインストールしてHTTPS化する手順

2022/06/12に公開

この記事では、GitLabをインストールしてHTTPS化する手順について紹介します。

はじめに

バージョン管理システムのホスティングサービスとして GitHubGitLab などを利用できると便利ですが、組織によってはそれらの利用が難しいこともあります。

そういった場合、オンプレミスのサーバなどでGitLabを運用することが考えられます。

今回は、オンプレミスのUbuntu 20.04 ServerにGitLabをインストールしてHTTPS化する手順を見ていきます。

GitLabのインストール

公式ドキュメント Install self-managed GitLab に沿ってGitLabをインストールしましょう。

インストール

まず前提として必要なパッケージをインストールします。

sudo apt update
sudo apt install curl openssh-server ca-certificates tzdata perl

それからGitLabパッケージのリポジトリを登録します。

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

最後に次のような感じでGitLabをインストールします。 gitlab.example.com の部分はそれぞれのFQDNに合わせて変更しましょう。

sudo EXTERNAL_URL="http://gitlab.example.com" apt install gitlab-ee

なお、後ほどHTTPS化しますので、この段階での外部公開URLはHTTPにしています。

動作確認

GitLabのインストール後、次のコマンドで管理者パスワードを確認します。

sudo cat /etc/gitlab/initial_root_password

一度ブラウザでGitLabにアクセスし、ログインできることを確認しておきましょう。

また、デフォルトで「誰でもサインアップ可能」な設定になっているみたいなので、この機能はオフにしておきます。あわせて管理者パスワードも変更しておくと安心ですね。

GitLabのHTTPS化

HTTPS化にあたって必要なサーバ証明書を UPKI電子証明書発行サービス で取得しました。

公式ドキュメント Manually configuring HTTPS に沿って進めましょう。

設定ファイルの編集

GitLabの設定ファイル /etc/gitlab/gitlab.rb を変更します。

まずは外部公開URLの変更です。

+ external_url "https://gitlab.example.com"
- external_url "http://gitlab.example.com"

次に Let's Encrypt を無効にしておきます。

+ letsencrypt['enable'] = false
- # letsencrypt['enable'] = nil

さらにHTTPをHTTPSへリダイレクトするように変更します。

+ nginx['redirect_http_to_https'] = true
- # nginx['redirect_http_to_https'] = false

最終行に次の2行も追加しましょう。

+ registry_nginx['redirect_http_to_https'] = true
+ mattermost_nginx['redirect_http_to_https'] = true

これで設定ファイルの編集は終わりです。

秘密鍵とサーバ証明書のインストール

続いて /etc/gitlab/ssl ディレクトリに秘密鍵とサーバ証明書をインストールしましょう。

次のようにして、取得したサーバ証明書とNIIの中間証明書を連結して証明書を作成します。[1]

cat gitlab.example.com.cer nii-odca4g7rsa.cer > gitlab.example.com.crt

また、秘密鍵に設定していたパスフレーズを解除します。

openssl rsa -in gitlab.example.com_before.key -out gitlab.example.com.key

ディレクトリを作って秘密鍵と証明書をコピーすれば、インストールは完了です。

sudo mkdir -p /etc/gitlab/ssl
sudo chmod 755 /etc/gitlab/ssl
sudo cp gitlab.example.com.key /etc/gitlab/ssl/
sudo cp gitlab.example.com.crt /etc/gitlab/ssl/

最後にGitLabを再構成します。ちょっと時間がかかると思いますのでゆっくり待ちましょう。

sudo gitlab-ctl reconfigure

そうしてブラウザでGitLabにアクセスすると、HTTPS化できていることを確認できるはずです。

おわりに

GitLabをインストールしてHTTPS化する手順について紹介しました。どなたかのお役に立てば幸いです。

脚注
  1. 実は、連結させずに(つまり取得したサーバ証明書だけ使って)動作確認したところ、PCとAndroidのGoogle Chromeでは問題ありませんでした。ブラウザ側で必要な中間証明書を補完してくれているみたいです。でも他の環境では不具合が起きるかも知れませんので、ここでは連結しておくことにします。 ↩︎

Discussion