1. 記事一覧 >
  2. ブログ記事
category logo

Ubuntu 20.04.2.0にGitLabをインストール

(更新) (公開)

はじめに

Ubuntu 20.04.2.0 に GitLab をインストールしてみました。

GitLabはGitHubとほぼ同じ機能を有するOSSのソースコード管理ツールです。
オンプレミスで使う分には完全無料です。
同じ目的の場合、GitHubが有名ですが、閉じた環境で自力運用したくて、GitLabを選びました。
(GitHub Enterpriseの場合、オンプレミス運用できるようですが、有料になります。)
インストール環境:Ubuntu 20.04.2.0 (VMware上、インターネット接続あり)

インストール準備

root権限で作業していますので、全てsudoは省略しています。


パッケージを最新化します。

# apt update && apt upgrade
Do you want to continue? [Y/n]: Y

※以降基本的にYのため、-yを付けます。
 -y は、? [y/N]: のようなときに自動的に y とするオプションです。

apt update は、パッケージ一覧の更新

apt upgrade は、更新された一覧を元に、実際にパッケージを更新

という動作になります。


curlをインストールします。

# apt install -y curl

GitLab インストール

GitLabをインストールします。

# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
# apt install -y gitlab-ce

ホスト名を設定します。

# vi /etc/gitlab/gitlab.rb
external_url "http://gitlab.itccorporation.jp"

設定を反映します。

# gitlab-ctl reconfigure

ブラウザアクセス

https:// にもできますが、今回は、閉じた環境で運用するため、http:// のまま利用します。

http://gitlab.itccorporation.jp へブラウザでアクセス


ブラウザでアクセス


OKです!


最初の画面は、root のパスワードの設定です。rootは、GitLab管理者になります。


公式サイトのインストール手順では、postfixのインストールが書かれていましたが、smtpサーバーに直接繋いでメール送信できれば良いため、postfixのインストールは行っていません。
gmailでのメール送信設定を試してみました。

メール送信設定(gmail)

メール設定

gmailの設定を行います。

# vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "my.email@gmail.com"
gitlab_rails['smtp_password'] = "my-gmail-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'

gitlab_rails['smtp_openssl_verify_mode'] = 'peer'は、

SMTPサーバのSSL証明書の有効性を検証して、接続先がなりすまされていないことを確認します。

my.email@gmail.com は、自分のメールアドレス。my-gmail-password は、Googleアカウントのパスワードになります。


設定を反映します。

# gitlab-ctl reconfigure

gitlab-rails consoleで確認してみます。
smtpが有効かどうか確認します。

# gitlab-rails console
> ActionMailer::Base.delivery_method
=> :smtp

⇒OKです。


メール送信設定がきちんと設定されているか確認します。

> ActionMailer::Base.smtp_settings
=> {:authentication=>:login, :address=>"smtp.gmail.com", :port=>587, :user_name=>"my.email@gmail.com", :password=>"my-gmail-password", :domain=>"smtp.gmail.com", :enable_starttls_auto=>true, :tls=>false, :openssl_verify_mode=>"peer", :ca_file=>"/opt/gitlab/embedded/ssl/certs/cacert.pem"}

⇒OKです。


> Notify.test_email('my.email@gmail.com', 'Hello World', 'This is a test message').deliver_now
(略)
Net::SMTPAuthenticationError (535-5.7.8 Username and Password not accepted. Learn more at)

⇒メール送信テストでエラーになりました。


2段階認証無し

【2023年11月更新】

GMailの仕様変更により、2022年6月からこの方法は使えなくなりました。

下記「2段階認証有り」セクションへ飛んでください。

smtp.gmail.comを利用する場合、Googleアカウントの設定が必要のようです。
「安全性の低いアプリのアクセス」をオンにしたらうまくいきました。


(旧設定)セキュリティ


(旧設定)アクセスを有効にする (非推奨)


(旧設定)「安全性の低いアプリのアクセス」をオン


# gitlab-rails console
> Notify.test_email('my.email@gmail.com', 'Hello World', 'This is a test message').deliver_now

エラーは起きません。


メーラーで確認をすると、メールが来ました。 2段階認証無し テストメール


⇒Good!


2段階認証有り

2段階認証をOnにしている場合、別の対応が必要のようです。
アプリ パスワードを利用したらうまくいきました。


アプリパスワード


生成されたアプリパスワード


# vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "my.email@gmail.com"
gitlab_rails['smtp_password'] = "my-gmail-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'

my-gmail-password をアプリ パスワードにします。


# gitlab-ctl reconfigure

# gitlab-rails console
> Notify.test_email('my.email@gmail.com', 'Hello World', 'This is a test message').deliver_now

メーラーで確認をすると、メールが来ました。 2段階認証有り テストメール


⇒Good!


コンソールでのユーザー登録

【2023年11月更新】

ブログ投稿当時(2021年05月09日)と状況が異なっていましたので、内容を刷新しました。

gitlab-rails console でユーザー登録ができます。


まずは、root(管理者)を登録します。

# gitlab-rails console
> user = User.where(id: 1).first
=> #<User id:1 @root>
> user.password = 'パスワード'
> user.password_confirmation = 'パスワード'
> user.email
=> "admin@example.com"
> user.email = 'rootのメールアドレス'
> user.email_confirmation = 'rootのメールアドレス'
> user.save!
=> true

rootのメールアドレス宛に「Confirmation instructions」メールが送信されてきますので、Confirm your email address をクリックします。

root宛てConfirm your email addressメール

同時にパスワード変更通知「Password Changed」メールとメールアドレス変更通知「Email Changed」メールが送られてきます。

変更前のメールアドレス admin@example.com に送られてエラーになりますが、避けられないようです。

以降、同様にメールアドレスを変更すると、メールアドレス変更前のメールアドレスに通知されるようです。

【エラー】

ドメイン example.com が見つからなかったため、メールは admin@example.com に配信されませんでした。入力ミスや不要なスペースがないことを確認してから、もう一度送信してみてください。

DNS Error: DNS type 'mx' lookup of example.com responded with code NCERROR The domain example.com doesn't receive email according to the administrator: returned Null MX. Learn more at https://www.rfc.editor.org/info/rfc7505

Email Changedメールエラー


先ほど入力した root のメールアドレスとパスワードでログインできたら、root の登録は完了です。

root のメールアドレスとパスワードでログイン


rootログイン後


続いて、ユーザーを登録します。


まず、以下のように Email confirmation settings を hard に変更しておきます。

> ApplicationSetting.last.update(email_confirmation_setting: 'hard')

soft:3日以内に「Confirmation instructions」メールのリンクのクリックが必要です。3日以内なら、「Confirmation instructions」メールのリンクのクリック無しでログインできます。
hard:「Confirmation instructions」メールのリンクのクリックが必須です。


ちなみに、root で GUI でも変更できます。

GUIでhardに変更


ユーザーを新規作成します。

パスワードにユーザー名を含めたり、単純すぎたりしたらNGのようです。

メールアドレスは、rootと同じにできません。メアドが一つでテストする場合、xxxxx+test1@gmail.com のようにプラス記号を使うと良いです。

>u = User.new(
>username: 'testuser',
>email: 'my.email@gmail.com',
>name: 'Test User',
>password: 'test-user-pass',
>password_confirmation: 'test-user-pass')
=> #<User id: @testuser>
>u.save!
=> true

登録したユーザーに「Confirmation instructions」メールが来ますので、リンクをクリックすると、登録完了になります。

ユーザー宛て「Confirmation instructions」メール


ユーザーのメールアドレスとパスワードでログイン


ユーザーログイン後


できました!

loading...