До основного вмісту

Перенесення self-hosted GitLab на новий сервер

Міграція · 29.09.2026

Способи перенесення self-hosted GitLab

Self-hosted GitLab переносять двома способами: офіційним механізмом резервного копіювання gitlab-backup або повним копіюванням каталогів Omnibus-інсталяції. Перший спосіб підходить для переїзду між версіями GitLab, другий — для перенесення «як є» на ідентичну версію.

Перед перенесенням зафіксуйте версію пакета: gitlab-ce або gitlab-ee однієї версії мають стояти і на старому, і на новому сервері до відновлення бекапу.

Резервне копіювання через gitlab-backup create

Команда створює архів із репозиторіями, базою даних і вкладеннями, але не включає конфігурацію і секрети:

gitlab-backup create BACKUP=2026_09_29
ls /var/opt/gitlab/backups/

Файл архіву виду 2026_09_29_16.5.0_gitlab_backup.tar скопіюйте на новий сервер через scp або rsync.

Перенесення секретів і gitlab.rb

Без файлу /etc/gitlab/gitlab-secrets.json відновлений GitLab не зможе розшифрувати токени CI/CD, паролі користувачів 2FA і змінні середовища. Перенесіть обидва файли конфігурації разом із бекапом:

scp /etc/gitlab/gitlab-secrets.json root@newserver:/etc/gitlab/
scp /etc/gitlab/gitlab.rb root@newserver:/etc/gitlab/

На новому сервері застосуйте конфігурацію командою gitlab-ctl reconfigure до відновлення бекапу.

Відновлення на новому сервері

Зупиніть сервіси запису даних, залишивши працювати лише базу і Redis, і відновіть архів:

gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-backup restore BACKUP=2026_09_29
gitlab-ctl restart

Перевірте вивід команди на помилки відновлення прав доступу — типова проблема, якщо каталог /var/opt/gitlab/backups скопійовано без збереження власника git:git.

Перенесення Container Registry і артефактів CI/CD

Образи Container Registry не входять у штатний бекап при зберіганні на локальному диску понад певний обсяг. Перенесіть каталог реєстру окремо:

rsync -avz /var/opt/gitlab/gitlab-rails/shared/registry/ root@newserver:/var/opt/gitlab/gitlab-rails/shared/registry/

Якщо GitLab запущений у Docker-контейнерах, порядок перенесення самих контейнерів і томів описано в статті про перенесення Docker-контейнерів між серверами. Для великих каталогів реєстру використовуйте методи зі статті про синхронізацію серверів через rsync — це дозволить докопіювати дані без повторної повної передачі.

Перевірка після перенесення

Виконайте діагностику служб і порівняйте кількість проєктів і користувачів:

gitlab-rake gitlab:check SANITIZE=true
gitlab-rails runner "puts Project.count"

Перевірте клонування одного репозиторію по SSH і HTTPS, запуск CI-пайплайну і вхід хоча б одного користувача з увімкненим 2FA — це найчастіше джерело проблем при перенесенні без секретів.

Підсумок: чек-лист перенесення GitLab

  • Переконайтеся, що версія GitLab на новому сервері збігається з вихідною.
  • Створіть бекап через gitlab-backup create і перенесіть архів.
  • Скопіюйте gitlab-secrets.json і gitlab.rb до відновлення.
  • Відновіть бекап і перенесіть каталог Container Registry окремо.
  • Перевірте клонування репозиторію, CI-пайплайн і вхід із 2FA.

Після перемикання DNS на новий сервер пройдіться по загальному чек-листу перевірки після міграції.

← Назад до бази знань Поставити питання підтримці