LoginSignup
3
3

More than 1 year has passed since last update.

EC2上にGitLabサーバーを構築する

Posted at

EC2上にGitLabサーバーを構築する

記事内容

  • EC2上にgitlabサーバーを立てる方法
  • ユーザーの追加方法
  • gitlabからのメールの送信

モチベーション

コード管理はgithubを使いたいが、環境によっては使用できないプロジェクトもあり、その際のアプローチの一つとしてOSSのgitlabのサーバーを
自前でたてる.

導入環境

AWS EC2をサーバーとしてして使用.

インスタンスタイプ: t4g.large
OS: Ubuntu20.04 (arm)

Gitlabインストール

基本gitlab公式サイトのインストール手順のページから、ubuntuを選択し表示されるコマンドを上から順番に実行.

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates

メールサーバとしてpostfixを使用する場合は以下を実行. (今回はAWS SESを使用するのでMustではない)

sudo apt-get install -y postfix

GitLabパッケージをリポジトリに追加

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

gitlab install. EXTERNAL_URL="https://gitlab.example.com"を使用しているEC2のipに変更する.
今回はhttp://使用してるEC2のIPとした.

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

実行後、 ``にアクセスすればgitlab サーバーのweb uiにアクセスできる. このとき、EC2はhttpによるインバウンドが許可されている必要がある.

uiではユーザー名ろパスワードを要求されるので、

  • ユーザー名: root
  • パスワード: /etc/gitlab/initial_root_passwordに記載されているパスワード

を入力. /etc/gitlab/initial_root_password記載のパスワードは24時間で消えてしまうので注意.

入るとこんな感じ.

スクリーンショット 2023-03-26 16.43.17(2).png

メールの設定

このままでは、gitlabからメールを送信することができない. メールはユーザーの追加やパスワード変更、開発時のメンバーへの通知に使用するため
ここで設定する.

今回は、公式ドキュメントの手順に沿って、SMTPサーバーを使用してメールを送信する設定を実施.

AWS EC2を使用している場合 AWS SESとSMTPを使用する必要があるため上記方法を採用.
以下の手順を記載する

  • AWS SESの設定
  • gitlab serverにSMTPを設定

AWS SESの設定

AWSから AWS Simple Mail Serviceを選択. idの作成から、下記画面に遷移するのでメールアドレスを登録. ここでメールアドレスは自身のメールアドレスを使用する必要あり(設定したアドレスにメールが来て承認しなければならないので)

スクリーンショット 2023-03-26 16.49.33(2).png

メールアドレスを登録・承認したら検証済みIDからメールアドレスを選択し、左メニューのSMTP設定を選択.

スクリーンショット 2023-03-26 16.51.21(2).png

そのから SMTP認証情報の作成を選択しIAMユーザーを作成. 作成するとユーザー名・パスワードが生成されるので、ブラウザで表示されるユーザ名とパスワードを保存 or csvがダウンロードできるので保存しておく。作成時にしか保存できないので注意.
スクリーンショット 2023-03-26 16.51.26(2).png

スクリーンショット 2023-03-26 16.57.41(2).png

テストメールの送信

上記手順が完了したら、再度検証済みIDからメールアドレスを選択し、テストメールを送信.

下記画面からテストメールを送信
スクリーンショット 2023-03-26 16.59.15(2).png

シナリオはカスタムを選択し、カスタム受信者は選択しているメールアドレスと同じものを設定(自身にメールを送信する形になる)

スクリーンショット 2023-03-26 16.59.40(2).png

あとはタイトルや本文を適当に設定して送信. 自身のアドレスにメールが送信されているか確認
(迷惑メールに分類されているかも)

無事メールが受信できていればSESの設定は完了

gitlabのSMTP設定

EC2のターミナルから/etc/gitlab/gitlab.rbを編集する.

例えば

sudo vi /etc/gitlab/gitlab.rb

などでファイルを開き、

gitlab_rails['gitlab_email_from'] = 'SESで登録したメールアドレス'
gitlab_rails['gitlab_email_reply_to'] = 'SESで登録したメールアドレス'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "SMTP エンドポイントを設定"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "先ほど保存したSMTPのユーザー名"
gitlab_rails['smtp_password'] = "先ほど保存したSMTPのパスワード"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

SMTPエンドポイントはSES上で検証済みIDからメールアドレスを選択し、SMTP 設定から表示される. (基本リージョンで決まる)

スクリーンショット 2023-03-26 17.08.28(2).png

※ 設定を編集した項目はコメンントアウトを外さないと有効化されないので忘れずに対応

設定が完了したら、

sudo gitlab-ctl reconfigure

sudo gitlab-ctl restart

で設定を反映. restartするとUIが有効化されるまで数分かかるっぽいので待ってからUIに再度アクセス.

ユーザーの追加

rootでログインしたら、左上メニューバーからAdminを選択.

スクリーンショット 2023-03-26 17.13.38(2).png

New Userを選択
スクリーンショット 2023-03-26 17.13.42(2).png

各項目を設定するが、ここでEmailは先ほどSESで設定したメールアドレスである必要あり.
Access Levelで権限を選択. Administatorはroootと同等. ユーザーの作成・削除などができる
スクリーンショット 2023-03-26 17.14.01(2).png

登録したらメールが送信されるのでURLをクリックしてパスワードを再設定. これでユーザが追加された.

その他のユーザーの追加方法

コンソールからの追加 (手順)

ターミナルでsudo gitlab-rails consoleを実行してrailsのコンソールを起動. 起動に結構時間がかかる.

以下でユーザーを登録.

u = User.new(username: 'test_user', email: 'test@example.com', name: 'Test User', password: 'password', password_confirmation: 'password')
u.skip_confirmation! # Use it only if you wish user to be automatically confirmed. If skipped, user receives confirmation e-mail
u.save!

sign-upから登録

ログイン画面からsign upを選択しユーザーを登録. Adminユーザーのみが登録を承認できるので、承認する.

その他

手順は思ったより面倒(特にメールアドレスまわり). docker使用してもメール周りの手順は簡略化されなそうなので、AWSの設定は頑張るしかなさそう.
gitlabも無料だがそれなりの機能は揃っているので、githubが使用できない環境では有効な選択しになりそう.

CI/CDとかも試してみたい

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3