Перейти к основному содержимому

Переменные окружения

Файл .env читается контейнером панели. Обязательные переменные отмечены значком обяз.. Значения по умолчанию — те, что подставляет код.

Приложение​

ПеременнаяПо умолчаниюОписание
APP_PORT3000порт HTTP API и веб-интерфейса
METRICS_PORT3001порт Prometheus-метрик
API_INSTANCES1число воркеров API. max — по числу ядер, -1 — ядра минус одно. Не ставьте больше числа физических ядер
IS_HTTP_LOGGING_ENABLEDfalseлогировать HTTP-запросы. Тела запросов не пишутся никогда
ENABLE_DEBUG_LOGSfalseподробные логи приложения
REMNAWAVE_BRANCHdevветка, о которой приложение сообщает в служебных эндпоинтах

База данных и кэш​

ПеременнаяПо умолчаниюОписание
DATABASE_URL обяз.—строка подключения, например postgresql://xpanel:pass@xpanel-db:5432/xpanel?schema=public
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB—используются только контейнером PostgreSQL, само приложение их не читает
REDIS_SOCKET—путь к unix-сокету Valkey/Redis (альтернатива хосту и порту)
REDIS_HOST / REDIS_PORT— / 6379адрес Valkey/Redis
REDIS_USERNAME / REDIS_PASSWORD—если включена аутентификация
REDIS_DB0номер базы

Секреты и домены​

ПеременнаяПо умолчаниюОписание
APP_SECRET обяз.—64 символа. Хеши паролей, JWT, шифрование TOTP. Менять после запуска нельзя
JWT_AUTH_LIFETIME обяз.—время жизни access-токена в часах, допустимо от 12 до 168
PANEL_DOMAIN обяз.—публичный адрес панели, с https://
FRONT_END_DOMAIN*источник, которому разрешены CORS-запросы
SUB_PUBLIC_DOMAIN обяз.—домен подписки без https:// и без слэша на конце; попадает в profile-web-page-url

Метрики​

ПеременнаяОписание
METRICS_USER обяз.логин basic auth для http://127.0.0.1:3001/metrics
METRICS_PASS обяз.пароль basic auth
Внимание

Без METRICS_USER и METRICS_PASS контейнер не стартует.

Telegram​

ПеременнаяПо умолчаниюОписание
IS_TELEGRAM_NOTIFICATIONS_ENABLEDfalseвключает уведомления в Telegram
TELEGRAM_BOT_TOKEN—токен бота
TELEGRAM_BOT_API_ROOThttps://api.telegram.orgадрес Bot API; меняйте, если используете локальный Bot API server
TELEGRAM_BOT_PROXY—прокси для запросов к Telegram, например socks5://proxy:1080
TELEGRAM_NOTIFY_USERS—чаты для событий пользователей
TELEGRAM_NOTIFY_NODES—чаты для событий нод
TELEGRAM_NOTIFY_CRM—чаты CRM-событий
TELEGRAM_NOTIFY_SERVICE—служебные уведомления
TELEGRAM_NOTIFY_TBLOCKER—события torrent-blocker

Формат чатов: chat_id или chat_id:thread_id для тем. Несколько значений — через запятую.

Вебхуки​

ПеременнаяПо умолчаниюОписание
WEBHOOK_ENABLEDfalseвключает отправку вебхуков
WEBHOOK_URL—адрес получателя; несколько адресов — через запятую. Допустимы только http:// и https://
WEBHOOK_SECRET_HEADER—секрет подписи payload, ровно 64 символа [a-zA-Z0-9]

Подробнее — в разделе Вебхуки.

Уведомления о порогах​

ПеременнаяПо умолчаниюОписание
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDfalseуведомлять о достижении порога трафика
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD[60, 80]пороги в процентах, по возрастанию, от 25 до 95, не больше 5 значений
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDfalseуведомлять о пользователях, которые так и не подключились
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS[6, 24, 48]часы после создания пользователя, от 1 до 168, не больше 3 значений
EXPIRATION_NOTIFICATIONS_ENABLEDfalseуведомлять об истечении подписки
EXPIRATION_NOTIFICATIONS[-72, -48, -24, 24]часы относительно expireAt: отрицательные — до истечения, положительные — после. От −168 до 168, ноль запрещён

Приватность и retention​

Автоочистка выключена по умолчанию. Один недельный job обслуживает все таблицы: он запускается, если включён хотя бы один из переключателей SERVICE_CLEAN_USAGE_HISTORY или SERVICE_CLEAN_OLD_LOGS.

ПеременнаяПо умолчаниюОписание
SERVICE_CLEAN_USAGE_HISTORYfalseвключает очистку истории трафика
USAGE_HISTORY_RETENTION_DAYS14сколько дней хранить nodes_user_usage_history
SERVICE_CLEAN_OLD_LOGSfalseвключает очистку персональных данных и статистики нод
NODES_USAGE_HISTORY_RETENTION_DAYS90часовая статистика нод
HWID_DEVICES_RETENTION_DAYS90устройства пользователей (hwid_user_devices); отсчёт от последнего появления устройства
SUBSCRIPTION_REQUEST_HISTORY_RETENTION_DAYS30история запросов подписки
AUDIT_LOG_RETENTION_DAYS30журнал действий администраторов
SERVICE_DISABLE_USER_USAGE_RECORDSfalseвообще не записывать историю трафика
SERVICE_DISABLE_SRH_RECORDSfalseвообще не записывать историю запросов подписки
USER_USAGE_IGNORE_BELOW_BYTES0не записывать всплески трафика меньше указанного числа байт
Минимизация данных

Если история трафика и запросы подписки вам не нужны, надёжнее не чистить их постфактум, а не собирать: SERVICE_DISABLE_USER_USAGE_RECORDS=true и SERVICE_DISABLE_SRH_RECORDS=true.

Короткие идентификаторы подписки​

ПеременнаяПо умолчаниюОписание
SHORT_UUID_METHODnanoidnanoid — случайная строка, uuid — UUID v4, custom — свой шаблон
SHORT_UUID_LENGTH16длина для метода nanoid, от 16 до 64
SHORT_UUID_CUSTOM_PATTERN—шаблон для метода custom. Токены: {nanoid:N}, {alpha:N}, {digits:N}, {hex:N}, {uuid}

Пример: SHORT_UUID_CUSTOM_PATTERN={hex:16}-{hex:16}-{digits:10}. Шаблон обязан давать от 16 до 64 символов и не меньше ~64 бит случайности.

Экспорт в Redis Streams​

ПеременнаяПо умолчаниюОписание
EXPORT_TO_STREAM_ENABLEDfalseпубликовать события панели в Redis Streams
EXPORT_TO_STREAM_MAXLEN3000приблизительный лимит сообщений в потоке (MAXLEN ~)

Потоки: ioraw:export:user_usage (дельты трафика), ioraw:export:subscription_requests (запросы подписки), ioraw:export:node_connections (снимки подключений, retention 1 час). Удобно для выгрузки в ClickHouse или Vector.