- 記事一覧 >
- ブログ記事
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
エラーは起きません。
⇒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
⇒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 をクリックします。
同時にパスワード変更通知「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
先ほど入力した 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 でも変更できます。
ユーザーを新規作成します。
パスワードにユーザー名を含めたり、単純すぎたりしたら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」メールが来ますので、リンクをクリックすると、登録完了になります。
できました!
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。