# Remnawave Panel v1.4.0

**URL:** https://f.docs.rw/t/topic/171
**Category:** Panel
**Tags:** stable
**Created:** 2025-03-13T21:00:00Z
**Posts:** 1

## Post 1 by @remnawave — 2025-03-13T21:00:00Z

## How to update?

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

### **[Read about updating here.](https://remna.st/blog/updating-guides/updating-to-1.4.x)**

* * *

## Что нового?

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

 ![](https://f.docs.rw/uploads/default/original/1X/0684c8720c1d1a36badee2044dcec38ba2e4582d.jpeg)

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

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

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

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

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

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

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

 ![](https://f.docs.rw/uploads/default/original/1X/f7f83aba477598e7143bddfb23bdf332f03fdae6.png)

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

_логин и пароль METRIC\_USER, METRICS\_PASS_

* * *

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

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

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

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

### Поддержка xHTTP

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

[Подробнее о xHTTP можно прочитать вот здесь.](https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11468947)

### JSON-подписки

 ![](https://f.docs.rw/uploads/default/original/1X/aac9635692f3b88064d8facfe8514929fb33b158.png)

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

### Happ – routing, announce

 ![](https://f.docs.rw/uploads/default/original/1X/7f09daea6e400182643407e7de3cd7cffc427b86.png)

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

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

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

 ![](https://f.docs.rw/uploads/default/original/1X/61dee284b7425f7ff0a6d744fb9bca17bf9c3811.png)

Многим настройкам не место в .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
```

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

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

 ![](https://f.docs.rw/uploads/default/original/1X/d06d0db6af25efe4d9128b8429715244a70e601c.png)

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

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

 ![](https://f.docs.rw/uploads/default/original/1X/0570a9cdd52e86fa7c146e637ec45d97909bd163.png)

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

 ![](https://f.docs.rw/uploads/default/original/1X/35fbe5c31ea8c871b15eb99d60a98dbce3312d7f.png)

\*Небольшая ремарка: 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.**

**Как это сделать? [Ответ вот здесь.](https://remna.st/blog/updating-guides/updating-to-1.4.x/#remnawave-node-remnanode)**

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

Актуальную версию OpenAPI схемы можно найти в вашей собственной админ-панели.  
[Так же она доступна вот здесь](https://remna.st/api).

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

### Что еще?

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

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

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

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

### Thanks, community!

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

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

* * *

# Full Frontend Changelog (1.3.3…1.4.0)

[compare changes](https://github.com/remnawave/frontend/compare/1.3.3...1.4.0)

#### :rocket: Enhancements

- Improve user management with date handling and backend contract update [(3335c57)](https://github.com/remnawave/frontend/commit/3335c57)

- Add super-admin registration and authentication flow [(56b2359)](https://github.com/remnawave/frontend/commit/56b2359)

- Add server status badge to login page [(cf1379d)](https://github.com/remnawave/frontend/commit/cf1379d)

- Add Superadmin section to sidebar menu [[31825f0]](https://github.com/remnawave/frontend/commit/31825f0)

- Add option to open sidebar menu items in new tab [(16b5eda)](https://github.com/remnawave/frontend/commit/16b5eda)

- Enhance node card with xray uptime and improved layout [(8930d05)](https://github.com/remnawave/frontend/commit/8930d05)

- Add subscription templates and Monaco editor support [(b553829)](https://github.com/remnawave/frontend/commit/b553829)

- Add Xray JSON template and localization support [(899528c)](https://github.com/remnawave/frontend/commit/899528c)

- Add QR code generation for user subscription URL [(3f22775)](https://github.com/remnawave/frontend/commit/3f22775)

- Add Happ Routing Builder and Subscription Settings [(c7a23bd)](https://github.com/remnawave/frontend/commit/c7a23bd)

- Add Profile Webpage URL toggle in Subscription Settings [(63a591f)](https://github.com/remnawave/frontend/commit/63a591f)

- Update backend contract and enhance statistic nodes component [(6fa4070)](https://github.com/remnawave/frontend/commit/6fa4070)

#### :adhesive_bandage: Fixes

- Use Buffer for base64 encoding in Happ Routing Builder [(33656ce)](https://github.com/remnawave/frontend/commit/33656ce)

#### :nail_polish: Refactors

- Improve form layout and i18n configuration [(3a32741)](https://github.com/remnawave/frontend/commit/3a32741)

* * *

# Full Backend Changelog (1.3.3…1.4.0)

[compare changes](https://github.com/remnawave/backend/compare/1.3.3...1.4.0)

#### :rocket: Enhancements

- Allow API role access to Xray config controller [(99985c7)](https://github.com/remnawave/backend/commit/99985c7)

- XHTTP support, drop legacy networks&protocols [(61c5ccf)](https://github.com/remnawave/backend/commit/61c5ccf)

- Add support for user lookup by Telegram ID and email [(e1d33cd)](https://github.com/remnawave/backend/commit/e1d33cd)

- Update mechanism for FindExceededUsageUsers job [(0c4de05)](https://github.com/remnawave/backend/commit/0c4de05)

- Implement admin authentication and registration system [(7160713)](https://github.com/remnawave/backend/commit/7160713)

- Enhance JWT default guard with admin authentication validation [(4fad6de)](https://github.com/remnawave/backend/commit/4fad6de)

- Add database seeding to docker entrypoint and package scripts [(1dce6eb)](https://github.com/remnawave/backend/commit/1dce6eb)

- Change node health-check endpoint [(5f53cec)](https://github.com/remnawave/backend/commit/5f53cec)

- Optimize SQL query [(461c30b)](https://github.com/remnawave/backend/commit/461c30b)

- Add Redis configuration and volume to docker-compose [(2772cb2)](https://github.com/remnawave/backend/commit/2772cb2)

- Add node health check queue and refactor health check service [(de6518d)](https://github.com/remnawave/backend/commit/de6518d)

- Add xrayUptime to node health tracking [(3432673)](https://github.com/remnawave/backend/commit/3432673)

- Add subscription template management and configuration support [(f474dd0)](https://github.com/remnawave/backend/commit/f474dd0)

- Add Xray JSON subscription support for specific clients [(ac8f1ec)](https://github.com/remnawave/backend/commit/ac8f1ec)

- Add get one host endpoint and related contract updates [(a3c187a)](https://github.com/remnawave/backend/commit/a3c187a)

- Add subscription settings management and configuration support [(5ba0f17)](https://github.com/remnawave/backend/commit/5ba0f17)

- Add validation for happAnnounce in subscription settings [(3449cdf)](https://github.com/remnawave/backend/commit/3449cdf)

- Add profile webpage URL toggle in subscription settings [(5c7156d)](https://github.com/remnawave/backend/commit/5c7156d)

- Enhance MihomoGeneratorService with additional proxy options [(42cb9fb)](https://github.com/remnawave/backend/commit/42cb9fb)

- Update date handling in nodes usage history [(86460d5)](https://github.com/remnawave/backend/commit/86460d5)

- Add healthcheck for redis [(e8f4783)](https://github.com/remnawave/backend/commit/e8f4783)

#### :adhesive_bandage: Fixes

- Webhook user status when expires [(b5cae3f)](https://github.com/remnawave/backend/commit/b5cae3f)

- Incorrect stats in logger events [(423a9a1)](https://github.com/remnawave/backend/commit/423a9a1)

- Update Xray config command response schemas to use unknown type [(ee9061e)](https://github.com/remnawave/backend/commit/ee9061e)

- Update Prisma seed script configuration [(da375f0)](https://github.com/remnawave/backend/commit/da375f0)

- User status not updated if new limit = 0 [(b91abcb)](https://github.com/remnawave/backend/commit/b91abcb)

- Add node existence validation in start node handler [(1336676)](https://github.com/remnawave/backend/commit/1336676)

- Correct BullBoard route path and add dashboard link [(4fed746)](https://github.com/remnawave/backend/commit/4fed746)

- Improve node creation validation messages [(409f02f)](https://github.com/remnawave/backend/commit/409f02f)

#### :nail_polish: Refactors

- Improve zod date validation and type handling [(07acc41)](https://github.com/remnawave/backend/commit/07acc41)

- Improve type safety and error handling across modules [(4445a6d)](https://github.com/remnawave/backend/commit/4445a6d)

- Simplify Xray config response schemas [(bb6a909)](https://github.com/remnawave/backend/commit/bb6a909)

- Remove debug logging and simplify config retrieval methods [(222a2f8)](https://github.com/remnawave/backend/commit/222a2f8)

- Optimize expired users processing [(0dd800d)](https://github.com/remnawave/backend/commit/0dd800d)

- Update user status handling in exceeded usage job [(1e06819)](https://github.com/remnawave/backend/commit/1e06819)

- Optimize user traffic reset jobs [(d8d7ef9)](https://github.com/remnawave/backend/commit/d8d7ef9)

- Optimize user usage recording with bulk operations [(f70a5e9)](https://github.com/remnawave/backend/commit/f70a5e9)

- Optimize import statements and module organization, bump ESLing and update to Flat Config [(47d6dc7)](https://github.com/remnawave/backend/commit/47d6dc7)

- Improve user config generation and module structure[(ae4083f)](https://github.com/remnawave/backend/commit/ae4083f)

- Optimize XRay config generation [(2d576fa)](https://github.com/remnawave/backend/commit/2d576fa)

- Improve expired users handling for limited and active statuses [(65c3b16)](https://github.com/remnawave/backend/commit/65c3b16)

- Optimize config generation and user handling [(de8cc08)](https://github.com/remnawave/backend/commit/de8cc08)

- Move GetPreparedConfigWithUsersHandler to users module and update related imports [(7fa89cc)](https://github.com/remnawave/backend/commit/7fa89cc)

- Remove redundant node connection state flags [(8bbd131)](https://github.com/remnawave/backend/commit/8bbd131)

- Adjust batch size for user config generation stream [(b5b4650)](https://github.com/remnawave/backend/commit/b5b4650)

- Restructure jobs and scheduler configuration [(0796c8a)](https://github.com/remnawave/backend/commit/0796c8a)

- Improve JWT guard role-based authentication logic [(a14995b)](https://github.com/remnawave/backend/commit/a14995b)

- Migrate queue management to centralized queue module [(bb8efa7)](https://github.com/remnawave/backend/commit/bb8efa7)

- Migrate node operations to queue-based architecture [(6c30b77)](https://github.com/remnawave/backend/commit/6c30b77)

- Update middleware exports and import paths [(750b4cc)](https://github.com/remnawave/backend/commit/750b4cc)

- Consolidate and simplify scheduler tasks [(7a1fc5b)](https://github.com/remnawave/backend/commit/7a1fc5b)

- Optimize XRay configuration processing and Prometheus reporting [(59c77d9)](https://github.com/remnawave/backend/commit/59c77d9)

- Migrate subscription generation to new template module [(d875c8e)](https://github.com/remnawave/backend/commit/d875c8e)

- Remove profileWebpageUrl from subscription settings [(5b3f390)](https://github.com/remnawave/backend/commit/5b3f390)

#### :house_with_garden: Chore

- Upgrade dependencies and Prisma version [(429725e)](https://github.com/remnawave/backend/commit/429725e)

- Optimize Dockerfile and seed script configuration [(692ef93)](https://github.com/remnawave/backend/commit/692ef93)

- Update Prisma seed script path in package configuration [(cfe18e7)](https://github.com/remnawave/backend/commit/cfe18e7)

- Add depends\_on for redis [(cbea9ac)](https://github.com/remnawave/backend/commit/cbea9ac)

- Bump contract library version and update password validation regex [(77991d1)](https://github.com/remnawave/backend/commit/77991d1)

- Update healthcheck for redis [(af383f5)](https://github.com/remnawave/backend/commit/af383f5)

- Remove legacy configuration files [(409b19b)](https://github.com/remnawave/backend/commit/409b19b)

* * *

# Full Remnawave Node Changelog (1.0.0…1.4.0)

[[compare changes]](https://github.com/remnawave/node/compare/1.0.0...1.4.0)

#### :rocket: Enhancements

- Add Vision module [(b3b0fca)](https://github.com/remnawave/node/commit/b3b0fca)

- Improve JWT authentication error logging details [(0b7801a)](https://github.com/remnawave/node/commit/0b7801a)

- Add configurable config checksum checking for Xray service [(02fe636)](https://github.com/remnawave/node/commit/02fe636)

- Increase timeouts [(dd4a95f)](https://github.com/remnawave/node/commit/dd4a95f)

- Add health-check endpoint [(d40387a)](https://github.com/remnawave/node/commit/d40387a)

#### :adhesive_bandage: Fixes

- Correct global prefix configuration for Vision module routes [(10fcedb)](https://github.com/remnawave/node/commit/10fcedb)

- Improve error handling in Vision service and update Xray API services [(0fb9277)](https://github.com/remnawave/node/commit/0fb9277)

- Increase Xray internal status check delay [(1114612)](https://github.com/remnawave/node/commit/1114612)

#### :nail_polish: Refactors

- Improve Xray startup error logging with table formatting [(816ddd4)](https://github.com/remnawave/node/commit/816ddd4)

- Update Vision module routes and global prefix configuration [(08fa673)](https://github.com/remnawave/node/commit/08fa673)

- Remove unused protocol handlers from HandlerService [(722eb23)](https://github.com/remnawave/node/commit/722eb23)

#### :house_with_garden: Chore

- Upgrade Xray and @remnawave/xtls-sdk to latest versions [(64a4af3)](https://github.com/remnawave/node/commit/64a4af3)

- Replace object-hash with node-object-hash library [(ce74f85)](https://github.com/remnawave/node/commit/ce74f85)

- Bump version of @remnawave/node-contract to 0.4.1 [(53c1301)](https://github.com/remnawave/node/commit/53c1301)
