はじめに
本記事では、AlmaLinux9でコンテナ(podman)でGitlabをオフラインで構築する方法をご紹介します。自分のPCにGitlabを立てられるので、使い方を知りたい人は自分でいろいろ試せると思うのでぜひご活用ください。
前提
・AlmaLinux9がインストールされていること。
・SELINUXを無効化していること。(vi /etc/selinux/configでSELINUX=disabledにして再起動すれば無効化できます。)
オンライン側手順
Gitlabのイメージをpull
以下のコマンドでインターネットからGitlabnoイメージをpullします。
podman pull docker.io/gitlab/gitlab-ce:latest
Gitlabイメージをtarにまとめて保存
以下のコマンドでtar化します。
podman save -o gitlab-ce.tar gitlab/gitlab-ce:latest
オフライン環境へ持ち込み
前述した手順で作成したtarを、構築するオフライン環境へ持ち込んでください。
Windowsのコマンドプロンプトからscpコマンドで取得できます。
オフライン側手順
Gitlabイメージの読み込み
今回の手順では、前述で作成したgitlab-ce.tarを/home/user配下に配置しました。
その配置したtarを以下のコマンドで読み込みます。※パスが異なる場合は任意のパスへcdしてから実施してください。
podman load -i gitlab-ce.tar
ディレクトリ作成
以下のコマンドを実行し、Gitlab用のデータディレクトリを作成します。
mkdir -p /srv/gitlab/config /srv/gitlab/logs /srv/gitlab/data
Gitlab起動
以下のコマンドで起動。
podman run --detach --hostname gitlab.example.com --publish 8443:443 --publish 8080:80 --publish 2222:22 --name gitlab --restart=always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
アクセス
以下のURLでアクセスする。GitLabの画面が現れたらOK。
http:{構築しているLinux環境のIP}:8080

初期パスワードは以下に記載されています。ユーザ名はrootでログインできます。
/srv/gitlab/config/initial_root_password
おわりに
最近はCI/CDがホットな話題になってきていますので、Gitlabを構築したことがあるだけでも結構価値のある人材なんじゃないかと個人的には思います。本手順を参考にぜひGitLabを構築してみてください。
今回の手順で躓いたポイントは後続の「トラブルシューティング」で記載していますので、もし躓いたら参考にしてみてください。
トラブルシューティング
MicroSoft StoreでインストールしたAlmaLinuxで少し躓いたので、躓いた点とその解決方法をご紹介します。
メモリ不足
podman runで起動して立ち上がっているのになぜか画面アクセスしてもGitlabの画面が表示されないという状況になりました。おそらくメモリ不足だったと思われるので、オフライン側はMicroSoft StoreからインストールできるAlmaLinux OS 9 で実施しました。(VMのメモリは4Gの設定でした)

rootでログインする
MicroSoft StoreからインストールできるAlmaLinuxを普通に立ち上げて設定すると、一般ユーザを作成する流れになります。そのユーザではsuでrootに切り替えができません。
そのためrootでログインには、コマンドプロンプトから以下のコマンドを実行する必要があります。
wsl -u root
Gitlabのroot初期パスワードでログインできない
何回かpodを作成し直したからか、GitLab初期アクセス時にrootでログインできませんでした。
そのため以下のコマンドでrootの初期パスワードを変更したらログインできました。
podman exec -it gitlab gitlab-rails console
##コンソールが表示されたら以下のコマンド実施
user = User.where(id: 1).first
user.password = '初期パスワード'
user.password_confirmation = '初期パスワード'
user.save!
コメント