Wardhold

Локальная установка

Всё на одной машине

Типичная коробочная установка — одна виртуальная машина, на ней сервис, PostgreSQL и обратный прокси. Ниже — конфигурация, которую имеет смысл запросить у своей инфраструктуры, и то, из чего она складывается.

Какую конфигурацию просить

ПрофильvCPU / памятьДискиКогда это ваш случай
Пилот2 / 4 ГБ30 ГБ система + 30 ГБ данныеДемо и первые команды, десятки людей, без нагрузки со стороны сборок
Типовой4 / 8 ГБ30 ГБ система + 100 ГБ данныеРабочая установка отдела или компании: люди, сервисы и CI вместе
С запасом8 / 16 ГБ30 ГБ система + 200 ГБ данныеСотни людей, интенсивная выдача секретов сборкам, долгое хранение журнала

Из чего складывается эта цифра

Сам сервис почти ничего не занимает: на боевой машине 2 vCPU / 4 ГБ бинарь около 13,5 МБ, потребление памяти 12–17 МБ, старт процесса — единицы миллисекунд. Это доли процента машины, и запас нужен не ему.

  • Операционная система — отечественные дистрибутивы сами рекомендуют порядка 4 ГБ памяти и 16 ГБ диска
  • PostgreSQL — основной потребитель памяти, буферы обычно около четверти оперативной памяти машины
  • Снятие резервной копии — полная логическая копия собирается в памяти процесса, поэтому память планируется с кратным запасом к объёму данных
  • Место под копии — по умолчанию хранится четырнадцать последних; если копии уезжают во внутреннее S3-хранилище, локально достаточно двух-трёх

Раскладка на машине

# бинарь — только чтение для служебной учётной записи
/usr/local/bin/wardhold

# конфигурация: права 0600, владелец — служебная учётная запись
/etc/wardhold/wardhold.env

# данные: копии и предыдущая версия бинаря, отдельный том
/var/lib/wardhold/backups
/var/lib/wardhold/releases

# сервис слушает петлю, наружу его выводит обратный прокси
WARDHOLD_ADDR=127.0.0.1:8080

Резервные копии не стоит держать на том же томе, что базу: копия, потерянная вместе с базой, копией не была.

Что проверить до установки

Версия PostgreSQLработает

Схема использует возможности версии 13 и старше; наши прогоны идут на 16. База отдельная, пользователь отдельный, расширения не нужны.

Точное времяработает

Синхронизация часов обязательна: на них держатся одноразовые коды второго фактора и сроки жизни токенов и сессий.

Сеть наружуработает

Исходящий доступ сервису не нужен: ни проверок лицензии, ни телеметрии. Наружу он ходит только туда, куда вы сами его направите — почтовый релей, корпоративный вход, ваше хранилище копий.

Почтовый релейработает

Без него инстанс поднимется, но подтверждение адреса и сброс пароля работать не будут: регистрация закрывается, состояние видно в проверке готовности.

Мастер-ключработает

Хранится отдельно от базы и отдельно от копий. Потеря ключа равна потере значений — восстановить их не сможем и мы.

Снимки виртуальной машиныработает

Они не заменяют резервную копию продукта: без парольной фразы и мастер-ключа восстановление не собирается.

Операционные системы и обновления

ЧтоСостояниеКомментарий
Linux amd64 и arm64работаетСтатическая сборка без CGO: системных библиотек и рантайма не требует
Установка бинарём под systemdработаетОсновной способ поставки там, где контейнеры в контуре не разрешены
Docker ComposeработаетОбразы переносятся во внутренний реестр заранее
Обновление заменой файла и рестартомработаетСхему обновляет сам бинарь при старте
Стенды на Astra Linux SE и РЕД ОСв планеТехнических препятствий нет, но формальные прогоны и подтверждение совместимости ещё впереди — до этого не заявляем
Обновление из внутреннего зеркала по расписаниюв планеПроверка подписи, копия перед миграцией и откат при неудаче — в разработке, сегодня обновление ставится руками

Нужна помощь с расчётом?

Напишите, сколько у вас людей, сервисов и сборок в сутки — предложим конфигурацию под ваш профиль и пришлём инструкцию по установке.