Remnawave Panel v1.4.0

How to update?

:red_exclamation_mark: Release contains breaking changes. Please read our updating guide below.

Read about updating here.


Что нового?

Переработка генерации подписок

В новой версии Remnawave частично была переработана генерация “подписок”, которые конечные пользователи добавляют в совместимые приложения по типу Happ, Streisand и так далее.

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

В админ-панели теперь доступно редактирование темплейтов в удобном редакторе с поддержкой форматирования JSON и YAML.

Небольшая ремарка: монтирование темплейтов через volumes больше не поддерживается.
После обновления не забудьте обновить свои темплейты в соотвествующем разделе в админ-панели.

Изменение в подходе к фоновым задачам

В версии 1.4.x мы изменили полностью изменили подход к выполнению фоновых задач.

Теперь за их выполнений отвечает целых два новых “модуля”, а все фоновые задачи проходят через очередь (с помощью BullMQ, в связи с чем добавилась новая зависимость в виде Redis).

при желании можно заглянуть “под капот” и посмотреть что происходит

логин и пароль METRIC_USER, METRICS_PASS


Теперь есть четкое разделение между экземплярами приложения:

  • REST API (can be scaled!)
    Этот экземпляр отвечает исключительно за взаимодействие по Rest API и выполнение быстрых операций по типу создания пользователя, и так далее. Все роуты, которые затрагивают любые долгие операции с пользователями или с “нодами” – отправляют их выполнение напрямую в очередь, а дальше их забирает один из процессоров.

  • Scheduler (only one!)
    Этот экземпляр отвечает за все задачи, которые должны выполняться строго по расписанию. Проверка пользователей раз в N-количество времени.

  • Processor (can be scaled!)
    В этом экземпляре собраны все “процессоры”, которые занимаются обработкой событий из всех очередей.

Поддержка xHTTP

Горячо ожидаемая новинка уже доступна для настройки в редакторе конфига в панели.

Подробнее о xHTTP можно прочитать вот здесь.

JSON-подписки

Одна из самых ожидаемых и горячо обсуждаемых функций так же доступна в новой версии.
В разделе Templates → Xray JSON доступен полноценный редактор темплейта.
JSON-подписка будет доступна по обычной подписке, достаточно дописать /json в самом конце.

Happ – routing, announce

В разделе Happ Routing Builder теперь есть полноценный редактор роутинга для приложения Happ.

После того, как соберете нужную конфигурацию, не забудьте добавить ее в разделе Subscription settings. Так же в этом разделе можно добавить кастомное announce-сообщение, которое пользователи увидит в приложении Happ.

Перенос настроек из .env в веб-интерфейс

Многим настройкам не место в .env файле, так как довольно часто хочется менять эти настройки на “лету” и перезапускать полностью всю панель из-за одной строчки не хочется.

Из .env были удалены следующие переменные:

SUB_SUPPORT_URL
SUB_PROFILE_TITLE
SUB_UPDATE_INTERVAL
SUB_WEBPAGE_URL
EXPIRED_USER_REMARKS
DISABLED_USER_REMARKS
LIMITED_USER_REMARKS
SUPERADMIN_PASSWORD
SUPERADMIN_USERNAME

Не пугайтесь, логин и пароль супер-админа теперь хранится в базе данных.

При первом открытии панели, вам будет доступна регистрация, которая займет не больше пары минут. Логин и пароль (в зашифрованном виде) будут хранится в базе данных. После того, как супер-админ зарегистрирован, регистрация будет закрыта.

Новые поля в “юзере” – TelegramID, Email

Теперь к пользователю можно привязать TelegramID, и Email.
Так же доступны новые “эндпоинты”, по которым можно получить пользователей с указанным email или TelegramID.

В таблице всех пользователей так же доступен полноценный поиск по этим и многим другим полям.

*Небольшая ремарка: TelegramID, Email – это неуникальные поля. И в поиске может вернуться несколько значений, так же как и в RestAPI вместо “одного” пользователя вернется массив из них.

Такое решение были принято в виду того, что у одного Telegram пользователя может быть несколько подписок, так как же и у email-адреса.*

Оптимизация Remnawave Node

По итогу тестов в версии Remnawave Node 1.0.0 было замечено, что при большом количестве пользователей запуск XRay ядра и в целом обработка конфига с 50.000 пользователями могла занимать значительное время.

При небольшом количестве пользователей разница была в рамках небольшой погрешности - от 1 секунды до 3-4 секунд (в зависимости от железа ноды).

Мы обновили способ проверки хеша конфига при запуске ядра. Новый вариант значительно ускорил этот процесс даже в самых нагруженных ситуациях.

Ремарка: после того, как XRay на ноде запускается, весь конфиг и его хешсумма хранятся в RAM ноды. Хешсумма сохраняется для той ситуации, когда от мастер-сервера придется новый конфиг и если он окажется абсолютно идентичным (совпадает хешсумма), то нода попросту не будет перезапускать ядро. В этом нет никакого смысла, когда конфиг не поменялся от слова совсем.

:red_exclamation_mark: Поэтому обязательно после обновления основной панели (Remnawave) – так же обновитесь на последнюю версию Remnawave Node.

Как это сделать? Ответ вот здесь.

Новые эндпоинты, обновление OpenAPI schema

Актуальную версию OpenAPI схемы можно найти в вашей собственной админ-панели.
Так же она доступна вот здесь.

Были исправлены некоторые ошибки в типизации, которые раньше конфликтовали с генераторами клиентов, которые работают на основе этой схемы.

Что еще?

В этом обновлении было так же много исправлений, о которых подробно писать нет смысла – исправление опечаток, исправление логики в некоторых местах, исправление или добавление новых строк локализации.

Так же была проведена большая работа по оптимизацию использования оперативной памяти. Теперь панель должна занимать еще меньше ОЗУ. (по крайней мере хочется в это верить)

Полные чейнджлоги доступны ниже.

А в самом низу это страницы можно найти секцию – Linked Posts. В ней привязаны многие Feature Requests, улучшения, а так же баги, которые были добавлены в наш Hub.

Thanks, community!

Спасибо всем, кто активно принимал участие в поддержке проекта, обсуждение новых функцию.

Особая благодарность контрибьюторам, которые вносят свой вклад в развитие Remnawave.


Full Frontend Changelog (1.3.3…1.4.0)

compare changes

:rocket: Enhancements

- Improve user management with date handling and backend contract update (3335c57)

- Add super-admin registration and authentication flow (56b2359)

- Add server status badge to login page (cf1379d)

- Add Superadmin section to sidebar menu [31825f0]

- Add option to open sidebar menu items in new tab (16b5eda)

- Enhance node card with xray uptime and improved layout (8930d05)

- Add subscription templates and Monaco editor support (b553829)

- Add Xray JSON template and localization support (899528c)

- Add QR code generation for user subscription URL (3f22775)

- Add Happ Routing Builder and Subscription Settings (c7a23bd)

- Add Profile Webpage URL toggle in Subscription Settings (63a591f)

- Update backend contract and enhance statistic nodes component (6fa4070)

:adhesive_bandage: Fixes

- Use Buffer for base64 encoding in Happ Routing Builder (33656ce)

:nail_polish: Refactors

- Improve form layout and i18n configuration (3a32741)


Full Backend Changelog (1.3.3…1.4.0)

compare changes

:rocket: Enhancements

- Allow API role access to Xray config controller (99985c7)

- XHTTP support, drop legacy networks&protocols (61c5ccf)

- Add support for user lookup by Telegram ID and email (e1d33cd)

- Update mechanism for FindExceededUsageUsers job (0c4de05)

- Implement admin authentication and registration system (7160713)

- Enhance JWT default guard with admin authentication validation (4fad6de)

- Add database seeding to docker entrypoint and package scripts (1dce6eb)

- Change node health-check endpoint (5f53cec)

- Optimize SQL query (461c30b)

- Add Redis configuration and volume to docker-compose (2772cb2)

- Add node health check queue and refactor health check service (de6518d)

- Add xrayUptime to node health tracking (3432673)

- Add subscription template management and configuration support (f474dd0)

- Add Xray JSON subscription support for specific clients (ac8f1ec)

- Add get one host endpoint and related contract updates (a3c187a)

- Add subscription settings management and configuration support (5ba0f17)

- Add validation for happAnnounce in subscription settings (3449cdf)

- Add profile webpage URL toggle in subscription settings (5c7156d)

- Enhance MihomoGeneratorService with additional proxy options (42cb9fb)

- Update date handling in nodes usage history (86460d5)

- Add healthcheck for redis (e8f4783)

:adhesive_bandage: Fixes

- Webhook user status when expires (b5cae3f)

- Incorrect stats in logger events (423a9a1)

- Update Xray config command response schemas to use unknown type (ee9061e)

- Update Prisma seed script configuration (da375f0)

- User status not updated if new limit = 0 (b91abcb)

- Add node existence validation in start node handler (1336676)

- Correct BullBoard route path and add dashboard link (4fed746)

- Improve node creation validation messages (409f02f)

:nail_polish: Refactors

- Improve zod date validation and type handling (07acc41)

- Improve type safety and error handling across modules (4445a6d)

- Simplify Xray config response schemas (bb6a909)

- Remove debug logging and simplify config retrieval methods (222a2f8)

- Optimize expired users processing (0dd800d)

- Update user status handling in exceeded usage job (1e06819)

- Optimize user traffic reset jobs (d8d7ef9)

- Optimize user usage recording with bulk operations (f70a5e9)

- Optimize import statements and module organization, bump ESLing and update to Flat Config (47d6dc7)

- Improve user config generation and module structure (ae4083f)

- Optimize XRay config generation (2d576fa)

- Improve expired users handling for limited and active statuses (65c3b16)

- Optimize config generation and user handling (de8cc08)

- Move GetPreparedConfigWithUsersHandler to users module and update related imports (7fa89cc)

- Remove redundant node connection state flags (8bbd131)

- Adjust batch size for user config generation stream (b5b4650)

- Restructure jobs and scheduler configuration (0796c8a)

- Improve JWT guard role-based authentication logic (a14995b)

- Migrate queue management to centralized queue module (bb8efa7)

- Migrate node operations to queue-based architecture (6c30b77)

- Update middleware exports and import paths (750b4cc)

- Consolidate and simplify scheduler tasks (7a1fc5b)

- Optimize XRay configuration processing and Prometheus reporting (59c77d9)

- Migrate subscription generation to new template module (d875c8e)

- Remove profileWebpageUrl from subscription settings (5b3f390)

:house_with_garden: Chore

- Upgrade dependencies and Prisma version (429725e)

- Optimize Dockerfile and seed script configuration (692ef93)

- Update Prisma seed script path in package configuration (cfe18e7)

- Add depends_on for redis (cbea9ac)

- Bump contract library version and update password validation regex (77991d1)

- Update healthcheck for redis (af383f5)

- Remove legacy configuration files (409b19b)


Full Remnawave Node Changelog (1.0.0…1.4.0)

[compare changes]

:rocket: Enhancements

- Add Vision module (b3b0fca)

- Improve JWT authentication error logging details (0b7801a)

- Add configurable config checksum checking for Xray service (02fe636)

- Increase timeouts (dd4a95f)

- Add health-check endpoint (d40387a)

:adhesive_bandage: Fixes

- Correct global prefix configuration for Vision module routes (10fcedb)

- Improve error handling in Vision service and update Xray API services (0fb9277)

- Increase Xray internal status check delay (1114612)

:nail_polish: Refactors

- Improve Xray startup error logging with table formatting (816ddd4)

- Update Vision module routes and global prefix configuration (08fa673)

- Remove unused protocol handlers from HandlerService (722eb23)

:house_with_garden: Chore

- Upgrade Xray and @remnawave/xtls-sdk to latest versions (64a4af3)

- Replace object-hash with node-object-hash library (ce74f85)

- Bump version of @remnawave/node-contract to 0.4.1 (53c1301)