Перейти к содержимому
Начать

Лицензирование

Лицензирование Mildport — офлайн. Движок проверяет каждый ключ локально по публичному ключу, который вы разворачиваете вместе с ним, поэтому импорты продолжают работать, можете вы нас достичь или нет — в air-gap, во время нашего обслуживания, в воскресный вечер.

Одна и та же лицензия действует везде. Нет отдельного «облачного ключа» и «self-host ключа»: один ключ, одна проверка в нашем облаке и в вашей VPC.

  1. Вы получаете ключ лицензии на странице Лицензии своего аккаунта Mildport.
  2. Движок хранит публичный ключ, по которому проверяет — IMPORT_LICENSE_PUBLIC_KEY, на странице Self-hosting того же аккаунта.
  3. Каждый запрос проверяется локально. Никакого сетевого вызова, никогда.

Ключ несёт тенант, план, лимиты и срок действия, поэтому одно развёртывание может обслуживать много тенантов с разными правами — движок читает всё это из самого ключа.

Ключи против нашего управляемого облака нарочно короткоживущие (недели, не годы) и обновляются без присмотра: вместе с ключом лицензии вы получаете секрет обновления (его тоже показывают ровно один раз). Ваш сервер вызывает им endpoint обновления по cron — тот же план, те же origin, свежий ключ и срок — и подставляет ключ туда, где вы его встраиваете. Утёкший облачный ключ поэтому умирает сам за дни, без инфраструктуры отзыва и без того, чтобы проверка звонила домой.

Self-host и air-gap развёртывания освобождены по замыслу: их ключи сохраняют длинный срок плана и никогда не должны нас достигать — в движке нет знания об endpoint обновления. Ручная перегенерация также ротирует секрет обновления.

Войдите в аккаунт, откройте Лицензии и создайте тенант. Ключ появляется один раз, сразу после выпуска.

Ключ принадлежит встраивающему хосту, в атрибуте license-key виджета (см. Настройка). Это bearer-учётные данные: обращайтесь с ним как с API-ключом и не кладите в публичные репозитории.

Ключи ограничены по времени, и истечение — единственное, что заканчивает жизнь ключа — удалённого выключателя нет, потому что удалённого ничего нет.

  • Мы пишем за 30 дней до истечения, на адрес, который ключ создал.
  • Продление — один клик: перегенерируйте на странице Лицензии. Вы получаете свежий ключ, текущий действует до своей даты — можно продлить заранее и подменить без простоя.
  • После истечения импорты с этим ключом останавливаются. Решение — тот же клик.

Панель показывает обратный отсчёт на любой лицензии в последние 30 дней, так что состояние видно, не дожидаясь письма.

Ключ для браузерного эмбеда можно привязать к разрешённым сайтам. Оставьте список пустым — ключ работает откуда угодно; добавьте origin — браузерные запросы с других мест отклоняются. Серверные вызовы не затрагиваются — это защищает встроенные ключи, которые видит любой, кто откроет исходник страницы.

Задайте список при создании или перегенерации. Поддомены с wildcard — как https://*.example.com, порты имеют значение.

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

  • Список отзыва — добавьте id лицензии в IMPORT_LICENSE_REVOKED_IDS на движке (через запятую). Вступит в силу со следующим деплоем, новый публичный ключ не нужен.
  • Перегенерировать — выпустите свежий ключ из панели и перестаньте раздавать старый. Он действует до истечения — поэтому список есть для срочного случая.

Preflight говорит, может ли движок вообще проверять ключи, до того как придёт трафик:

Terminal window
pnpm import:self-host-check

Из образа, а не из исходников? Та же проверка встроена:

Terminal window
docker run --rm --env-file .env ghcr.io/capitality-io/mildport-aio \
bun dist/cli/self-host-check.js

В Kubernetes helm test mildport запускает её внутри кластера.

Дальше: Справочник конфигурации · Доступ к образам