How to migrate a GitLab CE installation

Goal

Transfer a GitLab CE installation from one local server to another one.

Important

For the migration to work, the old and new GitLab CE servers need the identical GitLab version installed.

Backup

On the old server, a full backup can be created like this:

sudo gitlab-backup create

The backup wil be saved to the default location /var/opt/gitlab/backups/, if not other specified in /etc/gitlab/gitlab.rb.

Transfer backup to new server

scp /var/opt/gitlab/backups/1617711536_2021_04_06_13.10.2_gitlab_backup.tar sij@NEW-SERVER-IP:/tmp/

Furthermore, the files /etc/gitlab/gitlab.rb and /etc/gitlab/gitlab-secrets.json need to be transferred as well.

scp /etc/gitlab/gitlab.rb sij@NEW-SERVER-IP:/tmp/
scp /etc/gitlab/gitlab-secrets.json sij@NEW-SERVER-IP:/tmp/

Restore

These steps are executed on the new server.

Prepare

First of all move the transferred backup in the right folder and change the owner to git.

sudo cp /tmp/1617711536_2021_04_06_13.10.2_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git:git /var/opt/gitlab/backups/ -R

Then, backup the files /etc/gitlab/gitlab.rb and /etc/gitlab/gitlab-secrets.json.

sudo mv /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb-bkp
sudo mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json-bkp

And restore this files.

sudo mv /tmp/gitlab.rb /etc/gitlab/
sudo mv /tmp/gitlab-secrets.json /etc/gitlab/

Before we can import the backup, we need to stop the gitlab services, which interact with the database.

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

We can verify that this two services are stopped.

sudo gitlab-ctl status

Hint

The service postgresql needs to be running.

Start the restore

Important - The whole GitLab content will be overwritten.

sudo gitlab-backup restore BACKUP=1617708602_2021_04_06_13.9.3

And after the restore, we need to reconfigure and restart gitlab.

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Source

Link, which helped me.