Свой сервер
Один процесс рядом с PostgreSQL
Продукт с самого начала проектировался под коробку и закрытый контур: REST, MCP, веб-кабинет, планировщик и доставка вебхуков живут в одном процессе. Ни брокера, ни Redis, ни внешнего CDN.
Порядок установки
# 1. база данных: PostgreSQL 16 и пустая база wardhold export WARDHOLD_DATABASE_URL=postgres://wardhold@localhost:5432/wardhold # 2. мастер-ключ инстанса — хранить отдельно от базы и в бэкапе export WARDHOLD_MASTER_KEY=$(openssl rand -hex 32) # 3. миграции применяет сам бинарь, отдельного инструмента нет ./wardhold migrate export WARDHOLD_ADDR=127.0.0.1:8080 ./wardhold serve # 4. первый токен для потребителя ./wardhold token create --help
Схему обновляет тот же бинарь при выкатке, поэтому порядок «миграции до подъёма нового кода» соблюдается автоматически.
Что важно в закрытом контуре
Никаких внешних вызововработает
Шрифты и веб-кабинет вшиты в бинарь, проверок лицензии по сети нет, обновления ставятся заменой файла.
Мастер-ключ и бэкапработает
Значения зашифрованы ключом инстанса: потеря ключа равна потере данных. Ключ обязан лежать в офлайн-копии отдельно от копий базы.
Резервные копии по расписаниюработает
Сам бинарь снимает полную копию базы в каталог или S3, шифрует её парольной фразой и подписывает; restore возвращает её в пустой инстанс со сверкой, а проверка восстановления живёт в тестах продукта.
Ротация ключаработает
Команда rotate-key перезаворачивает рабочие ключи порциями на работающем инстансе: содержимое не перечитывается, старый ключ выводится после проверки status. Ключ подписи заворачивается вместе со всеми.
Кластер из нескольких узловEnterprise
Для отказоустойчивости и общих лимитов запросов между узлами — коммерческое издание.
Как получить сборку
Community Edition выпускается под AGPLv3. Публикация репозитория и бинарных релизов готовится; до неё сборку и инструкцию присылаем по запросу на hello@wardhold.ru — напишите, какая платформа нужна (Linux amd64 или arm64) и в каком виде удобнее: бинарь, образ или архив для внутреннего зеркала.
Коммерческое издание собирается отдельным артефактом: в сборке Community коммерческого кода нет физически, а не отключён флагом.