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

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

warning

Для изменения переменных окружения необходимо пересоздать контейнеры Remnawave.
Простой перезапуск контейнеров не заменяет окружение внутри контейнера!

Для пересоздания контейнера с помощью docker compose выполните docker compose down && docker compose up -d.

Изменение переменных окружения

Вы можете изменить переменные окружения, отредактировав файл .env. Скорее всего, он находится в /opt/remnawave.

Редактировать файл .env
cd /opt/remnawave && nano .env

Порты

ПеременнаяОписаниеПо умолчанию
APP_PORTПорт, на котором работает панель Remnawave3000
METRICS_PORTПорт для конечных точек Metrics3001
Пример
Файл .env
APP_PORT=3000
METRICS_PORT=3001

Масштабирование API

Количество запускаемых экземпляров API.

Возможные значения:

  • max (запуск экземпляров на всех ядрах)
  • <number> (запуск экземпляров на определённом количестве ядер)
  • -1 (запуск экземпляров на всех ядрах - 1)

Оставьте значение по умолчанию, чтобы запустить только 1 экземпляр.

Большинство пользователей не будут нуждаться в изменении этого значения, но оно может помочь достичь лучшей производительности при 40 000+ пользователях.

warning

Не устанавливайте это значение больше числа ядер CPU вашей машины.

ПеременнаяОписаниеПо умолчанию
API_INSTANCESКоличество запускаемых экземпляров API1
Пример
Файл .env
API_INSTANCES=1

Redis

ПеременнаяОписаниеПо умолчаниюОбязательно
REDIS_HOSTХост Redis-сервераremnawave-redisДа
REDIS_PORTПорт Redis-сервера6379Да
REDIS_DBБаза данных Redis-сервера0Нет
REDIS_PASSWORDПароль Redis-сервераНет
REDIS_SOCKETСокет Redis-сервераНет
Пример
Файл .env
REDIS_HOST=remnawave-redis
REDIS_PORT=6379

База данных

Приведённые ниже переменные используются не Remnawave, а контейнером базы данных.

ПеременнаяОписаниеПо умолчаниюОбязательно
POSTGRES_USERИмя пользователя Postgres-сервераpostgresНет
POSTGRES_PASSWORDПароль Postgres-сервераpostgresНет
POSTGRES_DBБаза данных Postgres-сервераpostgresНет

Remnawave использует URL PostgreSQL для подключения к базе данных.

postgresql://{user}:{password}@{host}:{port}/{database}
Пример DATABASE_URL
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Пример
Файл .env
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres

DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"

Секретные ключи

Рекомендуется использовать генератор случайных строк для создания секретов длиной не менее 64 символов.

осторожно

Не используйте учётные данные по умолчанию в боевой среде. Обязательно генерируйте надёжные секреты!

Генерация секретов
openssl rand -hex 64
ПеременнаяОписаниеПо умолчаниюОбязательно
JWT_AUTH_SECRETСекретный ключ для JWT аутентификацииchange_meДа
JWT_API_TOKENS_SECRETСекретный ключ для JWT токенов APIchange_meДа
Пример
Файл .env
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key

Уведомления Telegram

Каждая переменная уведомлений использует унифицированный формат: chat_id:thread_id, где thread_id необязателен.

ПеременнаяОписаниеПо умолчаниюВозможные значения
IS_TELEGRAM_NOTIFICATIONS_ENABLEDОтключить/включить уведомления Telegramfalsetrue, false
TELEGRAM_BOT_TOKENТокен для Telegram-бота
TELEGRAM_BOT_API_ROOTПользовательский URL корня API Telegram-бота (необязательно)https://api.telegram.org
TELEGRAM_BOT_PROXYПрокси для Telegram-бота (необязательно)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERSУведомления о событиях пользователейchat_id или chat_id:thread_id
TELEGRAM_NOTIFY_NODESУведомления о событиях нодchat_id или chat_id:thread_id
TELEGRAM_NOTIFY_CRMУведомления о событиях CRMchat_id или chat_id:thread_id
TELEGRAM_NOTIFY_SERVICEУведомления о событиях сервисаchat_id или chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERУведомления о событиях Torrent Blockerchat_id или chat_id:thread_id
примечание

ID группового чата Telegram всегда начинается с -100.

Пример
Файл .env

# Отключить/включить уведомления Telegram
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false

# Токен Telegram-бота
TELEGRAM_BOT_TOKEN=change_me

# Необязательно: прокси для Telegram-бота
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port

# Уведомления (формат: chat_id или chat_id:thread_id)
TELEGRAM_NOTIFY_USERS=change_me
TELEGRAM_NOTIFY_NODES=change_me
TELEGRAM_NOTIFY_CRM=change_me
TELEGRAM_NOTIFY_SERVICE=change_me
TELEGRAM_NOTIFY_TBLOCKER=change_me

Домены

ПеременнаяОписаниеПо умолчаниюОбязательно
FRONT_END_DOMAINДомен панели Remnawave. Используется для установки заголовков CORS.*Да
ПеременнаяОписаниеПо умолчаниюОбязательно
SUB_PUBLIC_DOMAINДомен и путь публичного URL подпискиexample.com/api/subДа
ПеременнаяОписаниеПо умолчаниюОбязательно
PANEL_DOMAINДомен панели для генерации прямых ссылок (например, в уведомлениях Telegram с inline-кнопками)Нет

SUB_PUBLIC_DOMAIN используется для установки публичного URL подписки в ответах RestAPI/UI в дашборде.

подсказка

Если вы используете с панелью, просто установите yourpanel.com/api/sub

Пример
Файл .env
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

Документация

ПеременнаяОписаниеПо умолчаниюВозможные значения
IS_DOCS_ENABLEDОтключить/включить документациюfalsetrue, false

IS_DOCS_ENABLED используется для отключения/включения документации.

подсказка

Вы можете использовать страницу API Keys в панели администратора (когда IS_DOCS_ENABLED установлен в true) для быстрого перехода к документации.

ПеременнаяОписаниеПо умолчанию
SWAGGER_PATHПуть к интерфейсу Swagger/docs
SCALAR_PATHПуть к интерфейсу Scalar/scalar
Пример
Файл .env
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

Метрики Prometheus

подсказка

Вы можете сгенерировать случайный пароль для метрик с помощью следующей команды:

openssl rand -hex 64
ПеременнаяОписаниеПо умолчанию
METRICS_USERПользователь для метрикadmin
METRICS_PASSПароль для метрикchange_me
Пример
Файл .env
METRICS_USER=admin
METRICS_PASS=change_me

Пример конфигурации Prometheus:

prometheus.yml
global:
# scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
scrape_configs:
- job_name: 'remnawave'
scheme: http
metrics_path: /metrics
static_configs:
- targets: ['remnawave:3001']
scrape_interval: 30s
basic_auth:
username: admin
password: change_me

Вы можете использовать готовый дашборд Grafana для визуализации собранных метрик: Remnawave Panel Dashboard

Пример метрик Prometheus
# HELP remnawave_node_online_users Number of online users on a node
# TYPE remnawave_node_online_users gauge
remnawave_node_online_users{node_uuid="d86d8c63-944c-4398-9cf4-c3882a54a5d5",app="remnawave"} 0

Webhook

ПеременнаяОписаниеПо умолчаниюВозможные значения
WEBHOOK_ENABLEDВключить/отключить webhook-уведомленияfalsetrue, false
WEBHOOK_URLURL webhook, может быть http:// или https://
WEBHOOK_SECRET_HEADERКлюч для подписи, не менее 32 символов. Допускаются только a-z, 0-9, A-Z.
подсказка

Вы можете сгенерировать случайный пароль для секрета webhook с помощью следующей команды:

openssl rand -hex 64
Пример
Файл .env
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key

Уведомления об использовании трафика

ПеременнаяОписаниеПо умолчаниюВозможные значения
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDВключить/отключить уведомления об использовании трафикаfalsetrue, false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLDПорог для уведомлений об использовании трафика. Только в порядке возрастания (пример: [60, 80]), должен быть допустимым массивом целых чисел (min: 25, max: 95). Не более 5 значений.
Пример
Файл .env
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

Уведомления о неподключившихся пользователях

ПеременнаяОписаниеПо умолчаниюВозможные значения
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDВключить/отключить уведомления о неподключившихся пользователяхfalsetrue, false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURSКоличество часов, после которых отправляются уведомления для пользователей, не выполнивших подключение. Только в порядке возрастания (пример: [6, 12, 24]), должен быть допустимым массивом целых чисел (min: 1, max: 168). Не более 3 значений.
Пример
Файл .env
### Уведомление неподключившихся пользователей (webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# Только в порядке возрастания (пример: [6, 12, 24]), должен быть допустимым массивом целых чисел (min: 1, max: 168). Не более 3 значений.
# Каждое значение представляет ЧАСЫ, прошедшие после создания пользователя (user.createdAt)
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]

Прочее

ПеременнаяОписаниеПо умолчаниюВозможные значения
SHORT_UUID_LENGTHДлина генерируемого короткого UUID (подписки). Мин. длина 16, макс. длина 6416
IS_HTTP_LOGGING_ENABLEDВключить/отключить логирование HTTPfalsetrue, false
ENABLE_DEBUG_LOGSВключить/отключить отладочные логиfalsetrue, false
JWT_AUTH_LIFETIMEВремя жизни JWT аутентификации в часах. Возможные значения от 12 до 168.12
SERVICE_CLEAN_USAGE_HISTORYВключить/отключить очистку истории использованияfalsetrue, false
SERVICE_DISABLE_USER_USAGE_RECORDSОтключить запись данных использования пользователейfalsetrue, false
USER_USAGE_IGNORE_BELOW_BYTESИгнорировать использование пользователя ниже этого порога (в байтах, макс. 1048576)0
Пример
Файл .env
SHORT_UUID_LENGTH=16
IS_HTTP_LOGGING_ENABLED=true
ENABLE_DEBUG_LOGS=false
JWT_AUTH_LIFETIME=12
SERVICE_CLEAN_USAGE_HISTORY=false
SERVICE_DISABLE_USER_USAGE_RECORDS=false
USER_USAGE_IGNORE_BELOW_BYTES=0