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

Восстановление

Восстановить без панели

Бэкапы — обычные restic-репозитории в ваших S3. Поднять их можно без панели, без подписки и без нашего API: нужен recovery kit. Пока панели нет, остальные серверы продолжают бэкапы по своим планам: план хранится на каждом сервере.

Recovery kit

Kit — файл arcula-recovery-kit-<дата>.age: адреса хранилищ, ключи S3 и пароли restic-репозиториев всех серверов, в том числе отключённых, если их бэкапы ещё лежат. Файл зашифрован паролем, который вы задаёте при выдаче. Мастер-ключа панели, её настроек и ключей unseal Vault в kit нет.

Скачать: ЛК → «Настройки» → «Восстановление без панели» → «Recovery kit» → «Скачать». Понадобятся пароль от ЛК и новый пароль для файла.

Храните kit офлайн: файл — на своём компьютере в защищённой папке, пароль от файла — в менеджере паролей. Не на серверах и не в хранилищах с бэкапами: kit нужен как раз тогда, когда их нет. Сменились хранилища или ключи — ЛК напомнит сохранить kit заново.

Проверяйте kit время от времени. Root не нужен, подойдёт любая Linux-машина с arcula и restic:

arcula kit verify ./arcula-recovery-kit-2026-10-24.age

Команда открывает kit и для каждого репозитория каждого сервера читает список снимков и manifest последнего бэкапа. Ничего не меняет. Всё в порядке — «Emergency access is set up: the kit opens, all repositories are readable.» Итог виден только в терминале, в ЛК он не уходит.

Где взять arcula без панели

install.sh взять негде, поэтому ставим вручную:

  • arcula — с любого живого сервера (/usr/local/bin/arcula) или из каталога релиза downloads/arcula/<версия>/linux-<arch>, сверив с SHA256SUMS;
  • restic 0.18.1 — с GitHub или из релиза;
  • Docker Engine и Compose v2 — если восстанавливаются тома и базы.

Например, на amd64:

scp живой-сервер:/usr/local/bin/arcula .
sudo install -m 0755 arcula /usr/local/bin/arcula
curl -fsSLO https://github.com/restic/restic/releases/download/v0.18.1/restic_0.18.1_linux_amd64.bz2
bunzip2 restic_0.18.1_linux_amd64.bz2
sudo install -d -m 0700 /var/lib/arcula
sudo install -D -m 0755 restic_0.18.1_linux_amd64 /var/lib/arcula/bin/restic

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

arcula kit verify ./arcula-recovery-kit-2026-10-24.age
sudo arcula restore --kit ./arcula-recovery-kit-2026-10-24.age

С --kit arcula идёт без мастера: готовит сервер (prepare) из самого свежего бэкапа, показывает план и ждёт подтверждения. Пароль kit спросит без эха. Нужен компонент или файлы — добавьте --mode component --component … или --mode files --path … --target …. Пошаговый мастер — sudo arcula restore без флагов: на машине без доступа к хранилищам он сам спросит файл kit.

  • --server NAME — какой сервер из kit. Не нужен, если сервер в kit один или имя хоста совпадает.
  • --from NAME — хранилище. Без него — первое, где есть бэкап.
  • --password-file FILE — пароль kit из файла, для скриптов.

Сервисы не запускаются. Подробнее о режимах и отчёте — Восстановить данные.

Обычный restic вручную

Без arcula данные поднимает и сам restic. Kit — файл age с паролем, расшифруйте его:

age -d arcula-recovery-kit-2026-10-24.age > kit.json

В kit.json у сервера в repositories — адрес репозитория (repository) и его пароль (repository_password). Ключ S3 и регион — у хранилища в storages. Если у хранилища свой ключ у каждого сервера, ключ — у репозитория сервера.

export RESTIC_REPOSITORY='<repository из kit>'
export RESTIC_PASSWORD='<repository_password из kit>'
export AWS_ACCESS_KEY_ID='…'
export AWS_SECRET_ACCESS_KEY='…'
export AWS_DEFAULT_REGION='…'
restic snapshots
restic restore latest --target /srv/restore

Внутри бэкапа:

  • /arcula-manifest.json — что вошло и в каком порядке поднимать;
  • /db/<проект>/<сервис>/ — дампы баз (pg_dump -Fc каждой базы и globals.sql), снимок Vault, архив GitLab;
  • /files/<путь> — каталоги;
  • /volumes/<том> — тома Docker;
  • /host/<путь> — настройки хоста.

Базу из дампа поднимает pg_restore в PostgreSQL той же версии. После работы удалите kit.json — в нём все ключи:

shred -u kit.json

На живом сервере kit не нужен: доступ к репозиториям этого сервера лежит в /etc/arcula/repos/. От root:

set -a; . /etc/arcula/repos/<id хранилища>.env; set +a
/var/lib/arcula/bin/restic snapshots

Панель и Vault на одном сервере

Панель берёт настройки из Vault на том же сервере, поэтому без Vault она не стартует. Если такой сервер потерян, порядок такой: сначала Vault, затем панель. Доработок для этого не нужно.

Понадобятся kit и пароль от него, мастер-ключ панели из менеджера паролей и ключи unseal Vault.

1. Новая машина

Поставьте arcula, restic и Docker, как выше, и проверьте kit:

arcula kit verify ./arcula-recovery-kit-2026-10-24.age

2. Данные сервера

sudo arcula restore --kit ./arcula-recovery-kit-2026-10-24.age --server <сервер панели>

Один запуск prepare вернёт всё сразу: каталоги проектов, тома, данные Vault и базу PostgreSQL панели из дампа. Сервисы arcula не запускает — запускайте их сами, по порядку.

3. Сначала Vault

  • Vault копировался файлами — данные уже на месте. Запустите Vault и распечатайте его исходными ключами unseal.
  • Vault шёл снимком Raft — снимок извлечён в /var/lib/arcula/restore/<id>/vault. Восстановите его, как в статье Vault: снимки Raft.

Проверьте vault status и что секреты панели на месте.

4. Затем панель

  1. Мастер-ключ — из менеджера паролей: файл с правами 0600 по пути из ARCULA_MASTER_KEY_FILE или переменная ARCULA_MASTER_KEY.
  2. Настройки — из восстановленного Vault.
  3. Запустите панель: docker compose up -d в её каталоге.
  4. Статика ЛК — из web-<версия>.tar.gz релиза, если её каталога не было в плане. Настройки Caddy на хосте извлечены в /var/lib/arcula/restore/<id>/host. Затем DNS.
  5. Проверьте https://<домен>/api/web/v1/health и войдите в ЛК.

Агенты остальных серверов выйдут на связь сами и дошлют журналы, накопленные без панели.

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