
目次
はじめに
こんにちは、クラウド事業部の山下です。
OCI上でインスタンスを作成してGitLabのSelf-managed環境の構築を試す機会がありました。
OCI、GitLabどちらも初めて触ってみたのでその流れをまとめておきたいと思います。
検証した構成について
検証なのでパブリックIPを持つインスタンスで良いかとは思いましたが、実際に業務で利用する場合はそのような構成にはしないかと思いGitLab Self-managedのインスタンスはプライベートサブネットに作成しました。
ドメインの取得やLBの構築などは行わなかったので、ウェブアクセスについては踏み台用のインスタンスを作成して確認することとしました。

事前準備
以下は完了している状況から今回の検証はスタートしました。
- OCIアカウント、IAMユーザーの作成
- コンパートメントの作成
OCI環境の準備
VCNの準備
検証を行うためのVCNを作成します。
今回はVCNウィザードを活用して作成しました。
VCNウィザードを使うとVCN名、IP CIDRブロックを入力するだけでゲートウェイやルート表等必要な複数のリソースを一括で作成できます。
手順は以下公式のドキュメントがとても参考になりました。
VCNウィザードを使用して作成されたリソースは以下です。
① VCN
② サブネット:パブリック、プライベートひとつずつ
③ ゲートウェイ:インターネットゲートウェイ、NATゲートウェイ、サービスゲートウェイ
④ ルート表:パブリックサブネット、プライベートサブネット用にひとつずつ
⑤ セキュリティリスト:パブリックサブネット、プライベートサブネット用にひとつずつ
インスタンスの準備
パブリックサブネットにWindowsインスタンス(Windows Server 2022)、プライベートサブネットにOracle Linuxインスタンス(Oracle Linux 9)を作成します。
以下の公式ドキュメントの手順を参考に作成しました。
oracle-japan.github.io
また、なるべく多くのOCIサービスを活用してみたかったので、プライベートのOracle LinuxインスタンスへのSSH接続はOCI Bastion経由で行いました。
Bastionを利用しての接続方法は以下の記事を参考にさせていただきました。
techblog.ap-com.co.jp
セキュリティリストのルール変更
パブリックサブネットにアタッチされているセキュリティリストのルールを変更します。
検証を実施しやすいよう自宅IPからのすべての通信を許可するイングレスルールを追加しました。
また、デフォルトでは0.0.0.0/0からSSH接続を許可するイングレスルールがありましたが、こちらは削除しました。
同様にプライベートサブネットにアタッチされているセキュリティリストのルールも変更しました。
こちらはパブリックサブネットからの通信はすべて許可するようイングレスルールを追加しました。
GitLab Self-Managedのインストール
OCI上に検証環境を準備できたので、GitLab Self-Managedのインストールを進めていきます。
Oracle LinuxインスタンスへBastion経由で接続したら、以下の公式ドキュメントに従ってインストールをします。
docs.gitlab.com
① SSHデーモンの有効化
sudo systemctl enable --now sshd
② OS ファイアウォールの設定
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-service=ssh sudo systemctl reload firewalld
③ パッケージインストールとGitlabリポジトリ追加(エンタープライズエディション)
sudo dnf install -y curl curl "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh" | sudo bash
④ GitLabのインストール
ブラウザからアクセスする際のURLをEXTERNAL_URLに記載します。
インストール後に設定ファイルを編集しての変更も可能です。
sudo EXTERNAL_URL="http://インスタンスのIPアドレス" dnf install gitlab-ee
⑤ 初回サインイン
踏み台のWindowsサーバーからインストール時に指定したURLにアクセスします。
ユーザー名は root で、初期パスワードは /etc/gitlab/initial_root_password に記載されています。
この初期パスワードのファイルは24時間後に自動削除されてしまうので注意してください。
初回サインインが完了したらパスワードを変更します。
パスワードは以下のように右上のアイコン⇒Edit Profile⇒Password から変更できます。

自己証明書を作成してhttps化する
検証環境ではありますが、https化も試してみました。
以下ドキュメントの内容を参考に進めました。
docs.gitlab.com
① /etc/gitlab/sslディレクトリの作成
sudo mkdir /etc/gitlab/ssl
② 証明書の作成
CNとSANには任意のドメインを記載してください。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/gitlab/ssl/gitlab.test.com.key -out /etc/gitlab/ssl/gitlab.test.com.crt -subj "/C=JP/ST=Tokyo/L=市区町村名/O=部署名/CN=gitlab.test.com" -addext "subjectAltName = DNS:gitlab.test.com"
作成後ファイルの権限も変更しておきます。
sudo chmod 600 /etc/gitlab/ssl/gitlab.test.com.key sudo chmod 644 /etc/gitlab/ssl/gitlab.test.com.crt
③ GitLabの設定ファイルの編集
/etc/gitlab/gitlab.rb を編集します。
external_url "https://gitlab.test.com" letsencrypt['enable'] = false nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.test.com.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.test.com.key"
④ GitLabの再設定
以下コマンドを実行して設定を反映させます。
sudo gitlab-ctl reconfigure
⑤ アクセス確認
crtファイルを踏み台のWindowsサーバーへコピーしてインポートします。
hostsファイルに ”IPアドレス gitlab.test.com” を追記して保存し、ブラウザからアクセスします。

おわりに
OCI上でGitLab Self-Managed環境の構築を試してみた際の流れをまとめてみました。
OCI自体初めて触ったのでOCI Bastion経由でのアクセスやネットワーク周りの設定等で詰まってしまうこともありましたが、今回試したことによってOCIについての理解が深まったので良かったです。
お知らせ
私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。