Local Relay
Local Relay — on-premises компонент для площадок, которым нужен license enforcement при ограниченной связи с cloud. Host синхронизируется outbound в cloud, держит local store и может обслуживать LAN validation (и опционально floating actions), не размещая полный Management plane на площадке.
Внутренности Relay engine остаются proprietary платформы. Публичные docs описывают роль и границы — не layout исходников Host и не private messaging.
Для чего Relay
| Потребность | Роль Relay |
|---|---|
| Прерывистый / ограниченный WAN | Outbound sync + local leases, чтобы площадка работала между sync |
| LAN-продукты | Локальный validation path для устройств в сети площадки |
| Нет непрерывного HTTPS | В паре с air-gapped пакетами оператора вместо (или между) окнами sync |
Relay не открывает cloud message brokers с Host. Непрерывный sync и air-gap handoff — разные транспорты с одной fail-closed crypto-позой.
Для LAN activation, validation и refresh нужен active verified V2 snapshot
License. Legacy entitlement-only store, offline grace или исторический lease с
ProductId из entitlement.Code не могут дать allow; validate/refresh возвращают
relay.host.no_snapshot до доставки V2 state. См. руководство по cutover Wave
74.15.
Безопасные повторы LAN-запросов
LAN activation, refresh lease и device registration используют стабильный
Idempotency-Key для одной логической попытки. Тот же key с тем же request
возвращает исходный результат даже после рестарта Host; изменённый request с
живым key получает 409 relay.host.idempotency_conflict. Если Host не может
восстановить защищённый исходный результат, он возвращает
503 relay.host.idempotency_unavailable и не повторяет mutation. Key должен
содержать 1–128 печатных ASCII-символов без пробелов.
Локальная отправка usage
Авторизованный LAN-клиент отправляет usage-факт подписанным запросом
edge-lan-v1 на POST /api/edge/v1/usage/report с операцией usage.report.
Запрос содержит UUIDv7 локального события, ожидаемые License и Product,
нормализованный код meter, положительное количество и UTC-время события.
Product из запроса не является authority: Relay получает Product, Tenant,
Customer и определение meter из активного локального поколения с подписью
Cloud и проверяет Product-scope клиента.
Relay добавляет факт в SQLite один раз. Точный повтор local event возвращает
тот же receipt, а изменённое повторное использование получает 409. Host
фиксирует pending-факты в неизменяемые batch до 500 событий и отправляет в
Cloud точные сохранённые байты с ES256 proof Gateway и производным ключом
идемпотентности. После сетевой ошибки или рестарта повторяются те же байты.
Локальное доказательство подтверждается только после точного надёжного receipt
Cloud. Usage-факты не выдают и не продлевают права лицензии.
Health и локальная диагностика
Анонимные ответы GET /health и GET /ready содержат только status,
service и version. Они не раскрывают Tenant, Customer, site, количество
лицензий, состояние синхронизации, сведения о provider, key id, пути или детали
ошибок.
Подробная диагностика доступна на
GET /api/edge/admin/v1/diagnostics. Нужны одновременно loopback-вызов и
отдельный credential схемы RelayAdmin; credentials LAN-клиента и Gateway не
принимаются. В конфигурации Host хранится только SHA-256 digest credential в
RelayHostAdmin:CredentialSha256. Прежний анонимный путь GET /diagnostics
удалён. Security-диагностика показывает только типы provider и id активного
signing key, но никогда не credential, key material, координаты ключа,
protected references или пути конфигурации.
Vendor Console (оператор)
В Vendor Console списки Offline / Floating / Relays принимают опциональный product-контекст (query productCode / productId), а вкладки Operations показывают Offline + Floating рядом с Relays. Enrollment Local Relay идёт через multi-step setup wizard (опциональная привязка лицензии → checklist одноразового token → deep-link на Offline air-gap экспорт). Product-фильтры в этом релизе только на стороне Console — Management list API остаются tenant-wide.
Это не webhooks
Customer webhooks — это platform → ваш HTTPS URL (push событий для интегратора). Sync Relay — Host → cloud reconciliation плюс локальная LAN-валидация. Не настраивайте webhook URL в расчёте, что он «кормит» Relay Host, и не считайте доставку webhook доказательством signed lease.
Когда использовать
- Hospitality / филиальные площадки с нестабильным WAN и многими локальными клиентами.
- Нужен локальный enforce плюс периодическая reconciliation с cloud.
- Чисто online Runtime-продукты со стабильной связью → Relay может не понадобиться.
Связанное
- Offline · Air-gapped · Floating
- Регистрация публичного ключа Gateway
- Синхронизация пакетов Gateway
- Словарь: Основные понятия
- Карта режимов: Модели лицензирования
- Интеграторы: API Reference · SDKs
Следующие шаги
- Быстрый старт
- Темы operations (deployment / troubleshooting) появятся в следующих волнах public docs