【DOCKER】【GITLAB】DOCKER環境のGITLABサーバからメール通知を送信できるようにする。

前回の続き。

【Docker】【GitLab】WindowsのDocker環境にGitLabサーバを立ち上げる。 | 自分、ぼっちですが何か? (taki-lab.site)

GitLabサーバからメール通知を送信できるようにします。

今回もこちらのサイトを参考にしています。

https://e-penguiner.com/gitlab-with-docker-onpremise/#index_id11

この中ではSTMPサーバとしてGmailを利用しているので、同じようにします。

つまりGmailのアカウントからGitlabの通知メールが届くイメージですね。

これを可能にするためには、Gmailのアカウント設定を変更し、

二段階認証を設定する

アプリパスワードを設定する

という手順が必要になります。

二段階認証を設定する

こちらのサイトに説明が書いてあります。

https://e-penguiner.com/app-passwd-two-step-verification-for-gmail/

アカウントの設定から二段階認証を有効にします。

このとき、電話番号を入力し、SMSで受信した番号を入力する必要があります。

この手順を完了すると、アプリパスワードの項目が表示されるようになります。

アプリパスワードを設定する

アプリパスワードの項目から進んでいくと、16桁の英数字が表示されます。

この値は今後表示されることは無いので、必ずメモしてください。

gitlab.rbの設定

/srv/gitlab/config/gitlab.rbを編集します。

...
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
gitlab_rails['smtp_password'] = "your-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

smtp_user_nameとsmtp_passwordは自分の環境に合わせて書き換えてください。

smtp_user_nameはGmailアカウントのメールアドレス、

smtp_passwordはアプリパスワード16桁の英数字を記入します(スペースは不要)。

保存したら設定の読み込み。

docker-compose exec gitlab gitlab-ctl reconfigure

そしてサーバ再起動。

 docker-compose exec gitlab gitlab-ctl restart

ブラウザからGitlabにrootでログインし、ユーザーセッティングの画面へ。

Gmailのメールアドレスを入力すると、正しく設定できていれば、確認用のメールが届くので、リンクをクリックして認証を完了させる。

ドメインが合っていない場合はリンク先のドメインを良い感じに変更してください。

コンテナ作成時に設定を反映させる

以下のようにdocker-compose.ymlを修正すると、Dockerビルド時にここまでの設定変更を反映できます。

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com:8080'
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
        nginx['listen_port'] = 80
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "smtp.gmail.com"
        gitlab_rails['smtp_port'] = 587
        gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
        gitlab_rails['smtp_password'] = "your-password"
        gitlab_rails['smtp_domain'] = "smtp.gmail.com"
        gitlab_rails['smtp_authentication'] = "login"
        gitlab_rails['smtp_enable_starttls_auto'] = true
        gitlab_rails['smtp_tls'] = false
        gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
    ports:
      - '8080:80'
      - '2222:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'