Skip to content

Резервные копии ​

Без двух вещей установку не восстановить: базы данных и тома kvalli_data (вложения, доказательства прогонов, кэш репозиториев). Рядом с ними нужно хранить ENCRYPTION_KEY: учётные данные интеграций в базе зашифрованы им. И лицензионный ключ: без него восстановленная установка на новом сервере будет работать как Starter.

Через install.sh ​

bash
sudo /opt/kvalli/install.sh backup

Копирует дамп базы, том kvalli_data, .env и файл лицензии в /opt/kvalli/backups/<время>. Хранятся 14 последних копий (--backup-keep).

Ночные копии ​

Включите при установке или повторным install с теми же --domain и --email:

bash
sudo /opt/kvalli/install.sh install --domain kvalli.acme.com --email qa-lead@acme.com \
  --backup daily --backup-keep 14 --backup-copy-to /mnt/nas/kvalli
  • --backup daily создаёт /etc/cron.d/kvalli-backup: копия в 02:30, лог — /opt/kvalli/backup.log. Ночь, когда идёт обновление (автообновление в 03:15 или ещё не закончившийся upgrade), пропускается: обновление делает копию само.
  • --backup-copy-to копирует каждую копию в каталог на другом диске или в смонтированный NAS. Без этого копии лежат на том же диске, что и база, и отказ диска заберёт и то и другое. В каталоге назначения удаляются только каталоги копий, остальное в общем каталоге не трогается. Если копирование не удалось, копия остаётся на сервере, и в логе это сказано.
  • --backup-keep — сколько копий хранить, на сервере и в каталоге назначения.
  • --backup off и --backup-copy-to off выключают их.

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

bash
sudo /opt/kvalli/install.sh restore /opt/kvalli/backups/<время>

Сначала копирует текущее состояние, затем возвращает базу и файлы к состоянию из копии. Если на сервере нет файла лицензии, берётся лицензия из копии.

В каждой копии лежит копия .env. Восстановление на сервере с другим ENCRYPTION_KEY предупредит об этом и возьмёт ENCRYPTION_KEY и JWT_SECRET из копии. Пароль базы, домен и остальные настройки сервера останутся прежними, а остальная часть старого .env останется в копии — её можно прочитать.

Чего нет в копии ​

backup архивирует том kvalli_data, но не kvalli_qa_agents, и restore возвращает только то, что взял. На текущей установке этот том пуст или почти пуст: встроенные навыки лежат в образе, а навыки проектов и пользовательские агенты — в PostgreSQL. В нём могут остаться только старые файлы agents/*.md, которые писали ранние версии; они один раз импортированы в проект по умолчанию и теперь лишь копия того, что есть в базе. Если установка обновлялась с такой версии и вам нужна и эта копия:

bash
docker run --rm -v kvalli_kvalli_qa_agents:/agents:ro -v "$PWD":/backup alpine tar czf /backup/kvalli-agents.tgz -C / agents

Имя тома начинается с имени compose-проекта — по умолчанию kvalli.

Docker Compose вручную ​

bash
docker compose exec -T postgres pg_dump -U kvalli -Fc kvalli_db > kvalli-db.dump
docker run --rm -v <project>_kvalli_data:/data -v "$PWD":/backup alpine \
  tar czf /backup/kvalli-files.tgz /data

<project> — имя compose-проекта, обычно имя каталога. Сохраните рядом .env и файл лицензии.

Kubernetes ​

См. Kubernetes: резервные копии и восстановление.

Документация описывает последний выпуск Kvalli.