Оформление
Аварийное восстановление
Команда recover восстанавливает полный архив NGENSIA в новую установку PostgreSQL 17. Исходное окружение и его тома не используются как цель. До переключения пользователей проверьте восстановленную систему и исключите одновременную работу двух копий с внешними интеграциями.
Что подготовить
Нужны доверенная копия с пятью файлами, доступ к точному образу приложения из config.env, соответствующий серверный комплект, отдельные ресурсы Docker и хранилище файлов. Ключ шифрования данных находится в runtime-secrets.tar; архив требует защиты наравне с рабочими секретами.
Для текущего rootful-комплекта войдите в root-shell через sudo -i и ведите восстановление в этом контексте, сохраняя закрытые права runtime и operations.
backup-config и backup-fetch, используемые ниже, относятся к новому кандидату установщика. Если подходящего проверенного комплекта нет, остановите этот сценарий и согласуйте получение копии с сопровождающим. Эти команды не создают S3 remote или ключ crypt; после аварии нужны сохранённые ранее настройки, а не новый ключ. Для уже доступной локальной полной копии шаг получения из remote не нужен.
Если копия хранится в remote, восстановите приватную конфигурацию rclone и независимый ключ crypt. Идентификатор копии возьмите из сохранённого вне сервера реестра либо прочитайте каталоги зашифрованного remote, не его нижележащего bucket:
sh
rclone --config /etc/ngensia/rclone.conf --ask-password=false lsf backup-crypt:ngensia --dirs-onlyКоманда только перечисляет каталоги. Используйте фактическое имя remote из приватной конфигурации; при отдельном CA добавьте согласованный --ca-cert. Не применяйте переменные RCLONE_*, переопределяющие выбранную конфигурацию. Выберите нужную историческую копию по независимому реестру и времени, уберите завершающий / из её имени. Наличие каталога ещё не подтверждает целостность: её проверит backup-fetch.
До команд backup-config и backup-fetch подготовьте новую .env с корректным неизменяемым APP_IMAGE из доступного квалифицированного комплекта и отдельным COMPOSE_PROJECT_NAME: оболочка операций читает эти параметры даже при скачивании. Затем подготовьте доступное внешнее смонтированное назначение и приватный JSON по инструкции копирования.
sh
cd /opt/ngensia/deploy
sh ngensia.sh backup-config /etc/ngensia/backup.json
sh ngensia.sh backup-fetch BACKUP_ID /mnt/ngensia-backup/recovery-setКаталог назначения должен быть новым, абсолютным и вне установки; его родитель должен существовать. Команда скачивает данные и проверяет контрольные суммы. backup-status читает только локальную историю: после потери сервера она недоступна и не восстанавливается из архива. Не создавайте новую копию ради получения идентификатора прежней.
Восстановление комплекта
Подготовьте .env новой установки по проверенным параметрам копии. Обязательно укажите точный APP_IMAGE из config.env: другой образ отклоняется. Проверьте домен, отдельный COMPOSE_PROJECT_NAME и файловое хранилище. Конфигурация из архива не подменяет текущий .env автоматически. Доступы S3 подготовьте отдельно; используйте пустое выделенное назначение.
sh
sh ngensia.sh recover /mnt/ngensia-backup/recovery-set
sh ngensia.sh start
sh ngensia.sh statusВ новой установке ещё не должно быть runtime. Команда проверяет строгий список файлов и SHA-256, извлекает прежний ключ данных, создаёт новые пароли PostgreSQL и сертификаты, восстанавливает пустую базу и файлы. Публичный HTTPS автоматически не включается.
Возврат пользователей
Организуйте закрытую HTTPS-приёмку. Проверьте вход, количество и содержимое контрольных записей, чтение вложений и зашифрованных данных. Согласуйте возобновление обработчиков, затем переключите пользователей и повторите проверку HTTPS. Сохраните исходную копию и журнал времени восстановления.
Изолированная проверка процедуры не подтверждает восстановление на вашей целевой инфраструктуре. Проведите репетицию с доступным носителем, реальными ограничениями объёма и ответственными операторами. Заданные RPO/RTO, облачный провайдер и восстановление production должны приниматься отдельно; непрерывного журнала для PITR в комплекте нет.