В документе описаны механизмы резервного копирования и восстановления конфигурации Почты VK WorkSpace:
- файлы установщика (
.yamlдля конфигурирования установки); - секреты Vault;
- кластеры mailetcd и infraetcd.
В установщике есть механизм сохранения и восстановления ряда .yaml-файлов, задающих конфигурацию установки. Управление механизмом выполняется на странице Обслуживание → Бэкап (Восстановление системы).
Пошаговая инструкция по работе с механизмом приведена в разделе Как восстановить систему через установщик.
Механизм сохранения состоит из следующих ключевых компонентов:
- Слот сохранения — отдельная директория, в которую сохраняется архив из выбранных файлов.
- Файлы, доступные для сохранения — перечень таких файлов задается кодом установщика.
При сохранении выбранные файлы архивируются в выбранный слот.
-
Создайте слот: Сохранить текущее состояние → Выберите слот. Откроется список доступных слотов; новый слот можно добавить здесь же.
-
Выберите желаемый слот для сохранения.
-
Выберите файлы, которые хотите сохранить в этот слот.
-
Нажмите кнопку Сохранить. Ход сохранения отображается в прогресс-баре.
-
После успешного сохранения слот появится в таблице. В ней указаны дата создания, название слота, количество файлов в бэкапе и его размер.

-
При наведении курсора на кнопку просмотра отображается подробная информация о сохраненном архиве.
Чтобы восстановить конфигурацию, нажмите кнопку загрузки — запустится процесс замены старых файлов на новые.
При каждой загрузке с такого восстановления делается полный бэкап файлов (тот же список, что и можно сохранить) с суффиксом autosave.
При успешном восстановлении будет уведомление, а также информация о том, что нужно перезапустить установщик для применения данных: большинство .yaml не подхватываются автоматически.
Vault — хранилище секретов, в котором с релиза 26.3 хранятся секреты из main.yaml. В разделе приведены команды для сохранения полного снимка хранилища и для выгрузки паролей и секретов.
-
Получите root-токен:
cat /home/deployer/main.yaml | grep rootToken | awk '{print $2}' | base64 -d -
С полученным root-токеном войдите в Vault:
vault login "rootToken" -
Сделайте бэкап ключей и значений:
vault operator raft snapshot save <file_name_to_backup> -
Проверьте состояние бэкапа:
vault operator raft snapshot inspect <file_name_to_backup> -
Восстановите:
vault operator raft snapshot restore -force <file_name_to_backup> -
Если команда
vault statusвозвращаетSealed: true, Vault нужно снять с пломбы (unseal) старыми ключами (если сохранены в установщике, то лежат в/home/deployer/.secStoreKeys.yaml):vault operator unseal <unseal_key>
Повторите шаги 1–2 из предыдущего раздела. Установите jq на сервер, с которого будет выполняться команда.
-
Получите дамп всех значений. Команда выгружает все записанные секреты по пути
deployer/secret/data/deployer/secret:docker exec -i vault1 vault kv get -format=json deployer/secret/data/deployer/secret | jq '.data.data' > <file_name_to_keys_backup>.json -
Скопируйте полученный дамп в контейнер Vault:
docker cp <file_name_to_keys_backup>.json vault{i}:/<path_to_save>.json -
Примените дамп ключей в хранилище:
docker exec -i vault1 vault kv put deployer/secret/data/deployer/secret @<path_to_save>.json
В разделе приведены команды для создания снимков кластеров mailetcd и infraetcd и восстановления из этих снимков.
-
Создайте бэкап
mailetcd2:docker exec mailetcd2 etcdctl snapshot save /dumps/mailetcd2-$(date +%Y%m%d-%H%M%S).db \--endpoints=http://mailetcd2.qdit:2379 \--command-timeout=30s -
Создайте бэкап
infraetcd2:docker exec infraetcd2 etcdctl snapshot save /dumps/infraetcd2-$(date +%Y%m%d-%H%M%S).db \--endpoints=http://100.70.178.96:2379 \--command-timeout=30s -
По каждому снапшоту проверьте консистентность:
docker exec infraetcd2 etcdctl snapshot status /dumps/infraetcd2-*.db \--write-out=tabledocker exec mailetcd2 etcdctl snapshot status /dumps/mailetcd2-*.db \--write-out=table
-
Остановите сервис:
systemctl stop onpremise-container-infraetcd2 -
Переместите старые данные:
mv /opt/mailOnPremise/dockerVolumes/infraetcd2/data/member /opt/mailOnPremise/dockerVolumes/infraetcd2.bak/data/member -
Восстановите из снапшота:
docker run --rm \-v /opt/mailOnPremise/dockerVolumes/infraetcd2/dumps:/dumps \-v /opt/mailOnPremise/dockerVolumes/infraetcd2/data:/etcd-data \harbor.vkwm.ru/library/mntonpremise/onpremise-docker/mailetcd:v3.5.22 \etcdctl snapshot restore /dumps/infraetcd2-20260820-121638.db \--data-dir=/etcd-data \--name=infraetcd2 \--initial-cluster=infraetcd1=http://100.70.178.206:2380,infraetcd2=http://100.70.178.96:2380,infraetcd3=http://100.70.176.223:2380 \--initial-advertise-peer-urls=http://100.70.178.96:2380 -
Запустите сервис:
systemctl start onpremise-container-infraetcd2 -
Проверьте состояние:
docker exec infraetcd2 etcdctl endpoint health --cluster=true -w tabledocker exec infraetcd2 etcdctl member list --cluster=true -w tabledocker exec infraetcd2 etcdctl endpoint status --cluster=true -w table