Skip to content

Настройки панели ​

Почти всё в панели настраивается из интерфейса, без правки файлов и перезапуска: Настройки. Изменение применяется сразу.

Значение берётся по цепочке база данных → .env → значение по умолчанию. Пока настройку не трогали в интерфейсе, работает то, что задано в .env или зашито в код; после первого изменения она живёт в базе, и .env на неё больше не влияет.

В списке настройки помечены: В БД — значение переопределено и хранится в базе, .env — взято из окружения, По умолч. — из кода. Отдельные значения только для чтения: они управляются со своих страниц, а здесь показаны для полноты.

Эта страница собрана из кода

Названия, описания и значения по умолчанию берутся прямо из каталога настроек панели, поэтому не расходятся с тем, что вы видите в интерфейсе. Обновляется командой python scripts/gen_settings_docs.py.

⚙️ Общие ​

Базовые вещи: язык, логи, доступ к панели Remnawave, ключи внешних сервисов. Часть значений здесь — секреты, они правятся на своих страницах, а в списке настроек показываются только для справки.

НастройкаКлючПо умолчаниюЧто делает
🌐 Язык ботаbot_languageruЯзык интерфейса бота (DEFAULT_LOCALE)
📝 Уровень логированияlog_levelINFOУровень детализации логов (требует перезапуск) (LOG_LEVEL)
📦 Макс. размер лог-файла (MB)log_max_size_mb10Максимальный размер одного лог-файла перед ротацией
🗂️ Кол-во бэкапов логовlog_backup_count5Количество сжатых бэкап-файлов при ротации
🌍 Источник MaxMind GeoIPmaxmind_sourceautoauto — зеркала GitHub (P3TERX, GitSquared), затем MaxMind; github — только зеркала (без ключа); maxmind — только официальный (нужен ключ). Своё зеркало — переменная MAXMIND_MIRROR_URL (MAXMIND_SOURCE)
🏷️ Название панелиpanel_nameпустоОтображаемое название проекта в боковом меню (рядом с логотипом)
🕒 Часовой поясdisplay_timezoneEurope/MoscowЗона IANA. В ней показывается всё время: веб-панель, бот, уведомления, выгрузки, время отчётов и бэкапа. В базе и в API время — в UTC
🔗 Публичный URL панелиweb_panel_public_urlпустоhttps-адрес веб-панели. Используется кнопкой «Открыть панель» в боте (Telegram Mini App). Пусто — берётся из APP_PUBLIC_URL (APP_PUBLIC_URL)
Срок access-токена (минут)web_session_access_minutes30Время жизни access-токена веб-админки. Применяется к новым логинам и refresh. Рекомендация: 30-120 мин (WEB_JWT_EXPIRE_MINUTES)
Срок сессии (часов)web_session_refresh_hours6Общее время жизни сессии (refresh-токен). Пока валиден — юзер не выходит. После истечения нужен повторный вход с 2FA. Рекомендация: 12-24ч (WEB_JWT_REFRESH_HOURS)
DNS: Cloudflare (зашифр.)dns_creds_cloudflareпустоУправляется на странице «DNS», не здесь (только чтение)
DNS: Timeweb Cloud (зашифр.)dns_creds_timewebпустоУправляется на странице «DNS», не здесь (только чтение)
DNS: reg.ru (зашифр.)dns_creds_regruпустоУправляется на странице «DNS», не здесь (только чтение)
DNS: Selectel (зашифр.)dns_creds_selectelпустоУправляется на странице «DNS», не здесь (только чтение)
DNS: Aeza (зашифр.)dns_creds_aezaпустоУправляется на странице «DNS», не здесь (только чтение)
BS-Check: токен bschekbot (зашифр.)bscheck_tokenпустоТокен bsk_live_… (bsbord) для проверки нод через операторов. Правится на странице нод (только чтение)
Репутация: ipinfo.io токен (зашифр.)reputation_ipinfo_tokenпустоУправляется на странице BS-Check (только чтение)
Репутация: IPQualityScore токен (зашифр.)reputation_ipqs_tokenпустоУправляется на странице BS-Check (только чтение)
Репутация: AbuseIPDB токен (зашифр.)reputation_abuseipdb_tokenпустоУправляется на странице BS-Check (только чтение)
OAuth: Google client_idoauth_google_client_idпустоУправляется в настройках OAuth (только чтение)
OAuth: Google secret (зашифр.)oauth_google_client_secretпустоУправляется в настройках OAuth (только чтение)
OAuth: GitHub client_idoauth_github_client_idпустоУправляется в настройках OAuth (только чтение)
OAuth: GitHub secret (зашифр.)oauth_github_client_secretпустоУправляется в настройках OAuth (только чтение)
OAuth: OIDC client_idoauth_oidc_client_idпустоУправляется в настройках OAuth (только чтение)
OAuth: OIDC secret (зашифр.)oauth_oidc_client_secretпустоУправляется в настройках OAuth (только чтение)
OAuth: OIDC issuer URLoauth_oidc_issuerпустоУправляется в настройках OAuth (только чтение)
OAuth: OIDC имя кнопкиoauth_oidc_nameпустоУправляется в настройках OAuth (только чтение)

🔔 Уведомления ​

Куда и о чём писать в Telegram. Топики раскладывают события по темам форума, типы уведомлений включают и выключают отдельные события.

Основное ​

НастройкаКлючПо умолчаниюЧто делает
💬 ID чата уведомленийnotifications_chat_idпустоTelegram ID чата/группы для уведомлений (NOTIFICATIONS_CHAT_ID)
✨ Rich-оформление уведомленийnotifications_rich_enabledtrueОтправлять Telegram-уведомления rich-карточками (Bot API 10.1+): таблицы, сворачиваемые секции, цитаты, кнопки прямо в карточке, поля копируются касанием. При отказе Telegram бот сам откатится на обычный HTML

🔔 Типы Telegram-уведомлений ​

НастройкаКлючПо умолчаниюЧто делает
👤 Пользователиnotifications_users_enabledtrueОтправлять Telegram-уведомления о пользователях
🖥️ Нодыnotifications_nodes_enabledtrueОтправлять Telegram-уведомления о нодах
🔧 Сервисnotifications_service_enabledtrueОтправлять сервисные Telegram-уведомления
🔑 HWIDnotifications_hwid_enabledtrueОтправлять Telegram-уведомления о HWID-устройствах
💼 CRMnotifications_crm_enabledtrueОтправлять Telegram-уведомления CRM и биллинга инфраструктуры
❗ Ошибкиnotifications_errors_enabledtrueОтправлять Telegram-уведомления об ошибках
🛡️ Нарушенияnotifications_violations_enabledtrueОтправлять Telegram-уведомления о нарушениях
💰 Финансыnotifications_finance_enabledtrueОтправлять финансовые Telegram-уведомления и напоминания

💬 Топики уведомлений ​

НастройкаКлючПо умолчаниюЧто делает
💬 Топик: Общий (fallback)notifications_topic_idпустоID топика по умолчанию, используется если специфический топик не задан (NOTIFICATIONS_TOPIC_ID)
👤 Топик: Пользователиnotifications_topic_usersпустоID топика для уведомлений о пользователях (NOTIFICATIONS_TOPIC_USERS)
🖥️ Топик: Нодыnotifications_topic_nodesпустоID топика для уведомлений о нодах (NOTIFICATIONS_TOPIC_NODES)
🔧 Топик: Сервисnotifications_topic_serviceпустоID топика для сервисных уведомлений (NOTIFICATIONS_TOPIC_SERVICE)
🔑 Топик: HWIDnotifications_topic_hwidпустоID топика для HWID уведомлений (NOTIFICATIONS_TOPIC_HWID)
💼 Топик: CRMnotifications_topic_crmпустоID топика для CRM и биллинга инфраструктуры (NOTIFICATIONS_TOPIC_CRM)
🛡️ Топик: Нарушенияnotifications_topic_violationsпустоID топика для уведомлений о нарушениях (NOTIFICATIONS_TOPIC_VIOLATIONS)
❗ Топик: Ошибкиnotifications_topic_errorsпустоID топика для уведомлений об ошибках (NOTIFICATIONS_TOPIC_ERRORS)
💰 Топик: Финансыnotifications_topic_financeпустоID топика для финансовых уведомлений и напоминаний (NOTIFICATIONS_TOPIC_FINANCE)
💾 Топик: Бэкапыnotifications_topic_backupsпустоID топика для файлов резервных копий; пусто — уходят в сервисный топик (NOTIFICATIONS_TOPIC_BACKUPS)

🛡️ Обнаружение нарушений ​

Самый большой раздел: анализаторы, пороги срабатывания, автоматические действия и сроки хранения. Что означают анализаторы и как разбирать инциденты — в разделе Анти-абуз.

Основное ​

НастройкаКлючПо умолчаниюЧто делает
🛡️ Детектирование нарушенийviolations_enabledtrueГлобальное включение/выключение детектирования нарушений
📐 Минимальный скор уведомленияviolations_min_score50.0Минимальный скор нарушения для отправки уведомления (по умолчанию 50)
⏱️ Временной анализаторviolations_analyzer_temporaltrueАнализ одновременных подключений и паттернов переключения
🌍 Гео-анализаторviolations_analyzer_geotrueОпределение невозможных перемещений и подозрительной географии
🏢 ASN-анализаторviolations_analyzer_asntrueКлассификация провайдеров (VPN, датацентр, мобильный оператор)
👤 Профильный анализаторviolations_analyzer_profiletrueАнализ отклонений от обычного поведения пользователя
📱 Анализатор устройствviolations_analyzer_devicetrueОпределение уникальных fingerprint устройств (ОС, клиент)
🔑 HWID кросс-аккаунт анализаторviolations_analyzer_hwidtrueОбнаружение одного HWID на нескольких аккаунтах (триальный абьюз)
🔤 User-Agent анализаторviolations_analyzer_user_agenttrueДетекция двойных туннелей (vless:// в UA), ботов (curl, Go-http-client) и неизвестных клиентов

📐 Пороги детекции ​

НастройкаКлючПо умолчаниюЧто делает
🌐 Общий предел одновременных IPviolations_max_simultaneous_ips0Общий для всех юзеров предел одновременных источников вместо их лимита устройств; к нему прибавляются буферы на смену сети и CGNAT. 0 = у каждого свой лимит устройств из панели
📏 Макс. расстояние между городами (км)violations_geo_max_city_distance_km50Расстояние между городами ниже которого не считается подозрительным
👥 Макс. аккаунтов на один HWIDviolations_hwid_max_accounts2Сколько разных аккаунтов могут делить один HWID БЕЗ срабатывания — нарушение фиксируется начиная со следующего аккаунта (значение 2 → сработает на третьем). Подписки одного человека считаются одним аккаунтом: группировка по telegram_id, а при регистрации без Telegram — по email
Макс. подписок одного аккаунта на HWIDviolations_hwid_max_per_account10Сколько панельных UUID (подписок) одного telegram_id допустимо на одном HWID. Защита от абуза мультитарифа. 0 = без ограничений
📱 Буфер CGNAT для мобильных (IP)violations_mobile_cgnat_buffer3Сколько дополнительных одновременных IP допускается для мобильных подключений сверх лимита устройств (CGNAT даёт 3-5 IP с одного устройства)
🎁 Макс. активных триалов на один HWIDviolations_hwid_max_active_trials1Сколько разных аккаунтов с ДЕЙСТВУЮЩЕЙ пробной подпиской могут делить одно устройство без срабатывания. Ловит накрутку триалов новыми аккаунтами и не задевает ни апгрейд «пробная истекла → куплена платная», ни двух платящих людей на общем устройстве. Триальность определяется настройками тегов и internal squad ниже. 0 = отключено
♻️ Макс. пробных подписок одного аккаунта на HWIDviolations_hwid_max_trial_subs1Сколько раз один человек может взять пробную подписку с одного устройства — считая истёкшие и отключённые. Закрывает обход, где триал берут второй раз новой подпиской и привязывают к ней свой же telegram_id: по остальным проверкам это один аккаунт с одним живым триалом. Не задевает ни апгрейд «пробная → платная», ни двух разных людей с общим планшетом. 0 = отключено
Кулдаун проверок (мин)violation_check_cooldown_minutes15Минимальный интервал между повторными проверками одного пользователя детектором (троттлинг нагрузки). НЕ путать с кулдауном уведомлений
Хранение нарушений (дни)violation_retention_days90Сколько дней хранить записи нарушений до автоочистки
Хранение подключений (дни)connections_retention_days30Сколько дней хранить историю подключений пользователей до автоочистки
Интервал HWID-скана (мин)violations_hwid_scan_interval_minutes30Как часто проверять оффлайн-юзеров с общими HWID на кросс-аккаунт (детектор по батчам ловит только онлайн-юзеров)
Хранение метрик нод (дни)metrics_retention_days30Сколько дней хранить снимки метрик нод до автоочистки. Раньше срок был зашит в коде, а сама очистка шла только при отчёте от ноды: на простое таблица росла без ограничения
Хранение торрент-событий (дни)torrent_retention_days90Сколько дней хранить зафиксированные торрент-события до автоочистки
📅 Макс. возраст SRH записей (дней)violation_ua_max_age_days0Игнорировать запросы подписки старше указанного количества дней. 0 = анализировать все записи
Детект торрентов через nDPIndpi_detection_enabledfalseXray опознаёт BitTorrent только по открытому рукопожатию, а шифрованный поток, DHT и uTP проходят мимо. nDPI видит и их. Требует демона nDPId на ноде: включение уходит агентам командой, .env править не нужно
🔗 Мин. скор при ссылке в UAviolation_ua_link_floor70Минимальный score нарушения при обнаружении подписочной ссылки (vless://) в User-Agent. 70 = warn, 80 = soft_block
🤖 Мин. скор при bot-UAviolation_ua_bot_floor55Минимальный score нарушения при curl/Go-http-client/python-requests в User-Agent
🗑️ Хранение SRH (дней)srh_retention_days90Удалять синхронизированные записи Subscription Request History старше указанного количества дней. 0 = хранить всё

🔤 Паттерны User-Agent ​

НастройкаКлючПо умолчаниюЧто делает
✅ Дополнительный whitelist UA (regex)violation_ua_whitelist_extra[]JSON массив regex для новых VPN-клиентов. Пример: ["^NewClash/", "^MyClient/"]
🚫 Дополнительный blacklist UA (regex)violation_ua_blacklist_extra[]JSON массив regex для подозрительных UA. Пример: ["^SuspiciousBot/"]

🚫 Жёсткая блокировка ​

НастройкаКлючПо умолчаниюЧто делает
🚫 Жёсткая блокировка: макс. IPviolations_hard_block_ips50Количество уникальных IP для автоматической жёсткой блокировки
🚫 Жёсткая блокировка: макс. одновременныхviolations_hard_block_simultaneous20Количество одновременных подключений для жёсткой блокировки
🚫 Жёсткая блокировка: макс. устройствviolations_hard_block_devices80Количество уникальных fingerprint устройств для жёсткой блокировки
🚫 Жёсткая блокировка: макс. совпадений HWIDviolations_hard_block_hwid_matches10Количество совпадающих HWID (одна модель) для жёсткой блокировки
🚫 Жёсткая блокировка: аккаунтов на одном HWIDviolations_hard_block_hwid_accounts5Сколько разных аккаунтов на одном устройстве (HWID) считается массовым триальным абьюзом и даёт жёсткую блокировку. Подписки одного telegram_id считаются одним аккаунтом. 0 = отключено
🚫 Жёсткая блокировка: источников сверх лимита устройствviolations_hard_block_simultaneous_excess0Жёсткая блокировка, когда одновременных источников больше лимита устройств юзера больше чем на это число: при 5 и лимите 1 — с 7 источников, при лимите 3 — с 9. Источники должны выйти и за порог с буферами на смену сети и CGNAT. Безлимитных (лимит 0) не касается. 0 = отключено

🆓 Определение триальных пользователей ​

НастройкаКлючПо умолчаниюЧто делает
🏷️ Теги триальных пользователейviolations_trial_tagstrialТеги через запятую, при наличии которых пользователь считается триальным (например: trial,test,free)
👥 Internal squad триальныхviolations_trial_squad_uuids[]Выберите internal squad, пользователи которых считаются триальными

🧲 Торрент-блокировщик ​

НастройкаКлючПо умолчаниюЧто делает
🧲 Обнаружение торрентовtorrent_detection_enabledtrueВключение/выключение обнаружения торрент-трафика через Xray routing
⚡ Авто-действие при торрентеtorrent_auto_actionnotifyДействие при обнаружении торрент-трафика: notify (только уведомление), block_user (блокировка)
🔕 Кулдаун торрент-уведомлений (мин)torrent_notification_cooldown_minutes30Минимальный интервал между уведомлениями о торрентах по одному пользователю
Порог событий для нарушенияtorrent_min_events5Сколько торрент-событий должно набраться у пользователя за полчаса, чтобы завести нарушение. Настоящий обмен даёт сотни событий за минуты — одиночные срабатывания это шум nDPI. 1 — заводить нарушение по первому же событию
Порог разных адресов (рой)torrent_min_peers3Со сколькими РАЗНЫМИ адресами должен идти обмен за полчаса. Торрент — это рой из десятков пиров; события по одному и тому же адресу набивает обычное долгое соединение, и на этом ловились антивирус и игровые лаунчеры. 1 — не проверять рой
Событий на адрес (глубина обмена)torrent_min_events_per_peer1.5Сколько событий в среднем должно приходиться на один адрес за полчаса. Торрент-клиент подолгу качает с одних и тех же пиров, и событий на адрес у него в разы больше одного; игровой лаунчер и опрос DHT касаются каждого адреса по разу. 1 — не проверять
Кого не считать торрентом (по владельцу адреса)torrent_asn_whitelistkaspersky,gaijin,blizzard,valve,wargaming,microsoft,epic games,riot games,steamЧерез запятую: части названий организаций, чьи адреса не считаем нарушением. Игровые лаунчеры раздают обновления настоящим BitTorrent (War Thunder и прочие), и вердикт по ним верный — отличается только адресат. Пусто — берётся список по умолчанию

general ​

НастройкаКлючПо умолчаниюЧто делает
Окно истории нарушений (дней)violation_recap_days30За какой период считать нарушения пользователя для бейджа рецидива и истории в карточке. Аннулированные показываются отдельным числом — видно и сколько раз человек попадался, и сколько из этого оказалось ошибкой детектора

📈 Расход трафика ​

НастройкаКлючПо умолчаниюЧто делает
📈 Монитор расхода трафикаtraffic_rate_enabledfalseОтслеживание аномально высокого потребления трафика за период
📊 Порог (GB за период)traffic_rate_threshold_gb10.0Уведомление если пользователь потребил больше указанного объёма за период
⏱️ Окно проверки (мин)traffic_rate_window_minutes60Период времени для подсчёта трафика (по умолчанию 60 = 1 час)
🔁 Интервал проверки (мин)traffic_rate_check_interval_minutes5Как часто проверять потребление трафика
🔕 Кулдаун уведомлений (мин)traffic_rate_cooldown_minutes60Минимальный интервал между повторными уведомлениями по одному пользователю
⚡ Авто-действие при превышенииtraffic_rate_auto_actionnotifyДействие при чрезмерном потреблении трафика: только уведомление или автоблокировка
🚫 Порог автоблокировки (GB)traffic_rate_auto_block_gb50.0Автоблокировка если трафик за период превышает это значение. Работает только при авто-действии = block_user

throttle ​

НастройкаКлючПо умолчаниюЧто делает
Ограничение скоростиthrottle_enabledtrueРазрешить «мягкую блокировку» — резать скорость нарушителю вместо полного отключения. Требует агента 1.7.0+ на нодах; с агентом 1.9.0 режет шейпер ноды, в обе стороны
Скорость по умолчанию (кбит/с)throttle_default_kbit1024На сколько резать, если скорость не указана явно. 0 или пусто — без лимита: кнопка в боте и автодействия ничего не урезают. 1024 — сайты и мессенджеры работают, видео и торренты нет: человек замечает, что интернет странный, и идёт разбираться, а не молча теряет доступ
Срок ограничения по умолчанию (ч)throttle_default_hours0Через сколько часов ограничение снимается само, если срок не указан явно. 0 — держать бессрочно, до ручного снятия
Резервный сквад для нарушителейthrottle_squad_uuidпустоUUID внутреннего сквада, куда уводить наказанного вдобавок к урезанию скорости. Прежние сквады запоминаются и возвращаются при снятии. Пусто — сквады не трогать, только резать скорость
Урезать скорость автоматическиviolation_auto_soft_throttlefalseРезать скорость сразу, когда детектор рекомендует разобраться вручную (скор 65-80). Мера обратимая и не выкидывает человека из сети, но по умолчанию выключена: решение о наказании остаётся за администратором

🔍 Конвейер проверки нарушений ​

НастройкаКлючПо умолчаниюЧто делает
🔕 Кулдаун уведомлений (мин)violation_notification_cooldown_minutes30Минимальный интервал между повторными уведомлениями по одному пользователю. Защита от спама.
Окно дедупликации записей (часы)violation_dedup_window_hours24Пока у пользователя есть неразрешённое нарушение свежее этого окна, повторные детекты не создают новую запись (кроме случаев с более высоким скором). 0 — дедупликация отключена.
Автоблокировка при hard_blockviolation_auto_hard_blocktrueАвтоматически отключать пользователя через Panel API, когда детектор рекомендует жёсткую блокировку. Если выключено — только уведомление и запись нарушения.

🔒 Безопасность ​

Защита самой панели и детект атак на ноды: методы входа, ограничение перебора, чёрный список пользователей.

🔑 Методы авторизации ​

НастройкаКлючПо умолчаниюЧто делает
✈️ Авторизация через Telegramauth_telegram_enabledtrueРазрешить вход через Telegram Login Widget
🔒 Авторизация по паролюauth_password_enabledtrueРазрешить вход по логину и паролю
🔐 Обязательная 2FA (TOTP)auth_totp_requiredfalseТребовать настройку TOTP для всех аккаунтов
🔑 Passkey: домен (RP ID)webauthn_rp_idпустоДомен, к которому привязываются passkeys, например panel.example.com. Пусто — домен, по которому открыта панель. После смены passkeys, добавленные под прежним доменом, перестанут работать
🔑 Passkey: адрес панели (origin)webauthn_originпустоАдрес со схемой, например https://panel.example.com. Пусто — собирается из заголовков запроса (Host и X-Forwarded-Proto). Задайте, если прокси перед панелью не передаёт X-Forwarded-Proto
✈️ Автовход в Telegram Mini Appauth_telegram_webapp_enabledtrueВходить автоматически, когда панель открыта внутри Telegram (мини-приложение). Требует включённой авторизации через Telegram

🛡️ Защита от перебора ​

НастройкаКлючПо умолчаниюЧто делает
🚫 Макс. попыток до блокировкиauth_max_attempts5Количество неудачных попыток входа до блокировки IP-адреса
⏳ Длительность блокировки (мин)auth_lockout_minutes15На сколько минут блокируется IP после превышения лимита попыток
📋 Fail2ban логированиеauth_fail2ban_loggingtrueЗаписывать неудачные попытки входа в auth_failures.log
🔔 Уведомление при блокировке IPauth_notify_on_blocktrueОтправлять уведомление в Telegram при блокировке IP-адреса
⚠️ Уведомление при неудачном входеauth_notify_on_failuretrueОтправлять уведомление в Telegram при каждой неудачной попытке входа

🚫 Чёрный список пользователей ​

НастройкаКлючПо умолчаниюЧто делает
🚫 Чёрный список пользователейuser_blacklist_enabledfalseВключить проверку Telegram ID пользователей по чёрному списку. При совпадении — автоматическая блокировка.
🔗 URL списков (по одному на строку)user_blacklist_urlsпустоСсылки на внешние blacklist-файлы. Формат: Telegram ID в начале каждой строки.
🔄 Интервал синхронизации (часы)user_blacklist_sync_hours6Как часто обновлять чёрные списки с внешних URL.
⚡ Автоблокировкаuser_blacklist_auto_blockfalseАвтоматически блокировать пользователей из чёрного списка через Panel API. Если выключено — только уведомление.
🛡️ Сторож чёрного списка HWIDhwid_blacklist_guard_enabledtrueПериодически проверять, не ожила ли подписка у тех, кого видели на устройстве из чёрного списка, и гасить её снова. Блокировка по списку разовая, а поднять подписку может что угодно уже после неё — например привязка telegram_id к заведённой через email. Записи с действием «оповещение» сторож не трогает, только сообщает
🛡️ Интервал сторожа HWID (мин)hwid_blacklist_guard_interval_minutes5Как часто сторож обходит чёрный список HWID. Меньше интервал — короче окно, в которое воскресшая подписка успевает поработать
🌐 Сторож адресов: повторные пробныеviolations_ip_trial_guard_enabledtrueЗамечать адреса, с которых пробную подписку брали несколько раз разными аккаунтами. HWID называет сам клиент и подделывается заголовком, а адрес выдаёт провайдер — сменить его труднее. Служебные и операторские диапазоны не учитываются
🌐 Пробных подписок с одного адресаviolations_ip_trial_accounts2Сколько разных пробных подписок с одного адреса допустимо без сигнала. Считаются только пробные: за адресом домашнего провайдера живёт целая квартира
📱 То же для мобильных адресовviolations_ip_trial_accounts_mobile4Отдельный порог для адресов мобильных операторов. Там CGNAT: за одним адресом сидит район, и несколько разных людей с пробными — обычное дело
🌐 Окно поиска по адресам (дней)violations_ip_trial_window_days30За какой период считать подключения. Слишком широкое окно собирает динамические адреса, которые успели смениться у нескольких абонентов
🌐 Не повторять сигнал по адресу (часов)violations_ip_trial_repeat_hours24Сколько молчать про адрес после уведомления о нём
🌐 Интервал сторожа адресов (мин)violations_ip_trial_interval_minutes60Как часто пересматривать адреса. Проверка тяжелее HWID-сторожа: она группирует историю подключений за всё окно

node_attacks ​

НастройкаКлючПо умолчаниюЧто делает
Детект атак на нодыattack_detect_enabledtrueСледить за сетевыми метриками нод и предупреждать, когда нода под атакой. Работает только с агентом 1.3.0+.
Порог по пакетам (× от обычного)attack_pps_ratio4Во сколько раз входящий поток пакетов должен превысить обычный для этой ноды. Ниже 3 будут ложные срабатывания на вечерних пиках.
Порог по трафику (× от обычного)attack_bps_ratio4То же самое, но для объёма входящего трафика — ловит атаки крупными пакетами.
Минимум пакетов/с для тревогиattack_min_pps5000Ниже этого значения всплеск игнорируется: на пустой ночной ноде рост «в десять раз» получается из шума.
Минимум байт/с для тревогиattack_min_bps12500000То же для объёма. По умолчанию 12 500 000 — это 100 Мбит/с.
Замеров для базлайнаattack_min_samples20Сколько замеров нужно накопить, прежде чем верить «обычному» уровню ноды. Пока меньше — детектор молчит.
Мелкий пакет, байтattack_small_packet_bytes300Средний размер пакета ниже этого считается признаком флуда: полезный трафик состоит из пакетов покрупнее.

📧 Почтовый сервер ​

Встроенный почтовый сервер: TLS, приём входящих, спам-оценка, сроки хранения. Как поднять — в разделе Почтовый сервер.

НастройкаКлючПо умолчаниюЧто делает
📧 Почтовый сервер включёнmailserver_enabledfalseВключить встроенный почтовый сервер (отправка/приём писем) (MAIL_SERVER_ENABLED)
🖥️ Хост SMTP-сервераmailserver_hostname0.0.0.0IP-адрес для входящего SMTP-сервера (0.0.0.0 = все интерфейсы) (MAIL_SERVER_HOSTNAME)
📥 Порт входящего SMTPmailserver_inbound_port2525Порт для приёма входящих писем (по умолчанию 2525, в продакшене 25) (MAIL_INBOUND_PORT)
🚦 Лимит отправки в часmailserver_max_send_per_hour100Глобальный лимит писем с одного домена в час. Применяется к доменам без собственного лимита (у домена стоит 0). 0 = без лимита
⏱️ Интервал опроса очередиmailserver_queue_poll_interval10Как часто проверять очередь писем на отправку (секунды)
🔁 Макс. попыток отправкиmailserver_max_retries5Максимальное количество попыток отправки одного письма
📤 SMTP Submission включёнmailserver_submission_enabledfalseВключить SMTP Submission сервер (порт 587) для отправки писем через логин/пароль (MAIL_SUBMISSION_ENABLED)
🔌 Порт SMTP Submissionmailserver_submission_port587Порт для SMTP Submission сервера (стандарт — 587) (MAIL_SUBMISSION_PORT)
Путь к TLS-сертификатуmailserver_tls_cert_pathпустоСертификат для STARTTLS на почтовых портах. Пусто — будет выписан самоподписанный (для приёма почты этого достаточно, но почтовые клиенты на порту 587 будут ругаться) (MAIL_TLS_CERT_PATH)
Путь к TLS-ключуmailserver_tls_key_pathпустоПриватный ключ к сертификату выше (MAIL_TLS_KEY_PATH)
Имя почтового сервераmailserver_tls_hostnameпустоЧем сервер представляется в SMTP и на что выписан сертификат. Должно совпадать с PTR-записью IP. Пусто — mail.<первый домен>
Требовать TLS на порту 587mailserver_submission_require_tlstrueНе принимать логин и пароль по незашифрованному соединению. Клиенты из внутренних сетей (10.x, 192.168.x, 100.64.x — Netbird и подобные) исключение: там трафик и так в туннеле. Работает только при наличии сертификата
Порог спамаmailserver_spam_threshold5Оценка, начиная с которой письмо помечается подозрительным. 5 баллов = домен объявил политику DMARC, а письмо её не прошло
Отклонять подозрительные письмаmailserver_reject_spamfalseОтказывать на приёме письмам, набравшим порог. Выключено — письмо принимается, но помечается в списке
Хранить входящие, днейmailserver_inbox_retention_days0Через сколько дней удалять полученные письма. 0 = хранить вечно
Хранить историю отправки, днейmailserver_queue_retention_days90Через сколько дней удалять отправленные и отклонённые письма из очереди. Ожидающие отправки не трогаются. 0 = хранить вечно
Уведомлять о новых письмахmailserver_notify_new_mailfalseПрисылать уведомление при получении письма (кроме служебных: отказов доставки, отписок и DMARC-отчётов)
📮 Доставка исходящихmailserver_delivery_modedirectdirect — напрямую на MX получателя (нужен исходящий порт 25); brevo — через HTTP API Brevo, исходящие SMTP-порты не нужны (MAIL_DELIVERY_MODE)
🔑 Brevo: API-ключmailserver_brevo_api_keyпустоКлюч v3 из Brevo → SMTP & API → API Keys. Домен отправителя должен быть подтверждён в Brevo (BREVO_API_KEY)

💾 Резервные копии ​

Расписание, сроки хранения и «мёртвая рука» — алерт о том, что бэкапов давно не было. Подробнее в разделе Бэкапы.

НастройкаКлючПо умолчаниюЧто делает
Авто-бэкап по расписаниюbackup_auto_enabledfalseАвтоматически создавать бэкап БД по расписанию
Время бэкапаbackup_auto_time03:00Время ежедневного авто-бэкапа (ЧЧ:ММ по часовому поясу панели)
Отправлять в Telegrambackup_auto_telegramfalseОтправлять созданный бэкап в Telegram (chat_id из настроек уведомлений)
Хранить бэкапов (шт)backup_auto_keep_count10Сколько последних авто-бэкапов хранить
Хранить бэкапов (дней)backup_auto_keep_days30Максимальный возраст авто-бэкапов в днях
Интервал бэкапа (часов)backup_auto_interval_hours00 — раз в день в указанное время; N>0 — начиная с этого времени каждые N часов
Бэкапить конфигbackup_auto_configfalseДополнительно к БД бэкапить настройки (config-бэкап)
Алерт: нет бэкапа N часовbackup_deadman_hours0Прислать алерт, если успешного бэкапа не было дольше N часов (0 = выкл)
S3: адрес хранилищаbackup_s3_endpoint—Например https://s3.timeweb.cloud или https://s3.storage.selcloud.ru
S3: бакетbackup_s3_bucket—Имя бакета, куда складывать файлы бэкапов
S3: регионbackup_s3_regionus-east-1Регион для подписи запроса: us-east-1, ru-1, ru-central1 и т.п.
S3: папкаbackup_s3_prefix—Префикс ключа внутри бакета, пусто — класть в корень
S3: path-style адресаbackup_s3_path_styletrueАдрес вида endpoint/bucket/key — нужен MinIO и большинству российских провайдеров
S3: выгружать автоматическиbackup_s3_auto_uploadfalseОтправлять в хранилище каждый бэкап, созданный по расписанию
S3: хранить файловbackup_s3_keep_count0Сколько последних файлов оставлять в бакете при автовыгрузке (0 = не чистить)
S3: ключи доступаbackup_s3_creds—Access Key и Secret Key, зашифрованы; правятся только на вкладке «Хранилище»
Поддержка: кэш вложенийsupport_media_cache_enabledtrueХранить скачанные вложения на диске, чтобы не ходить за ними к боту каждый раз
Поддержка: срок хранения вложенийsupport_media_cache_days14Через сколько дней без обращений файл удаляется; старый тикет скачает его заново
Поддержка: потолок кэша вложений (МБ)support_media_cache_max_mb2048При превышении удаляются самые давно не открывавшиеся файлы (0 — без лимита)
Поддержка: контроль срока ответаsupport_sla_enabledtrueОчередь «просрочены», подсветка времени ожидания и алерты о просрочке
Поддержка: срок первого ответаsupport_sla_minutes30Через сколько минут ожидания обращение считается просроченным
Поддержка: алертыsupport_alerts_enabledtrueУведомлять о новых обращениях и о просрочке первого ответа
Поддержка: алерт о новом обращенииsupport_alert_new_tickettrueСлать уведомление, как только клиент создал обращение

📊 Отчёты ​

Периодические сводки: что присылать, когда и кому.

НастройкаКлючПо умолчаниюЧто делает
📊 Отчёты включеныreports_enabledtrueГлобальное включение/выключение автоматических отчётов
📅 Ежедневные отчётыreports_daily_enabledtrueВключить ежедневные отчёты по нарушениям
🕐 Время дневного отчётаreports_daily_time09:00Время отправки ежедневного отчёта (ЧЧ:ММ по часовому поясу панели)
📆 Еженедельные отчётыreports_weekly_enabledtrueВключить еженедельные отчёты по нарушениям
📅 День недельного отчётаreports_weekly_day0День недели для еженедельного отчёта (0=Пн, 6=Вс)
🕐 Время недельного отчётаreports_weekly_time10:00Время отправки еженедельного отчёта (ЧЧ:ММ по часовому поясу панели)
🗓️ Ежемесячные отчётыreports_monthly_enabledtrueВключить ежемесячные отчёты по нарушениям
📅 День месячного отчётаreports_monthly_day1День месяца для ежемесячного отчёта (1-28)
🕐 Время месячного отчётаreports_monthly_time10:00Время отправки ежемесячного отчёта (ЧЧ:ММ по часовому поясу панели)
📐 Минимальный скорreports_min_score30.0Минимальный скор нарушения для включения в отчёт
🏆 Топ нарушителейreports_top_violators_count10Количество пользователей в топе нарушителей
📭 Отправлять пустыеreports_send_emptyfalseОтправлять отчёт если нет нарушений за период
💬 Топик отчётовreports_topic_idпустоID топика для отправки отчётов (0 = основной чат) (NOTIFICATIONS_TOPIC_REPORTS)

💰 Финансы ​

Учёт расходов на инфраструктуру и доходов: валюта отчётов, курсы, напоминания о списаниях, синхронизация с API хостеров.

НастройкаКлючПо умолчаниюЧто делает
Базовая валюта отчётовfinance_base_currencyRUBВалюта, в которую конвертируются агрегаты (RUB, USD, EUR...)
Автообновление курсов валютfinance_rates_auto_updatetrueРаз в сутки обновлять курсы (ЦБ РФ, fallback open.er-api.com). Курсы с ручной правкой не трогаются
Напоминания о списанияхfinance_reminders_enabledtrueСлать уведомления о предстоящих и просроченных платежах в Telegram/панель
За сколько дней напоминатьfinance_reminder_days7,3,1Список дней до списания через запятую (например: 7,3,1). Просрочка напоминается всегда
Час отправки напоминанийfinance_reminder_hour10С какого часа (0–23) слать напоминания за день. Час и сам «день» считаются в часовом поясе панели, а не по UTC
Автосинк API хостеровfinance_autosync_enabledtrueПериодически снимать баланс и услуги с подключённых API хостеров
Интервал автосинка (часы)finance_autosync_interval_hours6Как часто опрашивать API хостеров (баланс, услуги, даты списаний)
Подтягивать даты списанийfinance_autosync_update_due_datestrueОбновлять next_due_at записей по данным хостера (матч по имени услуги в рамках провайдера)
Записывать пополнения Bedolagafinance_bedolaga_deposits_enabledtrueЕжедневно заносить пополнения баланса из Bedolaga в доходы (P&L-график, доход за месяц). ⚠️ Не совмещать с ручным импортом выручки подписок — двойной учёт

⚡ Производительность ​

Пулы соединений, кэш и интервалы фоновых задач. Трогать стоит, когда упёрлись в потолок, а не заранее.

🗄️ База данных ​

НастройкаКлючПо умолчаниюЧто делает
🗄️ DB Pool: минимум соединенийdb_pool_min_size5Минимальное количество соединений в пуле PostgreSQL. Требуется перезапуск. (DB_POOL_MIN_SIZE)
🗄️ DB Pool: максимум соединенийdb_pool_max_size50Максимальное количество соединений в пуле PostgreSQL. Увеличьте при высокой нагрузке. Требуется перезапуск. (DB_POOL_MAX_SIZE)
⏱️ DB: таймаут запросов (сек)db_statement_timeout60Максимальное время выполнения SQL-запроса в секундах. 0 = без ограничений. Требуется перезапуск.
💤 DB: время жизни простаивающего соединения (сек)db_idle_connection_lifetime300Через сколько секунд закрывать неиспользуемое соединение в пуле. Требуется перезапуск.

⏱️ Интервалы ​

НастройкаКлючПо умолчаниюЧто делает
🔔 Интервал проверки алертов (сек)alert_check_interval60Как часто проверять правила алертов. Меньше = быстрее реакция, но выше нагрузка на БД.
🔄 Автообновление конфига (сек)config_auto_reload_interval30Как часто перезагружать конфигурацию из БД. Влияет на скорость применения настроек.

🚦 Лимиты запросов ​

НастройкаКлючПо умолчаниюЧто делает
🚦 API: лимит запросов/мин (общий)api_rate_limit_per_minute120Максимальное количество API-запросов в минуту на один IP. 0 = без ограничений.
📡 Collector: лимит запросовcollector_rate_limit1/secondRate limit для эндпоинта сбора метрик от нод-агентов (формат: '1/second').

💾 Кэш ​

НастройкаКлючПо умолчаниюЧто делает
💾 Кэш: максимум записейcache_max_entries5000Максимальное количество записей в in-memory кэше. При превышении используется LRU-вытеснение.
⏱️ Кэш: TTL по умолчанию (сек)cache_default_ttl300Время жизни записей в кэше по умолчанию. Меньше = актуальнее данные, но больше запросов к БД.

🔍 Конвейер проверки нарушений ​

НастройкаКлючПо умолчаниюЧто делает
⏱️ Очередь нарушений: интервал обработки (сек)violation_drain_interval3.0Как часто worker забирает порцию пользователей из очереди. Меньше = быстрее реакция, но выше нагрузка.
📦 Очередь нарушений: размер порцииviolation_chunk_size200Сколько пользователей обрабатывать за один цикл. Больше = быстрее разгребается очередь, но пиковая нагрузка выше.
🔀 Макс. фоновых задачviolation_max_background_tasks20Максимальное количество одновременных фоновых задач (торренты и пр.). При превышении новые задачи отбрасываются.

🔄 Синхронизация ​

Синхронизация с панелью Remnawave.

НастройкаКлючПо умолчаниюЧто делает
🔄 Интервал синхронизацииsync_interval_seconds300Интервал синхронизации данных с API (секунды, требует перезапуск) (SYNC_INTERVAL_SECONDS)

Настройки агента ​

Переменные агента задаются на самой ноде и в этот список не попадают — см. Node Agent.

AGPL-3.0 с исключением для плагинов