Amazon Linux 2023 に GitLab Community Edition をインストールする

2024.02.12

いわさです。

GitLab をセルフホストした検証環境が欲しくて、AWS 上に用意する機会がありました。

公式ドキュメントを見てみると、AWS の場合は公式提供の AMI を使う方法が紹介されていました。

東京リージョンのパブリックイメージを見つけることが出来たのですが、そのままだと GitLab の起動まで至りませんでした。スペック不足で失敗していたのだろうか...

また、Amazon Lightsail でも実は GitLab Community Edition のイメージが提供されています。
こちらも試してみたのですが思ったより導入が面倒そうなのと、管理可能な VPC 上でホスティングしたいと思っていたので、少しだけ試して見送ることにしました。

セルフホスティングインストール手順

特定のクラウドに依存しない、例えばオンプレミスのような環境向けのセットアップ手順も用意されています。

こちらは Ubuntu 20.04 で GitLab Enterprise Edition をインストールする場合の手順となっています。
Qiita か何かの記事で Ubuntu 20.04 の EC2 へセットアップする記事を見かけたので、おそらくこの手順は AWS 上でも実現が出来そうです。

但し、可能であれば Amazon Linux あたりにセットアップしたいなぁと思っていました。

Amazon Linux 2023 サポートされている

GitLab セルフホスティング環境のサポート OS が次のドキュメントにまとまっていました。
見てみると、どうやら Amazon Linux 2 や Amazon Linux 2023 はサポートされているではないですか。

そして各サポート OS バージョン向けのインストールドキュメントも用意されています。

Amazon Linux 2023 へインストール

結論としては、Amazon Linux 2023 はサポート対象で、以下のドキュメントに従えばセットアップ出来そうです。

ただし、このドキュメントは Enterprise Edition をインストールするためのものとなっており、Community Edition のセットアップを行う必要があったため一部手順を読み替える必要がありました。

次のように Amazon Linux 2023 を EC2 で用意します。
なお、今回は x86_64 で用意しましたが、GitLab パッケージ自体は Arm 版も用意されているようです。

インスタンスタイプは上記ドキュメントと次のインストール要件から t3.medium で作成しました。
おそらく最低限がこのあたりで、可能であれば vCPU が 4 以上の t3.large が良さそうです。今回は検証環境なので t3.medium にしました。

EC2 の作成完了後、SSM セッションマネージャーでリモートアクセスし、パッケージをインストールします。
概ね上記ドキュメントのとおりなので割愛しますが、Community Edition に置き換えの部分だけハイライトしておきます。

[ec2-user@ip-10-0-2-29 bin]$ sudo dnf install -y policycoreutils-python-utils openssh-server openssh-clients perl
Last metadata expiration check: 0:05:34 ago on Sun Feb 11 11:58:13 2024.
Package policycoreutils-python-utils-3.4-6.amzn2023.0.2.noarch is already installed.
Package openssh-server-8.7p1-8.amzn2023.0.9.x86_64 is already installed.
Package openssh-clients-8.7p1-8.amzn2023.0.9.x86_64 is already installed.
Dependencies resolved.

:


Complete!

[ec2-user@ip-10-0-2-29 bin]$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6968  100  6968    0     0  24348      0 --:--:-- --:--:-- --:--:-- 24278
Detected operating system as amzn/2023.
Checking for curl...
Detected curl...
Downloading repository file: https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/config_file.repo?os=amzn&dist=2023&source=script
done.

:

Generating yum cache for gitlab_gitlab-ce...
Generating yum cache for gitlab_gitlab-ce-source...

The repository is setup! You can now install packages.

[ec2-user@ip-10-0-2-29 bin]$ sudo EXTERNAL_URL="https://hoge0211gitlab.tak1wa.com" dnf install -y gitlab-ce
Last metadata expiration check: 0:03:35 ago on Sun Feb 11 12:16:48 2024.
:

Installed:
  gitlab-ce-16.8.2-ce.0.amazon2023.x86_64

Complete!

hoge0211gitlab.tak1wa.comを指定してインストールを行いましたので、EC2 宛の A レコードを作成しました。今回はパブリックアクセスを想定しています。

しばらくすると GitLab Community Edition のサインイン画面を表示出来ました。良いですね。

初期サインインですが、ユーザー名はrootで、パスワードは OS 内部から 24 時間以内に取得する必要があります。その手順もインストール手順のドキュメントに記述されています。

[ec2-user@ip-10-0-2-29 bin]$ sudo cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: A123XEcvX456rA9SVq789fsL3aaakrNIbbbObCKcccc=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

取得したパスワードを使って、GitLab のポータルへアクセスすることが出来ました。
良いですね。ここからプロジェクト作成や認証設定が出来そうです。

さいごに

本日は Amazon Linux 2023 に GitLab Community Edition をインストールしてみました。

普段は GitLab の SaaS 版を使うことが多いので、いざセルフホスティングしようとするとセットアップ手順がわからずに公式 AMI を使ったり Lightsail を使ったりと迷ってしまいましたので手順や公式ドキュメントへのリンクをまとめておきました。

同じようにどこを見て構築したら良いか迷った方の参考になれば幸いです。