Переменные окружения
Для изменения переменных окружения необходимо пересоздать контейнеры Remnawave.
Простой перезапуск контейнеров не заменяет окружение внутри контейнера!
Для пересоздания контейнера с помощью docker compose выполните docker compose down && docker compose up -d.
Изменение переменных окружения
Вы можете изменить переменные окружения, отредактировав файл .env. Скорее всего, он находится в /opt/remnawave.
cd /opt/remnawave && nano .env
Порты
| Переменная | Описание | По умолчанию |
|---|---|---|
APP_PORT | Порт, на котором работает панель Remnawave | 3000 |
METRICS_PORT | Порт для конечных точек Metrics | 3001 |
Пример
APP_PORT=3000
METRICS_PORT=3001
Масштабирование API
Количество запускаемых экземпляров API.
Возможные значения:
max(запуск экземпляров на всех ядрах)<number>(запуск экземпляров на определённом количестве ядер)-1(запуск экземпляров на всех ядрах - 1)
Оставьте значение по умолчанию, чтобы запустить только 1 экземпляр.
Большинство пользователей не будут нуждаться в изменении этого значения, но оно может помочь достичь лучшей производительности при 40 000+ пользователях.
Не устанавливайте это значение больше числа ядер CPU вашей машины.
| Переменная | Описание | По умолчанию |
|---|---|---|
API_INSTANCES | Количество запускаемых экземпляров API | 1 |
Пример
API_INSTANCES=1
Redis
| Переменная | Описание | По умолчанию | Обязательно |
|---|---|---|---|
REDIS_HOST | Хост Redis-сервера | remnawave-redis | Да |
REDIS_PORT | Порт Redis-сервера | 6379 | Да |
REDIS_DB | База данных Redis-сервера | 0 | Нет |
REDIS_PASSWORD | Пароль Redis-сервера | Нет | |
REDIS_SOCKET | Сокет Redis-сервера | Нет |
Пример
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="postgresql://postgres:postgres@remnawave-db:5432/postgres"
Пример
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 токенов API | change_me | Да |
Пример
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key
Уведомления Telegram
Каждая переменная уведомлений использует унифицированный формат: chat_id:thread_id, где thread_id необязателен.
| Переменная | Описание | По умолчанию | Возможные значения |
|---|---|---|---|
IS_TELEGRAM_NOTIFICATIONS_ENABLED | Отключить/включить уведомления Telegram | false | true, 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 | Уведомления о событиях CRM | chat_id или chat_id:thread_id | |
TELEGRAM_NOTIFY_SERVICE | Уведомления о событиях сервиса | chat_id или chat_id:thread_id | |
TELEGRAM_NOTIFY_TBLOCKER | Уведомления о событиях Torrent Blocker | chat_id или chat_id:thread_id |
ID группового чата Telegram всегда начинается с -100.
Пример
# Отключить/включить уведомления 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
Пример
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com
Документация
| Переменная | Описание | По умолчанию | Возможные значения |
|---|---|---|---|
IS_DOCS_ENABLED | Отключить/включить документацию | false | true, false |
IS_DOCS_ENABLED используется для отключения/включения документации.
Вы можете использовать страницу API Keys в панели администратора (когда IS_DOCS_ENABLED установлен в true) для быстрого перехода к документации.
| Переменная | Описание | По умолчанию |
|---|---|---|
SWAGGER_PATH | Путь к интерфейсу Swagger | /docs |
SCALAR_PATH | Путь к интерфейсу Scalar | /scalar |
Пример
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar
Метрики Prometheus
Вы можете сгенерировать случайный пароль для метрик с помощью следующей команды:
openssl rand -hex 64
| Переменная | Описание | По умолчанию |
|---|---|---|
METRICS_USER | Пользователь для метрик | admin |
METRICS_PASS | Пароль для метрик | change_me |
Пример
METRICS_USER=admin
METRICS_PASS=change_me
Пример конфигурации Prometheus:
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-уведомления | false | true, false |
WEBHOOK_URL | URL webhook, может быть http:// или https:// | ||
WEBHOOK_SECRET_HEADER | Ключ для подписи, не менее 32 символов. Допускаются только a-z, 0-9, A-Z. |
Вы можете сгенерировать случайный пароль для секрета webhook с помощью следующей команды:
openssl rand -hex 64
Пример
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key
Уведомления об использовании трафика
| Переменная | Описание | По умолчанию | Возможные значения |
|---|---|---|---|
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED | Включить/отключить уведомления об использовании трафика | false | true, false |
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD | Порог для уведомлений об использовании трафика. Только в порядке возрастания (пример: [60, 80]), должен быть допустимым массивом целых чисел (min: 25, max: 95). Не более 5 значений. |
Пример
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]
Уведомления о неподключившихся пользователях
| Переменная | Описание | По умолчанию | Возможные значения |
|---|---|---|---|
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED | Включить/отключить уведомления о неподключившихся пользователях | false | true, false |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS | Количество часов, после которых отправляются уведомления для пользователей, не выполнивших подключение. Только в порядке возрастания (пример: [6, 12, 24]), должен быть допустимым массивом целых чисел (min: 1, max: 168). Не более 3 значений. |
Пример
### Уведомление неподключившихся пользователей (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, макс. длина 64 | 16 | |
IS_HTTP_LOGGING_ENABLED | Включить/отключить логирование HTTP | false | true, false |
ENABLE_DEBUG_LOGS | Включить/отключить отладочные логи | false | true, false |
JWT_AUTH_LIFETIME | Время жизни JWT аутентификации в часах. Возможные значения от 12 до 168. | 12 | |
SERVICE_CLEAN_USAGE_HISTORY | Включить/отключить очистку истории использования | false | true, false |
SERVICE_DISABLE_USER_USAGE_RECORDS | Отключить запись данных использования пользователей | false | true, false |
USER_USAGE_IGNORE_BELOW_BYTES | Игнорировать использование пользователя ниже этого порога (в байтах, макс. 1048576) | 0 |
Пример
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