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

Зашифрованные резервные копии панели

Настройка бэкапов в Cloudflare R2, хранение ключа восстановления офлайн и восстановление панели в чистый каталог данных.

На этой странице

Mistgate умеет загружать резервные копии панели в бакет Cloudflare R2 по расписанию или вручную. Пока владелец не настроит бэкапы, загрузки нет. Архив шифруется через age до отправки: Cloudflare хранит шифротекст, а не содержимое базы.

До включения бэкапов#

Создайте офлайн-ключ восстановления#

Выполните команду один раз на доверенном компьютере, но не на сервере панели:

sh
mistgate backup keygen --identity-file ./mistgate-recovery.txt

Команда создаст закрытый age-ключ и не перезапишет существующий файл, ограничит доступ владельцу и напечатает соответствующий открытый адресат age1…. Храните закрытый ключ вне панели и R2, сделайте отдельную офлайн-копию. В админку вставляется только открытый адресат. Без закрытого ключа расшифровать бэкап нельзя.

Создайте бакет и ключ R2#

Создайте бакет в Cloudflare R2 и S3 API-токен только для этого бакета. Mistgate нужен доступ к объектам на чтение, запись и удаление: проверка записывает, читает и удаляет временный объект, а срок хранения удаляет старые бэкапы. Используйте отдельный токен, а не ключ всего аккаунта.

Настройте панель#

Владелец открывает Настройки → Бэкапы и вводит ID аккаунта Cloudflare, юрисдикцию бакета, имя бакета, ID и секрет R2-ключа и открытый адресат age. Секретный ключ R2 шифруется мастер-ключом панели и никогда не возвращается через API. Если оставить поле пустым, сохранённый секрет не меняется.

  1. Сохраните настройки.
  2. Нажмите Проверить доступ к R2. Панель проверит чтение, запись и удаление временного объекта.
  3. Укажите интервал от 1 до 168 часов и срок хранения. 0 означает «не удалять»; иначе срок должен быть не меньше 7 дней.
  4. Включите автоматические бэкапы и сохраните. Первый запуск начнётся примерно в течение минуты, затем — по интервалу. Создать бэкап сейчас запускает резервирование сразу после подтверждения владельца.

Панель делает согласованный snapshot SQLite, включает файлы каталога данных и действующий master.key, добавляет манифест с хешами файлов, шифрует архив на открытый адресат и загружает его в R2. Закрытый ключ восстановления Mistgate не хранит. Держите его отдельную копию, даже если R2 доступен.

Восстановите новую панель#

Скачайте зашифрованный объект из R2 и перенесите его, закрытый ключ восстановления и бинарник mistgate на новый сервер панели. Если Mistgate уже запущен, остановите его. Восстанавливайте в новый, ещё не существующий каталог данных — команда откажется перезаписывать файлы:

sh
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 бесполезными; потеря восстановленного мастер-ключа не даст прочитать зашифрованные секреты панели.

Править страницу на GitHub