Начало работы¶
Эта страница проведёт вас от свежей машины Unraid до вашей первой резервной копии.
Требования¶
| Требование | Примечания |
|---|---|
| Unraid 6.12+ | Более ранние версии не тестировались. Основная цель, это Unraid, но BombVault работает и на обычном хосте Docker, и на TrueNAS Scale (см. Обычный хост Docker). |
| Расположение репозитория restic | Локальный путь (рекомендуется: ваш массив или кэш), SMB, NFS или любой бэкенд rclone. |
| Сокет Docker | Монтируется шаблоном автоматически (/var/run/docker.sock). |
Unraid flash (/boot) |
Монтируется шаблоном целиком автоматически (/boot в /host/boot). Обеспечивает резервное копирование flash и позволяет восстановленному контейнеру снова появиться как обычное, редактируемое приложение Unraid. |
| Виртуальные машины KVM (по желанию) | Резервное копирование VM обращается к libvirt через SSH, без монтирования libvirt. Настройте его в Настройках (см. Конфигурация). |
| Наборы данных ZFS (по желанию) | То же SSH-соединение, что и для резервного копирования VM, zfs на хосте и Host Data, подключённый как /mnt с режимом доступа Read/Write - Slave (значение шаблона по умолчанию). См. Наборы данных ZFS. |
| Приложение для Android (необязательно) | Android 10 или новее, сопряжение с серверами версии 9.7.0 или новее. См. Приложение для Android. |
Установка на Unraid¶
Самый простой путь, это Community Applications.
- Откройте вкладку Apps в Unraid.
- Найдите BombVault.
- Нажмите Install, задайте необходимые переменные (ниже) и примените.
Ручная установка шаблона
Если вы предпочитаете добавить шаблон вручную:
- Перейдите в Docker, Add Container, Template repositories и добавьте:
- Найдите BombVault в Templates.
- Задайте необходимые переменные и нажмите Apply.
Обычный хост Docker¶
Не Unraid? BombVault работает и как обычный контейнер на любом хосте Docker (на этом же держится поддержка контейнеров на TrueNAS Scale, до появления там собственной записи в каталоге приложений).
- Возьмите из репозитория готовый к правке файл
deploy/docker-compose.generic.yml. - Задайте
APP_KEY(см. ниже) и направьте том Host Data на ваш настоящий корень данных: комментарии в файле проводят через оба шага. docker compose up -d, затем откройтеhttps://<ip-хоста>:3443/.
Чем это отличается от Unraid:
- Нет домена flash/USB. Загрузочной флешки, которую нужно сохранять или восстанавливать, здесь нет, поэтому домену Flash в настройках делать нечего. Вместо этого домен Папки предлагает подсказку в один щелчок Добавить набор: конфигурация системы хоста (стартовый набор файлов
/etc, который вы просматриваете и правите перед сохранением) как практичный универсальный аналог. - Нет собственных уведомлений Unraid. Собственные каналы уведомлений BombVault (webhook, оповещения о неудачной внешней копии и прочее) работают как обычно; пропускается только отправка в систему уведомлений Unraid, потому что такой системы здесь нет.
- Резервное копирование виртуальных машин необязательно и требует отдельного хоста libvirtd, доступного по SSH. См. закомментированный блок в файле compose. У обычного хоста Docker собственного менеджера виртуальных машин нет.
- Нет виджета для Dashboard. BombVault Widget, это плагин Unraid, поэтому и этот шаг пропускается.
- Как находятся данные контейнера. Без соглашения Unraid об
appdataпапка данных контейнера находится по сегментам изDATA_ROOT_SEGMENTS, именованным томам Docker, рабочему каталогу проекта Compose и меткеbombvault.data(см. Определение источников резервной копии). Именованные тома и набор/etcдостают только до путей внутри монтирования Host Data, поэтому направьте Host Data на общего родителя, который охватывает и корень данных Docker. PLATFORM. Задайтеgenericилиtruenas. Если переменная не задана, BombVault распознаёт Unraid по его собственному маркеру на монтировании flash и считает всё остальное обычным хостом, а шаги только для Unraid пропускаются, вместо того чтобы запускаться и завершаться ошибкой.
TrueNAS Scale идёт тем же путём через compose; запись для каталога подготовлена в репозитории, но ещё не отправлена. Резервному копированию VM там нужен LIBVIRT_URI, потому что libvirtd в TrueNAS слушает собственный сокет (/run/truenas_libvirt/libvirt-sock), который три переменные LIBVIRT_* выразить не могут (см. Конфигурация). Насколько это проверено: резервное копирование zvol запускалось на настоящей машине с TrueNAS Scale, на zvol, подключённом к работающей VM, и zfs snapshot, zfs send, restic и zfs receive провели его туда и обратно байт в байт. Полное восстановление силами самого BombVault на оборудовании TrueNAS ещё не запускалось, а тот zvol был разреженным, поэтому пропускная способность на многих гигабайтах не проверена. Проверьте там восстановление, прежде чем на него полагаться.
Единственная обязательная настройка¶
Единственная переменная, которую вы обязаны задать, это APP_KEY, 32-байтовый шестнадцатеричный секрет (64 hex-символа), используемый для вывода пароля репозитория restic.
Сгенерируйте его на любой машине:
Вставьте результат в поле APP_KEY шаблона (Unraid) или в переменную окружения APP_KEY в docker-compose.yml (обычный Docker-хост).
Не потеряйте свой APP_KEY
Потеря APP_KEY делает ваши зашифрованные резервные копии невосстановимыми. Храните его в надёжном месте отдельно от сервера. Как только BombVault запущен, воспользуйтесь его набором для восстановления ключа шифрования в один клик (см. Внешняя копия и восстановление), чтобы сохранить полный комплект восстановления.
Шаблон также монтирует за вас сокет Docker, flash (/boot) и корень Host Data (/mnt). Источники и назначения резервного копирования оба находятся под Host Data. Полный справочник переменных и настройку внешней копии см. в Конфигурации.
Первый запуск¶

Панель после первой копии: что защищено, что запустится дальше, и живой журнал.
- Откройте веб-интерфейс по адресу
https://<your-unraid-ip>:3443(самоподписанный сертификат из коробки). - В Настройках включите нужные домены резервного копирования (Контейнеры, Виртуальные машины, Flash, Автобэкап, Папки, Наборы данных ZFS) и выберите акцентный цвет.
- На вкладке Контейнеры выберите контейнер и нажмите Создать резервную копию, чтобы сделать вашу первую точку восстановления. Пути репозиториев по умолчанию, это
/mnt/user/bombvault/{container,vms,flash,config,files,zfs}, они создаются при первой резервной копии. - Настройте планирование в Настройки, Расписания. Есть кнопка Включить все в расписание в один клик для контейнеров и VM.
Необязательно: выберите порядок резервного копирования
Если некоторые контейнеры всегда должны резервироваться раньше других (например база данных перед приложением, которое её использует), откройте панель Порядок резервного копирования на странице Контейнеры и перетащите их в нужную вам последовательность. Запланированные и множественные запуски затем следуют этому порядку; всё, что вы оставите без порядка, резервируется в порядке наибольшей просрочки, как и прежде.
Проверка интеграции с хостом
Откройте /spike в веб-интерфейсе после запуска контейнера. Она проверяет каждое монтирование и CLI (сокет Docker, libvirt, restic, qemu-img, rclone) и сообщает о любых недостающих частях, чтобы вы могли убедиться, что контейнер подключён правильно, прежде чем на него полагаться.
Простой и Расширенный¶

У настроек нет кнопки «Сохранить»: каждое изменение записывается сразу.
По умолчанию интерфейс показывает только самое необходимое (резервное копирование, восстановление, планирование). Используйте переключатель Простой вид / Расширенный вид в боковой панели, чтобы открыть экспертные элементы управления: хранение, внешнюю копию, хуки до и после, восстановление на уровне файлов, уведомления, метрики Prometheus и инструменты целостности и обслуживания. Это настройка для каждого браузера, по умолчанию отключённая, поэтому новички получают чистый интерфейс, а опытные пользователи получают всё.
Сборка из исходного кода¶
BombVault, это единый статический бинарный файл Go, который обслуживает JSON API и встроенный интерфейс на React. Сначала соберите интерфейс, затем запустите бинарный файл:
npm --prefix web ci
npm --prefix web run build # пишет web/dist, который встраивается в бинарный файл
export APP_KEY=$(openssl rand -hex 32)
go test ./... # модульные и интеграционные тесты с настоящим проходом restic туда и обратно
golangci-lint run ./...
go run ./cmd/bombvault # обслуживает https://localhost:3443 с самоподписанным сертификатом
Сборка интерфейса нужна и для go run. Репозиторий отслеживает в web/dist только пустой маркер, поэтому без npm --prefix web run build бинарный файл ничего не встраивает и отвечает 500 SPA index not found, и это ожидаемо. Docker, libvirt и Unraid нельзя протестировать в CI, поэтому прежде чем открыть pull request, проверьте монтирования, restic и SSH-соединение для VM на настоящем хосте с помощью проверки интеграции с хостом (/spike).
Следующие шаги¶
- Изучите полный набор Возможностей.
- Соберите все серверы вашей группы на телефоне с помощью Приложения для Android.
- Добавьте одну или несколько реплик Внешней копии и восстановления (каждый домен может отправлять данные сразу в несколько назначений) и сохраните ваш набор для восстановления.
- Клонируете установку или переезжаете на новую машину? Перенесите всю конфигурацию с помощью карточки Экспорт / импорт настроек. См. Конфигурация.
- Столкнулись с загвоздкой? См. Устранение неполадок.