gitlab.comで運用していたリポジトリのグループメンバーが増える予定になったのでいっそのことself-hostedにするかと。
要件
- 運用中のHyper-vホストにVMとして乗せる
- 4コア 8GB 300GB ぐらいの規模感で
- メール通知は新たにgmailでアカウントを作ってそこから。
- CI/CDはそこまで使っていないので追々がんばる
- let's enclypt使ってhttpsに
Almalinuxインストール
VM立ててisoからインストール。インストールタイプはサーバーを選択。
バックアップを考えて仮想ディスクを分割した。
- /dev/sda 50GB ルート
- /dev/sdb 300GB Gitlab用 /var/optにマウント
GitLabインストール
How To Install GitLab on Rocky Linux 9 / AlmaLinux 9 | ComputingForGeeks
を参考に。
面倒なのでrootで作業。
更新して必須ライブラリのインストール
dnf update -y
dnf -y install curl vim policycoreutils python3-policycoreutils git
gitlabのリポジトリ追加
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo
/etc/yum.repos.d/gitlab_gitlab-ce.repo
[gitlab_gitlab-ce]
name=gitlab_gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/8/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[gitlab_gitlab-ce-source]
name=gitlab_gitlab-ce-source
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/8/SRPMS
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[root@localhost ~]# dnf repolist
repo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
extras AlmaLinux 9 - Extras
gitlab_gitlab-ce gitlab_gitlab-ce
gitlab_gitlab-ce-source gitlab_gitlab-ce-source
OK
gitlab-ceのインストール
dnf install gitlab-ce -y
メール通知用のgmailアドレスを作成
MFAを有効にしてアプリパスワードを取得しておく。
gitlabの設定
もとからある設定ファイルは冗長なのでバックアップして新規作成する。
mv /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab.new.server.fqdn'
nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['<letsEncryptへの登録アドレス>']
letsencrypt['auto_renew'] = true
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '<通知用アドレス>'
gitlab_rails['gitlab_email_display_name'] = '<通知メールの表示名>'
gitlab_rails['gitlab_email_reply_to'] = '<通知用アドレス>'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "<通知用アドレス>"
gitlab_rails['smtp_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['time_zone'] = 'Asia/Tokyo'
prometheus['enable'] = false
puma['enable'] = true
puma['ha'] = false
puma['worker_timeout'] = 60
puma['worker_processes'] = 2
puma['min_threads'] = 2
puma['max_threads'] = 2
external_url
は外部から接続可能なfqdnでかつ、Let's EncryptのACMEを通すため最初はhttp://
にしておく必要があるとこがミソ。
gitlabの起動
firewallに穴を開けてgitlabの起動
firewall-cmd --permanent --add-service={ssh,http,https} --permanent
firewall-cmd --reload
gitlab-ctl reconfigure
これで http://gitlab.new.server.fqdn
につながるはず。
初期パスワードは/etc/gitlab/initial_root_password
に入ってるのでこれを使ってrootでログインできるか確認。
sslの強制に変更
external_url
をhttpsにするだけ
vi /etc/gitlab/gitlab.rb
external_url 'https://gitlab.new.server.fqdn'
gitlab-ctl reconfigure
SELinux下で鍵認証を有効にするためにパーミッション調整
chcon -R -t ssh_home_t /var/opt/gitlab/.ssh