Зашифрованные резервные копии панели
Настройка бэкапов в Cloudflare R2, хранение ключа восстановления офлайн и восстановление панели в чистый каталог данных.
На этой странице
Mistgate умеет загружать резервные копии панели в бакет Cloudflare R2 по расписанию или вручную. Пока владелец не настроит бэкапы, загрузки нет. Архив шифруется через age до отправки: Cloudflare хранит шифротекст, а не содержимое базы.
До включения бэкапов#
Создайте офлайн-ключ восстановления#
Выполните команду один раз на доверенном компьютере, но не на сервере панели:
mistgate backup keygen --identity-file ./mistgate-recovery.txtКоманда создаст закрытый age-ключ и не перезапишет существующий файл, ограничит доступ владельцу и напечатает соответствующий открытый адресат age1…. Храните закрытый ключ вне панели и R2, сделайте отдельную офлайн-копию. В админку вставляется только открытый адресат. Без закрытого ключа расшифровать бэкап нельзя.
Создайте бакет и ключ R2#
Создайте бакет в Cloudflare R2 и S3 API-токен только для этого бакета. Mistgate нужен доступ к объектам на чтение, запись и удаление: проверка записывает, читает и удаляет временный объект, а срок хранения удаляет старые бэкапы. Используйте отдельный токен, а не ключ всего аккаунта.
Настройте панель#
Владелец открывает Настройки → Бэкапы и вводит ID аккаунта Cloudflare, юрисдикцию бакета, имя бакета, ID и секрет R2-ключа и открытый адресат age. Секретный ключ R2 шифруется мастер-ключом панели и никогда не возвращается через API. Если оставить поле пустым, сохранённый секрет не меняется.
- Сохраните настройки.
- Нажмите Проверить доступ к R2. Панель проверит чтение, запись и удаление временного объекта.
- Укажите интервал от 1 до 168 часов и срок хранения.
0означает «не удалять»; иначе срок должен быть не меньше 7 дней. - Включите автоматические бэкапы и сохраните. Первый запуск начнётся примерно в течение минуты, затем — по интервалу. Создать бэкап сейчас запускает резервирование сразу после подтверждения владельца.
Панель делает согласованный snapshot SQLite, включает файлы каталога данных и действующий master.key, добавляет манифест с хешами файлов, шифрует архив на открытый адресат и загружает его в R2. Закрытый ключ восстановления Mistgate не хранит. Держите его отдельную копию, даже если R2 доступен.
Восстановите новую панель#
Скачайте зашифрованный объект из R2 и перенесите его, закрытый ключ восстановления и бинарник mistgate на новый сервер панели. Если Mistgate уже запущен, остановите его. Восстанавливайте в новый, ещё не существующий каталог данных — команда откажется перезаписывать файлы:
mistgate backup restore \
--identity-file ./mistgate-recovery.txt \
--file ./backup.tar.gz.age \
--data-dir /var/lib/mistgate-restoredЗапустите восстановление от пользователя службы панели или смените владельца каталога перед запуском. Укажите /var/lib/mistgate-restored в systemd-юните через serve --data-dir. В восстановленные данные входят база, CA панели и мастер-ключ, поэтому подключённые ноды и зашифрованные секреты панели смогут продолжить работу.
Если systemd передаёт master.key через CREDENTIALS_DIRECTORY, перед запуском замените этот credential восстановленным master.key. Панель должна использовать именно восстановленный ключ, чтобы читать восстановленную базу.
Старый каталог оставьте, пока новая панель не запустится и вы не проверите вход, ноды и подписки. Не восстанавливайте поверх работающего каталога данных. Потеря закрытого ключа сделает бэкапы R2 бесполезными; потеря восстановленного мастер-ключа не даст прочитать зашифрованные секреты панели.