Конфигурация¶
Конфигурация делится на переменные окружения сервера (секреты, rate limits, перевод) и localStorage браузера (стек, настройки UI, кэш скана).
Окружение сервера¶
Скопируйте .env.example в .env. Ключи читает dotenv только процессом Express.
| Переменная | По умолчанию | Описание |
|---|---|---|
PORT |
3001 |
Порт HTTP |
SCAN_DAYS |
60 |
Окно look-back лент |
API_SECRET |
— | Опциональный shared secret; при задании — X-Api-Key или Bearer на /api/* кроме health |
API_SECRET_PREVIOUS |
— | Предыдущий secret во время ротации (опционально; SECRETS.md) |
VITE_API_KEY |
— | Ключ UI на этапе сборки (тот же API_SECRET для single-tenant) |
NVD_API_KEY |
— | Ключ rate limit NVD (GET /api/health?detailed=true → feeds.nvd) |
GITHUB_TOKEN |
— | GitHub advisory — classic PAT с public_repo |
OSV_TIMEOUT_MS |
15000 |
Таймаут OSV (мс); retry при 429/503 |
GITHUB_MAX_PAGES |
3 |
Глубина prefetch advisory |
TRANSLATE_ENABLED |
true |
Главный переключатель перевода |
TRANSLATE_MAX_ITEMS |
50 |
Лимит перевода на скан |
TRANSLATE_BATCH_MAX |
40 |
На запрос /api/translate |
TRANSLATE_CONCURRENCY |
3 |
Параллельные воркеры перевода |
MYMEMORY_EMAIL |
— | Идентификатор MyMemory |
LIBRETRANSLATE_URL |
— | Опциональный LibreTranslate |
OLLAMA_URL |
— | Локальный endpoint Ollama |
OLLAMA_MODEL |
llama3.2 |
Модель Ollama |
RATE_LIMIT_SCAN_PER_MIN |
12 |
Макс. запросов POST /scan на IP в минуту |
RATE_LIMIT_WATCH_PER_MIN |
120 |
Макс. запросов POST /watch на IP в минуту |
SCAN_TIMEOUT_MS |
— | Прерывание длинных scan/watch (см. .env.example) |
Auth, RBAC, rate limits, data, K8s, metrics¶
Полные таблицы переменных (API_ROLE, DATABASE_URL, REDIS_URL, JOB_QUEUE_ENABLED, WORKER_CONCURRENCY, JOB_RESULT_TTL_SEC, AIRGAPPED, K8S_*, METRICS_*, …) — глава Configuration (EN).
Data, cache, and multi-tenancy¶
| Variable | Default | Description |
|---|---|---|
DATABASE_URL |
— | PostgreSQL for scan history, tenants, saved stacks |
DATA_DIR |
./data |
Server data directory (Docker: /app/data) |
REDIS_URL |
— | Shared response cache across instances; also enables BullMQ scan jobs when a worker runs |
JOB_QUEUE_ENABLED |
enabled with REDIS_URL |
Set false to use Redis for cache only (no queue) |
WORKER_CONCURRENCY |
1 |
Parallel scan jobs per worker process |
JOB_RESULT_TTL_SEC |
3600 |
Redis TTL for completed job result payloads |
CACHE_MAX_ENTRIES |
2000 |
In-memory cache cap when Redis is unset |
Send X-Tenant-Id on /api/v1/* when using Postgres — see Self-hosted tenants.
Окружение уведомлений сервера¶
Опциональные исходящие оповещения, когда watch находит новые CVE (см. Оповещения). Устаревшие переменные Slack webhook поддерживаются.
| Переменная | Описание |
|---|---|
ALERT_WEBHOOK_URL / ALERT_WEBHOOK_URL_FILE |
Legacy webhook, совместимый со Slack |
ALERT_MIN_SEVERITY |
Минимальная severity для legacy webhook |
ALERT_WEBHOOK_FORMAT |
JSON slack или generic |
NOTIFICATION_MIN_SEVERITY |
Глобальный минимум severity (по умолчанию ALERT_MIN_SEVERITY или HIGH) |
NOTIFICATION_SLACK_MIN_SEVERITY |
Override только для Slack (fallback на global) |
NOTIFICATION_DISCORD_MIN_SEVERITY |
Override для Discord |
NOTIFICATION_TEAMS_MIN_SEVERITY |
Override для Teams |
NOTIFICATION_TELEGRAM_MIN_SEVERITY |
Override для Telegram |
NOTIFICATION_EMAIL_MIN_SEVERITY |
Override для Email |
NOTIFICATION_WEBHOOK_MIN_SEVERITY |
Override для generic webhook |
NOTIFICATION_DEDUP_MS |
Подавление повторных постов на канал (по умолчанию 15 мин) |
NOTIFICATION_RATE_LIMIT_PER_HOUR |
Глобальный лимит успешных отправок/час/канал (0 = без лимита) |
NOTIFICATION_SLACK_RATE_LIMIT_PER_HOUR |
Лимит Slack/час (fallback на global) |
NOTIFICATION_DISCORD_RATE_LIMIT_PER_HOUR |
Лимит Discord/час |
NOTIFICATION_TEAMS_RATE_LIMIT_PER_HOUR |
Лимит Teams/час |
NOTIFICATION_TELEGRAM_RATE_LIMIT_PER_HOUR |
Лимит Telegram/час |
NOTIFICATION_EMAIL_RATE_LIMIT_PER_HOUR |
Лимит Email/час |
NOTIFICATION_WEBHOOK_RATE_LIMIT_PER_HOUR |
Лимит webhook/час |
NOTIFICATION_SLACK_WEBHOOK_URL |
Отдельный Slack webhook |
NOTIFICATION_DISCORD_WEBHOOK_URL |
URL Discord webhook |
NOTIFICATION_TEAMS_WEBHOOK_URL |
Microsoft Teams Incoming Webhook (MessageCard) |
NOTIFICATION_TELEGRAM_BOT_TOKEN |
Токен Telegram bot |
NOTIFICATION_TELEGRAM_CHAT_ID |
Chat id Telegram |
SIEM_WEBHOOK_URL / SIEM_FORMAT |
SIEM JSON/CEF webhook |
OPA_URL / OPA_ENFORCE |
OPA sidecar + watch gate |
JIRA_* / SERVICENOW_* |
ITSM CRITICAL+KEV tickets |
NOTIFICATION_WEBHOOK_URL |
Универсальный JSON webhook (конверт, совместимый с Teams) |
NOTIFICATION_SMTP_HOST |
SMTP-хост для email |
NOTIFICATION_SMTP_PORT |
Порт SMTP (по умолчанию 587) |
NOTIFICATION_SMTP_USER / NOTIFICATION_SMTP_PASS |
SMTP auth (опционально) |
NOTIFICATION_SMTP_FROM / NOTIFICATION_SMTP_TO |
Отправитель и получатель email |
localStorage клиента¶
| Ключ | Назначение |
|---|---|
cve-radar:stack |
Имена отслеживаемых инструментов |
cve-radar:settings |
Оповещения, мониторинг, перевод, интервалы |
cve-radar:setup-complete |
Завершение мастера первого запуска (v1.1.0+) |
cve-radar:theme |
light / dark / system |
cve-radar:locale |
Код языка UI |
cve-radar:font-scale |
Масштаб текста 85–140 |
cve-radar:sidebar-collapsed |
Узкий режим SubNav |
cve-radar:last-scan |
Кэш vuln + summary (scanCache.ts, по ключу стека) |
cve-radar:known-ids |
ID CVE для dedup в watch |
cve-radar:sources-updated-at |
Метки времени по источникам |
cve-radar:source-config |
Переключатели встроенных и custom feed |
Никогда не коммитьте .env с реальными токенами.
URL обнаружения API¶
При работающем сервере интеграторы могут читать лимиты и контракты без разбора кода:
| URL | Назначение |
|---|---|
GET /api/health |
Liveness и флаги env |
GET /api/capabilities |
Числовые лимиты и feature flags |
GET /api/sources |
Каталог встроенных лент |
GET /api/openapi.json |
Документ OpenAPI 3.1 |
Версионированные эквиваленты: /api/v1/health и т.д. См. Справочник API.
Далее: Архитектура