GitLabをインストールしてHTTPS化する手順
この記事では、GitLabをインストールしてHTTPS化する手順について紹介します。
はじめに
バージョン管理システムのホスティングサービスとして GitHub や GitLab などを利用できると便利ですが、組織によってはそれらの利用が難しいこともあります。
そういった場合、オンプレミスのサーバなどで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化する手順について紹介しました。どなたかのお役に立てば幸いです。
-
実は、連結させずに(つまり取得したサーバ証明書だけ使って)動作確認したところ、PCとAndroidのGoogle Chromeでは問題ありませんでした。ブラウザ側で必要な中間証明書を補完してくれているみたいです。でも他の環境では不具合が起きるかも知れませんので、ここでは連結しておくことにします。 ↩︎
Discussion