arculaДокументация

Приложения

GitLab

GitLab Omnibus в Docker arcula защищает тремя ресурсами. Они копируются разными способами, и в плане нужны все три.

Ресурс в планеЧто внутриКак копируется
PostgreSQL в контейнере GitLabБаза GitLab«pg_dump — согласованный дамп»
«GitLab: репозитории и загрузки»Репозитории, загрузки, артефакты, LFS, пакеты, registry«gitlab-backup» — штатный gitlab-backup create без базы
«GitLab: конфигурация и секреты»gitlab.rb и gitlab-secrets.json из /etc/gitlabКопия файлов

Базу снимает дамп, поэтому gitlab-backup запускается с SKIP=db: база не копируется дважды.

Проверить план

  1. Откройте план защиты сервера.
  2. В «Данные приложений» найдите «GitLab: репозитории и загрузки» — в группе «остальное». Галочка должна стоять, в «Как копировать» — «gitlab-backup».
  3. Там же проверьте галочки у базы GitLab и у «GitLab: конфигурация и секреты».
  4. Сохраните план.

Без «GitLab: репозитории и загрузки» в бэкап попадёт только база — репозитории и загрузки не сохранятся. Ресурс появился после того, как план уже был подтверждён, — у него метка «новое». Он войдёт в бэкап, только когда вы сохраните план.

В «Как копировать» написано «gitlab-backup — агент пока не умеет (обновите его)» — агент старый, и пока это копия файлов без согласованности. См. Обновить агентов.

Без gitlab-secrets.json архив gitlab-backup не восстановить: в нём ключи шифрования GitLab. Поэтому «GitLab: конфигурация и секреты» нужна обязательно.

Как идёт бэкап

Агент запускает в контейнере GitLab:

gitlab-backup create BACKUP=arcula-<время> SKIP=db

Архив переносится в /var/opt/gitlab/backups/snapshots/, уходит в бэкап и удаляется. В каталоге бэкапов GitLab архивы не копятся.

Упал gitlab-backup — этот компонент не попадёт в бэкап. Последние строки вывода — в журнале сервера.

Восстановить

Нужна та же версия и редакция GitLab (CE или EE), что в бэкапе. ЛК напоминает об этом у сервера: «Обзор» → «Понадобится при восстановлении».

Порядок: конфигурация и секреты, база, затем репозитории и загрузки.

1. arcula restore

На новой машине — prepare по recovery kit, как в статье Восстановить данные. Он вернёт каталог проекта, /etc/gitlab с gitlab-secrets.json, тома и базу из дампа. Проверьте в отчёте, что шаг базы выполнен: без неё архив восстанавливать нельзя.

Архив gitlab-backup arcula не применяет, а извлекает в /var/lib/arcula/restore/<id>/gitlab. Найдите его:

sudo find /var/lib/arcula/restore -name '*_gitlab_backup.tar'

Достать только архив, не трогая работающий GitLab, — режим component для «GitLab: репозитории и загрузки».

2. Запустить GitLab

cd /opt/gitlab && docker compose up -d

Дождитесь, пока GitLab поднимется.

3. Репозитории и загрузки

Ниже контейнер называется gitlab, архив — arcula-20261024T120000Z_gitlab_backup.tar. Подставьте свои:

docker cp /var/lib/arcula/restore/<id>/gitlab/arcula-20261024T120000Z_gitlab_backup.tar gitlab:/var/opt/gitlab/backups/
docker exec gitlab chown git:git /var/opt/gitlab/backups/arcula-20261024T120000Z_gitlab_backup.tar
docker exec gitlab gitlab-ctl stop puma
docker exec gitlab gitlab-ctl stop sidekiq
docker exec -it gitlab gitlab-backup restore BACKUP=arcula-20261024T120000Z SKIP=db
docker exec gitlab gitlab-ctl restart
docker exec gitlab gitlab-rake gitlab:check SANITIZE=true

BACKUP — имя архива без _gitlab_backup.tar. SKIP=db обязателен: базу уже поднял arcula restore.

Та же статья — в панели, в разделе «Справка».