Конфигурация¶
Эта страница охватывает переменные окружения контейнера, монтирования, которые предоставляет шаблон, резервное копирование VM через SSH и настройку внешней копии. Пути репозиториев резервного копирования настраиваются внутри приложения (Настройки, Пути резервных копий), а не через переменные окружения.
Переменные окружения¶
| Переменная | Обязательна | Описание |
|---|---|---|
APP_KEY |
Да | 32-байтовый hex-секрет (64 hex-символа), используемый для вывода пароля репозитория restic. Сгенерируйте командой openssl rand -hex 32. Храните надёжно: его потеря делает зашифрованные резервные копии невосстановимыми. |
LIBVIRT_HOST |
Для VM | Хост Unraid, достигаемый через SSH для резервного копирования VM (по умолчанию host.docker.internal; шаблон предзаполняет заглушку с LAN-IP). Используйте LAN-IP вашего Unraid, обязательно в пользовательской сети br0.x. |
LIBVIRT_SSH_PORT |
Нет | SSH-порт хоста для резервного копирования VM (по умолчанию 22). |
LIBVIRT_SSH_USER |
Нет | SSH-пользователь на хосте для резервного копирования VM (по умолчанию root). |
PORT |
Нет | HTTP-порт (по умолчанию 3000; используется только с HTTP_ONLY=true). |
HTTPS_PORT |
Нет | HTTPS-порт (по умолчанию 3443; шаблон публикует его 1:1, поэтому WebUI отвечает на https://<ip>:3443). |
HTTP_ONLY |
Нет | Установите true, чтобы отключить самоподписанный HTTPS-слушатель и обслуживать только обычный HTTP (для использования за обратным прокси, завершающим TLS). |
HOST_SOURCE_ROOT |
Нет | Путь хоста, смонтированный как Host Data (по умолчанию /mnt). BombVault переводит источники bind-монтирований, о которых сообщает Docker, в пути под этим монтированием. Меняйте только если вы смонтировали другой корень хоста. |
BOMBVAULT_SELF_CONTAINER |
Нет | Имя самого контейнера BombVault, чтобы он никогда не резервировал (и тем самым не останавливал) сам себя (по умолчанию BombVault; автоопределяется по имени хоста в мостовой сети). |
BACKUP_MAX_HOURS |
Нет | Максимальное число часов реального времени, в течение которого один запуск резервного копирования может удерживать блокировку своего домена, прежде чем он будет принудительно отменён (защита, чтобы зависший запуск не мог заблокировать домен навсегда). Пусто (по умолчанию) использует 48. Повысьте для очень больших или медленных облачных резервных копий (запуск, отменённый на пределе, завершается с context deadline exceeded). Установите 0, чтобы полностью отключить предел. |
TZ |
Нет | Часовой пояс для планировщика (например Europe/Berlin). |
Монтирования¶
Смонтируйте сокет Docker, flash (/boot) и корень Host Data (/mnt), как показано в шаблоне CA. Источники и назначения резервного копирования оба находятся под Host Data, и он монтируется rslave, поэтому удалённый общий ресурс, который монтируется после запуска контейнера (например под /mnt/remotes), становится видимым без перезапуска.
Пути репозиториев резервного копирования по умолчанию, это /mnt/user/bombvault/{container,vms,flash,config,files}, создаваемые при первой резервной копии. Измените расположение в любой момент в Настройки, Пути резервных копий.
Проверка интеграции с хостом
Откройте /spike в веб-интерфейсе после запуска контейнера. Она проверяет каждое монтирование и CLI (сокет Docker, libvirt, restic, qemu-img, rclone) и сообщает о любых недостающих частях.
Модель безопасности¶
Управление хостом с правами root
Через сокет Docker BombVault может останавливать, удалять и пересоздавать контейнеры, а также читать и записывать appdata, а для резервного копирования VM он входит на хост через SSH (qemu+ssh://, root по умолчанию) для выполнения virsh. Любой, кто может достучаться до его веб-интерфейса, фактически получает root на хосте.
- Необязательная парольная защита (Настройки, Безопасность): задайте пароль, чтобы требовать вход, очистите его, чтобы отключить. По умолчанию отключена для использования в доверенной LAN. Сессии подписаны (HMAC, производный от
APP_KEY), и смена пароля делает их недействительными; логины ограничены по частоте. - Поскольку защита включается по желанию, когда она не задана, весь интерфейс и API (включая настройку внешней копии, маршруты теста на подделку и набор для восстановления) достижимы любым, кто может достучаться до порта. Включите защиту, как только используются внешние, неизменяемые резервные копии или шифрование.
- Запускайте BombVault только в доверенной, не открытой наружу сети. Для удалённого доступа поместите его за обратный прокси, добавляющий аутентификацию и TLS. Ответы несут базовые заголовки безопасности (CSP,
nosniff,X-Frame-Options,Referrer-Policy). - С
HTTP_ONLY=truecookie сессии теряет флагSecure(это необходимо, чтобы работать по обычному HTTP), поэтому включайте пароль за прокси, завершающим TLS, только если важна конфиденциальность. - SSH-соединение резервного копирования VM доверяет ключу хоста при первом подключении (TOFU) и закрепляет его после. Проверьте ключ хоста по независимому каналу, если ваш путь от контейнера к хосту не доверенный.
- Резервные копии шифруются restic, когда шифрование включено (Настройки; по умолчанию включено), с ключом, производным от
APP_KEY.
Резервное копирование VM через SSH¶
BombVault резервирует виртуальные машины KVM/libvirt без монтирования какого-либо пути libvirt. Он выполняет virsh на хосте через SSH (qemu+ssh://), поэтому никогда не может повлиять на ваш VM Manager хоста.
Быстрая настройка:
- Настройки, Система, Резервное копирование VM через SSH: скопируйте показанный публичный ключ.
- Добавьте его в
/root/.ssh/authorized_keysв Unraid (также сохраняется на flash, чтобы пережить перезагрузки). - Нажмите Проверить соединение.
Шаблон добавляет --add-host=host.docker.internal:host-gateway, чтобы контейнер мог достучаться до хоста. Установите LIBVIRT_HOST на LAN-IP вашего Unraid, если это имя не разрешается (например когда контейнер работает в пользовательской сети br0.x). Если вы изменили SSH-порт Unraid, установите LIBVIRT_SSH_PORT в соответствие. Живым снимкам дополнительно нужен qemu guest agent в VM и диск на /mnt/cache (не /mnt/user).
Полное руководство по настройке VM и сети
Полное пошаговое руководство (включение SSH, постоянная авторизация ключа, маршрутизация пользовательской сети и VLAN, метод для каждой VM и устранение неполадок на стороне хоста) находится по адресу docs/vm-backup-ssh-setup.md на GitHub.
Настройка внешней копии¶
Настройте внешнюю реплику на вкладке Настройки, Внешнее. Полный рабочий процесс (неизменяемость/append-only, тестирование на подделку и учебные DR) см. в Внешняя копия и восстановление. Вкратце:
- Бэкенды: SMB/CIFS и NFS (смонтируйте общий ресурс и укажите на него Путь резервных копий), нативные бэкенды restic без rclone (
s3:...,rest:http://host:8000/repo,b2:...,sftp:user@host:/repo) или любое удалённое хранилище rclone (rclone:<remote>:<bucket>/path). - Облачные учётные данные хранятся в зашифрованном виде в Настройки, Внешнее, Облачные учётные данные.
- Целям SSH ничего не нужно устанавливать на дальней стороне.
sftp:требует лишь SSH-сервера. Добавьте публичный ключ из Настройки, Система, Резервное копирование VM через SSH (также в/config/ssh/id_ed25519.pub) в~/.ssh/authorized_keysпользователя цели. - Внешняя копия: BombVault реплицирует новые снимки через
restic copyпо принципу максимальных усилий. Локальный репозиторий остаётся основным. У каждого домена своё расписание внешней копии, плюс кнопка Реплицировать сейчас. - Несколько внешних целей на домен: каждый домен может реплицироваться сразу в несколько внешних назначений. Добавляйте дополнительные цели в Настройки, Внешнее, каждую со своим репозиторием, классом хранения S3, флагом append-only, хранением и бюджетом роста; все они реплицируются по расписанию внешней копии этого домена. Существующая настройка одной внешней копии переносится как первая цель.
- Хранение для каждого источника: локальная политика живёт в Настройки, Пути и Хранилище; политика внешней копии в Настройки, Внешнее (оставьте её со всеми нулями, чтобы никогда автоматически не обрезать внешние снимки).
- Ограничения пропускной способности: ограничьте скорость выгрузки/загрузки restic в Настройки, Внешнее.
- Холодный и архивный класс хранения (S3): для нативного внешнего репозитория S3 выберите уровень, читаемый для восстановления (Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval). Удалённые хранилища rclone задают свой класс в конфигурации rclone.
Переносимые настройки (экспорт и импорт)¶
Карточка Экспорт и импорт настроек на странице Настройки записывает всю вашу конфигурацию BombVault (настройки доменов, внешние цели, расписания, хранение, уведомления) в переносимый файл JSON, который вы можете импортировать на другой экземпляр, поэтому переезд на новую машину или клонирование установки не означает повторный ручной ввод всего. Импорт показывает предпросмотр и запрашивает подтверждение, и он никогда не трогает ваши данные резервных копий или историю.
Экспорт может содержать учётные данные
Вы выбираете, включать ли в файл учётные данные внешней копии и уведомлений. С включёнными учётными данными экспорт так же чувствителен, как ваш набор для восстановления, поэтому храните его в надёжном месте. Без них файл содержит только несекретные настройки.