Iris — Справочник конфигурации развёртывания¶
Одна страница — единый источник истины по всем параметрам развёртывания Iris. English: DEPLOYMENT_CONFIG.md.
Все настройки живут в app/config.py (Settings) и читаются через get_settings(); задавайте их в
.env (устройство) или в env лицензионного сервера (облако). Ничего не включено по умолчанию —
обычный docker compose up поднимает пермиссивную dev-коробку. Коммерческое/appliance-поведение вы
включаете явно, под ту редакцию, которую поставляете.
1. Редакции — кратко¶
| Редакция | model_license_clean |
biometrics_enabled |
license_enforce |
Что поставляется |
|---|---|---|---|---|
| Dev / eval (по умолчанию) | false |
true |
false |
Работает как есть, без лицензии, все функции — только для разработки |
| Только детекция, license-clean ⭐ продаётся уже сейчас | true |
false |
true |
RT-DETR (Apache), нет AGPL/non-commercial/research-моделей, без биометрии |
| Полная коммерческая (лицо по лицензии клиента) | true |
true |
true |
+ личности на основе лица под собственной лицензией клиента на face-модель |
model_license_clean=true форсит Apache-детектор RT-DETR + appearance-бэкенд DINOv2 (без
AGPL YOLOv8 / research OSNet). biometrics_enabled=false — юридически чистый дефолт для платной
коробки без коммерческой лицензии на face-модель и правового基ования на биометрию. См.
LICENSING.md и COMPLIANCE.md.
2. Главные переключатели (устройство, .env)¶
| Настройка | Дефолт | Что делает |
|---|---|---|
model_license_clean |
false |
License-clean редакция: форсит Apache RT-DETR + DINOv2, без copyleft/research-моделей |
biometrics_enabled |
true |
Мастер-гейт: false = только детекция (лицо/reid/возраст-пол выключены) |
detector_backend |
yolo |
yolo | rtdetr (Apache) | deepstream | cpu. Форсится в rtdetr clean-редакцией |
reid_appearance_backend |
osnet |
osnet (research) | dinov2 (Apache). Форсится в dinov2 clean-редакцией |
faces_enabled / reid_enabled |
true |
Пофичевые тумблеры (также под гейтом biometrics_enabled) |
auth_required |
true |
Fail-closed: отклонять запросы без SSO-заголовка / API-ключа |
local_auth_enabled |
false |
Вход на appliance + RBAC (подписанная сессионная кука). Off → путь через SSO-заголовок |
offline_mode |
false |
Air-gap: без исходящих вызовов; вместе с HF_HUB_OFFLINE=1 |
3. Лицензирование и триал¶
Устройство (.env)¶
| Настройка | Дефолт | Что делает |
|---|---|---|
license_enforce |
false |
Поставляется инертным. true = применять лимит камер + права модулей из подписанной лицензии. Fail-open при ошибке |
license_path |
data/license.json |
Подписанный, привязанный к железу файл лицензии |
trial_auto_enabled |
false |
На первом старте без лицензии — автозапрос триала |
trial_server_url |
"" |
HTTPS-сервер лицензий для авто-триала |
Лицензионный сервер (облачный env — наша инфраструктура, не поставляется; см. cloud/README.md)¶
| Env | Дефолт | Что делает |
|---|---|---|
IRIS_LS_ADMIN_TOKEN |
— | Админ-секрет для /admin/* (выпуск токена, отзыв) |
IRIS_LS_KEY |
— | Приватный ключ подписи вендора (gen_vendor_key.py; в проде — HSM) |
IRIS_TRIAL_DAYS |
7 |
Срок бесплатного триала = 7 дней. Соответствует EULA §1a; не повышать без правки EULA (дефолт зафиксирован тестом) |
IRIS_TRIAL_MODULES |
"" (все) |
Права триала; пусто = полнофункциональный триал |
IRIS_TRIAL_CAMERAS |
не задано (∞) | Лимит камер в триале |
IRIS_HEARTBEAT_URL |
— | Endpoint heartbeat, зашиваемый в выпущенные лицензии |
IRIS_STRIPE_WEBHOOK_SECRET / IRIS_YOOKASSA_SECRET |
— | Биллинг-вебхуки (мир / РФ) |
Триал против платной — кратко:
| Триал | Платная | |
|---|---|---|
| Функции | Полные (все модули) | По купленному тарифу |
| Срок | 7 дней | Купленная подписка |
| Офлайн | Нет — grace_days=0, heartbeat обязателен (офлайн не работает; нужен живой чек-ин) |
grace_days 30–90 (работает офлайн в пределах grace) |
| На машину | Один (ключ — неизменяемый GPU UUID) | Привязка к железу развёртывания |
| Принятие | EULA §1a, принимается при установке | Заказ-форма + EULA |
Публичный ключ верификации зашивается на устройстве как IRIS_LICENSE_PUBKEY_N /
IRIS_LICENSE_PUBKEY_E (печатает scripts/gen_vendor_key.py). Проверить весь жизненный цикл без
реального развёртывания: scripts/demo_license_e2e.py (платная) и scripts/demo_trial_e2e.py (триал).
4. Шаблоны .env¶
Только детекция, license-clean appliance (продаётся уже сейчас):
AUTH_REQUIRED=true
MODEL_LICENSE_CLEAN=true # → RT-DETR (Apache) + DINOv2; без copyleft/research-моделей
BIOMETRICS_ENABLED=false # только детекция; без лицо/reid/возраст-пол
LICENSE_ENFORCE=true # применять подписанную лицензию
LICENSE_PATH=data/license.json
LOCAL_AUTH_ENABLED=true # вход на appliance + RBAC
OFFLINE_MODE=true # air-gap (вместе с HF_HUB_OFFLINE=1)
Полная коммерческая (у клиента есть лицензия на face-модель + правовое основание):
MODEL_LICENSE_CLEAN=true
BIOMETRICS_ENABLED=true # личности на основе лица ВКЛ (ответственность клиента, EULA §4)
LICENSE_ENFORCE=true
TRIAL_AUTO_ENABLED=true # опционально: 7-дневный авто-триал на первом старте
TRIAL_SERVER_URL=https://lic.example.com
Провижн appliance с коммерческими дефолтами одной командой:
EDITION=commercial scripts/provision_appliance.sh (биометрия off, RT-DETR, integrity on, производный
ключ, local auth + offline + license enforce; печатает hardware fingerprint для лицензии).
5. Профиль безопасности (дефолты уже fail-closed)¶
auth_required=true; SSO-заголовок личности перекрывает любое значение клиента (анти-спуфинг);api_keyсравнивается черезhmac.compare_digest.- Runtime-контейнер: non-root,
cap_drop:[ALL],no-new-privileges, исходники смонтированы read-only; все записи — вdata/. Слушает только127.0.0.1:8120(nginx терминирует TLS + SSO). - RTSP-креды маскируются в каждом ответе API; ffmpeg получает
-protocol_whitelist(анти-SSRF); у загрузок — защита от decompression-bomb; пути файлов traversal-contained. - Подписи лицензий/integrity — stdlib RSA-PKCS1v15-SHA256; векторы через
numpy.frombuffer(никогда pickle). См. SECURITY.md, CODE_PROTECTION.md.
6. Связанное¶
DEPLOYMENT.md · APPLIANCE_DEPLOYMENT.md · APPLIANCE_HARDENING.md · OFFLINE_RUNBOOK.md · RELEASE_RUNBOOK.md · LICENSE_SERVER_SPEC.md · LICENSING.md · legal/EULA.md