はじめに
この記事では、GitLab Community Edition (GitLab CE) のインストールと設定の方法を紹介します。
GitLabのホームページに掲載されている方法は、Enterprise Edition (GitLab EE) なので、eeをceに修正する必要があります。

環境
・Debian buster 64bit
・GitLab Community Edition (GitLab CE)
インストール
GitLabの公式ホームページを参考にインストールします。
公式ホームページでは「gitlab-ee」となっているので「gitlab-ce」に修正します。
postfixのインストール時にタイプを尋ねられるのでインターネットサイト(Internet Site)とします。
sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates perl sudo apt-get install -y postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
署名には有効期限があります。
最新の署名にアップデートするための下記コマンドは、定期的に実行した方が良いです。
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
パソコンのIPアドレス、またはホスト名を指定してインストールします。
今回は内部用なのでhttpで暗号化していません。
例えばホスト名が「xxxxx.com」でポート81番を使用し、ディレクトリを「gitlab」とすると以下のようになります。
ポート番号を指定しない場合は80番ポートで「http://xxxxx.com/gitlab」となります。
今回は無料のCE版を使うので「gitlab-ce」を指定します。
sudo EXTERNAL_URL="http://xxxxx.com:81/gitlab" TIME_ZONE="Asia/Tokyo" apt-get install gitlab-ce
既にPostgreSQLやNginxインストールしている場合は「POSTGRESQL_PORT=xxxx」、「NGINX_PORT=xxxx」でポート番号を変更します。
デフォルトはPostgreSQLが5432、Nginxが80なので変更します。
sudo EXTERNAL_URL="http://xxxxx.com:81/gitlab" TIME_ZONE="Asia/Tokyo" POSTGRESQL_PORT=5433 NGINX_PORT=8080 apt-get install gitlab-ce
空いているポートを調べるには、以下のコマンドを起動します。
sudo apt install net-tools sudo netstat -tunlp | grep LISTEN
以下のように、現在使っているポートが出力されます。
例えば「127.0.0.1:5432」の5432がポートとなります。
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1165/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 425/sshd tcp6 0 0 :::80 :::* LISTEN 1231/nginx tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 761/postgres tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 734/nginx: master p
Webブラウザで「http://xxxxx.com:81/gitlab」にアクセスしてrootのパスワードを設定します。
インストール時のコマンドでtime_zoneが未設定の場合は「/etc/gitlab/gitlab.rb」でtime_zoneを「Asia/Tokyo」に設定し、GitLabを再構築します。
sudo vi /etc/gitlab/gitlab.rb gitlab_rails['time_zone'] = 'Asia/Tokyo' sudo gitlab-ctl reconfigure
GitLabデータの移行
パソコンを入れ替える場合、それまで運用していたGitLabサーバからデータを移行します。
旧サーバでバックアップする
バックアップするとファイルは「/var/opt/gitlab/backups/」に作成されます。
ファイル名は「xxxxxx_2021_07_01_14.0.1_gitlab_backup.tar」のように乱数、日付、GitLabのバージョンから付けられます。
sudo /opt/gitlab/bin/gitlab-rake gitlab:backup:create
バックアップしたファイルをSambaやFTP、USBメモリなどを使って旧サーバのデータを新サーバに移動します。
「/etc/gitlab/gitlab-secrets.json」の「db_key_base」の値をメモします。
新サーバでリストアする
旧サーバから持ってきたバックアップを以下の場所にコピーまたは移動します。
sudo cp /tmp/xxxxxx_2021_07_01_14.0.1_gitlab_backup.tar /var/opt/gitlab/backups
旧サーバの「/etc/gitlab/gitlab-secrets.json」にある「db_key_base」の値を新サーバに入力します。
sudo vi /etc/gitlab/gitlab-secrets.json "db_key_base" = "xxxxxxxxxxxxxxxxxxxxxxxxx"
GitLabを再構築します。
sudo gitlab-ctl reconfigure
データをリストアする前にプログラムを停止します。。
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq
リストア途中で現在のユーザデータを削除するなどの質問が出るので、全て「yes」とします。
「BACKUP=」で指定するのはバックアップファイルの「xxxxxx_2021_07_01_14.0.1_gitlab_backup.tar」から「_gitlab_backup.tar」を除いた「xxxxxx_2021_07_01_14.0.1」となります。
sudo gitlab-rake gitlab:backup:restore BACKUP=xxxxxx_2021_07_01_14.0.1 gitlab-rake gitlab:check SANITIZE=true
プログラムを起動します。
sudo gitlab-ctl start sidekiq sudo gitlab-ctl start unicorn
Webブラウザで「http://xxx.xxx.xxx.xxx:81/gitlab」にアクセスして確認します。
GitLabのバックアップ設定(リポジトリとデータベース)
バックアップするコマンドは以下です。
バックアップファイルは「/home/gitlab/backups/」に保存されます。
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
cronで毎朝5時にバックアップする場合はcrontabで指定します。
sudo crontab -e 00 05 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
保険のためにautofsで外付けUSBハードディスクを「/mnt/usb」にマウントし、「/mnt/usb/basckup/gitlab/」を作成してrsyncで差分コピーします。
sudo mkdir -p /mnt/usb/basckup/gitlab/ cd /home/gitlab/ sudo vi backup-gitlab.sh sudo chmod 755 backup-gitlab.sh
スクリプトは以下のようにします。
#!/bin/sh RSYNC="/usr/bin/rsync" DIR="/home/gitlab/backup" $RSYNC -vac /var/opt/gitlab/backups/ $DIR > /home/gitlab/log.txt chmod 755 $DIR
cronで毎朝6時に実行します。
crontab -e 00 06 * * * /home/gitlab/backup-gitlab.sh
GitLabのアンインストール
sudo apt purge --auto-remove gitlab-ce
Comments