Перейти к содержимому

Установка лицензии и переход на Business

Вы приобрели тарифный план и получили лицензию. На этой странице описано, что с ней делать: куда поместить файл, как применить его к работающему движку, как узнать, что установлено, и — если вы приобрели план Business — как заменить бинарный файл Community на коммерческий, ничего не переустанавливая.

Что вы приобрели Что приходит Что с этим делать
Community устанавливать нечего уже работает — ничего на этой странице не применяется
Business / Enterprise, самостоятельное размещение файл лицензии и токен скачивания установить лицензию, затем перейти на коммерческий бинарный файл
Cloud учётные данные размещённого tenant на вашем хосте устанавливать нечего

Лицензия представляет собой один подписанный blob. Сохраните его в файл — customer.license или с любым другим именем — и сохраните токен скачивания из того же письма: они используются на разных этапах, и устанавливается только лицензия.

Окно терминала
olivares license install ./customer.license --data-dir /var/lib/olivares

Команда проверяет blob до того, как что-либо записать, по открытому ключу Ed25519, встроенному в вашу сборку. Поэтому усечённая копия из буфера обмена завершается ошибкой здесь, а не при следующем запуске. При успехе команда записывает <data-dir>/license.key с режимом 0600 — каноническую хранимую лицензию, которую движок читает по умолчанию.

Передайте - вместо пути, чтобы прочитать blob из стандартного ввода:

Окно терминала
pbpaste | olivares license install - --data-dir /var/lib/olivares

Установка поверх существующей лицензии атомарно заменяет её и сообщает, какая лицензия была заменена.

Применить к работающему движку — без перезапуска

Заголовок раздела «Применить к работающему движку — без перезапуска»

Работающий движок принимает новую лицензию на месте. Это можно сделать любым из следующих способов:

Окно терминала
kill -HUP "$(pidof olivares)" # signal the running process
curl -X POST .../v1/console/runtime/reload # the API half

…или собственным элементом перезагрузки в консоли. Перезапуск тоже работает, но он не нужен.

Если вы уже внедряете лицензию другим способом, учитывайте, что файл из каталога данных имеет самый низкий приоритет среди четырёх источников. Движок разрешает их в порядке убывания приоритета:

  1. --license <path> (или LicenseFile в файле конфигурации)
  2. OLIVARES_LICENSE_PATH=<path>
  3. OLIVARES_LICENSE=<blob> — лицензия непосредственно в окружении
  4. <data-dir>/license.key — то, что записывает license install

license install отказывается выполнять установку, когда может определить, что override имеет более высокий приоритет, чем файл, который команда собирается записать: установка под таким override оставила бы файл, который движок никогда не читает, а вы увидели бы exit 0 без каких-либо изменений. Команда сообщает, какой override она обнаружила, а --force всё равно подготавливает файл — правомерный случай состоит в том, что вы собираетесь удалить override.

Окно терминала
olivares license status --data-dir /var/lib/olivares

status работает офлайн и разрешает лицензию с тем же приоритетом, который использует движок. Поэтому он отвечает на важный вопрос — какая лицензия фактически действует — вместо вопроса «есть ли файл». Он сообщает разрешённый источник, владельца, план и срок действия.

Запускайте его после каждой установки и после удаления override.

Установка действующей лицензии Business или Enterprise на сборку Community не останавливает эту сборку. Кокпит сессий и остальные коммерческие страницы появляются только после того, как вы переключите эту установку на Business. Представление Edition & license в консоли показывает установленную лицензию отдельно от сборки. Expires — оплаченный срок; Lease until, если он показан, — отдельная временная аренда экземпляра. Работаете в Docker? Перейдите к разделу Docker и Compose ниже.

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

Окно терминала
export OLIVARES_UPGRADE_TOKEN=<TOKEN> # not needed once this installation is connected
olivares upgrade --edition business

olivares license install и olivares license status выводят точную команду для того способа, которым установлена эта инсталляция, а представление Edition & license в консоли показывает тот же шаг одной кнопкой Перейти на Business: движок скачивает сборку, проверяет её, заменяет на месте и перезапускается на ней. Токен загрузки находится на странице Downloads лицензионного портала загрузок (https://licenses.olivares.ai/portal/downloads), рядом с этими командами, и в письме с лицензией; передавайте его по имени, как выше, чтобы он не попадал в список процессов. Подключённой инсталляции (olivares license connect start) токен не нужен. --enterprise — прежняя запись того же маршрута. Кнопке консоли нужно одно из двух: токен в собственном окружении движка или это подключение; если нет ни того, ни другого, представление показывает команду.

Команда получает подписанную коммерческую сборку для вашей платформы и проверяет подпись офлайн — артефакт с несанкционированными изменениями прерывает обновление, оставляя работающий бинарный файл неизменным, — а затем выполняет атомарную замену, сохраняя резервную копию предыдущего файла. Business имеет тот же номер версии, что и Community, поэтому команда работает и тогда, когда вы уже используете эту версию. Сначала используйте --check, если хотите увидеть план, не применяя его; смену редакции он показывает как edition: community -> enterprise:

Окно терминала
olivares upgrade --edition business --check

Перезапустите службу, а затем включите модули:

Окно терминала
olivares enterprise enable <preset> # starter | regulated | full

Команда и имена пресетов — это то, что принимает коммерческий бинарный файл. Пресеты не являются редакциями и не соответствуют один к одному четырём семействам возможностей Business. Активация управляется и аудируется: сначала показывается diff, а модуль, которой нужен secret или проверка, переводится в подготовленное состояние, а не включается наполовину. olivares enterprise status сообщает, что активно. Эти команды существуют только в коммерческом бинарном файле — если olivares enterprise не является командой, у вас всё ещё работает сборка Community и описанная выше замена ещё не произошла.

Публичный образ docker.io/olivaresai/olivares — это Community. В контейнере olivares upgrade устанавливает релиз в том данных, а не в образ, поэтому пересозданный контейнер запускает его снова. Это применяет релиз Business, если он новее образа или той же версии (--check показывает смену как edition: community -> enterprise); собрать образ самостоятельно, как описано ниже, — альтернатива. Когда лицензия установлена (раздел 2), запустите обновление в работающем контейнере и перезапустите его. Токен приходит в письме с доставкой; передайте его по имени, чтобы он не попал в список процессов:

Окно терминала
export OLIVARES_UPGRADE_TOKEN=<TOKEN>
docker compose exec -e OLIVARES_UPGRADE_TOKEN olivares olivares upgrade --edition business --yes
docker compose restart olivares

Релиз хранится в ota/ в каталоге данных (/var/lib/olivares/ota в поставляемом образе) вместе с подписанным манифестом и артефактом, по которым он был проверен. Бинарный файл образа запускает его, если он новее образа или имеет ту же версию, но собран иначе (образ Community той версии, которую вы применили как Business). Содержимому тома само по себе не доверяют: при каждом запуске подпись манифеста проверяется встроенным в образ ключом OTA, а артефакт — дайджестом, который подписывает манифест. Подтверждение хранится во временном каталоге контейнера (в поставляемом файле Compose там смонтирован tmpfs), а не в томе; пересоздание очищает его. Если образ новее применённого релиза, запускается образ, и журнал запуска сообщает об этом; снова запустите обновление. Данные, которые не проходят проверку, игнорируются с сообщением, и запускается образ. Том не хранит резервную копию предыдущего бинарного файла: чтобы вернуться к бинарному файлу образа, удалите ota/. Нужен том, допускающий выполнение файлов (именованный том допускает; на монтировании noexec olivares serve останавливается и объясняет причину, а не запускает молча бинарный файл образа).

Образ можно также собрать самостоятельно. Скачайте ту же версию и ту же архитектуру Linux бинарного файла Business через портал загрузки для лицензированных клиентов и проверьте его подпись и контрольную сумму по инструкциям к загрузке. Затем на своём хосте можно наложить этот проверенный бинарный файл на соответствующий runtime-образ Community. В каталоге, где лежит проверенный бинарный файл с именем olivares, используйте такой Dockerfile:

ARG COMMUNITY_IMAGE
FROM ${COMMUNITY_IMAGE}
COPY --chmod=0755 olivares /usr/local/bin/olivares

Собирайте с дайджестом образа Community для этой версии, проверенным так, как описано в Проверка того, что вы скачали. Результат сохраняет непривилегированного пользователя, entrypoint и порты этого образа, поэтому строка USER в Dockerfile не нужна:

Окно терминала
docker build --build-arg COMMUNITY_IMAGE=docker.io/olivaresai/olivares@sha256:<digest> \
--tag olivares-business-local:X.Y .

Держите этот образ закрытым и сохраните коммерческую лицензию и уведомления, поставляемые с загрузкой. Не помещайте файл лицензии или токен загрузки в контекст сборки. Укажите в поле image вашего сервиса Compose значение olivares-business-local:X.Y, затем пересоздайте этот сервис командой docker compose up -d --no-deps --force-recreate olivares. Для автономного Docker пересоздайте контейнер с этим образом, тем же томом и теми же аргументами. Сохраните том данных: не используйте down --volumes.

После перезапуска проверьте Edition & license: редакция должна показывать Business, а установленная лицензия остаётся в томе данных. Контракты Enterprise используют эту же коммерческую сборку; любой артефакт, специфичный для контракта, следует своим инструкциям по загрузке.

Окно терминала
olivares license uninstall --data-dir /var/lib/olivares --yes

Команда удаляет <data-dir>/license.key и сообщает, что было удалено. Как и install, она отказывается выполнять операцию, пока может увидеть override OLIVARES_LICENSE*: действует не этот файл, поэтому его удаление ничего не изменит. У неё есть и та же слепая зона: флаг --license, переданный отдельно работающему движку, для неё невидим. Это офлайн-половина собственного DELETE /v1/console/license консоли.

Удаление лицензии не отключает ничего из того, что у вас работало. Оно отзывает подтверждение; коммерческий бинарный файл продолжает вести себя как коммерческий бинарный файл, пока вы не замените его обратно.

  • Выпуск лицензий (license keygen / sign) — это сторона поставщика в той же команде. Клиенту она не нужна.
  • Состав каждого плана приведён на страницах цен, а не здесь.
  • Как работает модель — почему подписка предоставляет доступ к артефактам, а не служит переключателем, — описано в разделе Открытое ядро и лицензирование.
  • Репетиция «покупка → возврат» (на фикстурах песочницы, а не на реальной карте) — это Репетиция коммерческого цикла.