Remnawave Panel v.1.5.0

Массовые действия с пользователями, полноценный mTLS между панелью и нодами, переработка некоторых элементов UI, xHTTP Extra и многое другое. Подробнее – в нашем свежем релиз-ноуте.


Как обновиться?

:red_exclamation_mark: Релиз содержит серьезные изменения.

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

Ознакомиться с инструкцией.


Что нового?

Массовые действия с пользователями

Опция массовых действий получила серьезное обновления как дизайна, так и доступного функционала. Доступно массовое изменение определенных полей, удаление пользователей по статусу.

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

Обновления UI

Массовые действия с хостами

Как и в случае с пользователями, страница Хостов так же получила массовые действия.

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

xHTTP Extra

Если хост использует xHTTP – будет доступна опция по настройке extra параметров, которые будут переданы в клиентские приложения. Это добавляет безграничное количество опций по кастомизации xHTTP на стороне клиента. Remnawave никак не будет модифицировать эти параметры при передаче.

Просмотр полной информаци о пользователе

Просмотр детальной статистику по пользователю

Абсолютно новый раздел доступен в карточке пользователя. Просмотр статистики конкретного пользователя, по каждой из подключенных нод. Доступны разные опции фильтрации.

Happ Routing

Конструктор роутинг для приложения Happ получил небольшое обновление.

Теперь можно импортировать существующую конфигурацию для дальнейшего просмотра и/или редактирования.

Страница подписки

Модуль @remnawave/subscription-page получил большое обновление, которое позволяет полностью кастомизировать какие доступные клиенты будут отображаться на странице подписки. С подробностями можно ознакомиться вот здесь.

В Remnawave теперь так же доступен полноценный редактор конфига, который используется в модуле subscription-page.

Доступны возможности по импорту уже существующего файла конфигурации для его редактирования, а так же создание своего конфига с нуля.

mTLS между Remnawave Panel и Remnawave Node

Подробнее об стандарте mTLS – здесь.

Раньше – соединение между “мастером” (Remnawave Panel) и “нодой” (Remnawave Node) хоть и было защищено своей кастомной аутентификацией, но соединение по прежнему оставалось незашифрованным (http://).

В версии 1.5.x была добавлена полная поддержка mTLS, соединение между мастером и нодой теперь полностью защищено и происходит по https://.

Именно по этой причине Remnawave Node необходимо в обязательном порядке обновить после того, как обновите Remnawave.

Remnawave RESCUE CLI

В Rescue CLI доступны опция по сбросу супер-админа, на случай если вы забыли/потеряли данные от входа к панели.

Сброс суперадмина так же необходим при обновлении на версию 1.5.x (в версии 1.5.x по сравнению с прошлыми изменился алгоритм хеширования пароли, поэтому старые пароли недействительны)

RESCUE CLI доступен по следующей команде:

docker exec -it remnawave remnawave

Изменения REST API между v1.4.6 и v1.5.0

Эти изменения были сгенерированы ИИ на основе двух предоставленных схем: 1.4.6 и 1.5.0. Может содержать неточности и ошибки. Всегда сверяйте с актуальной схемой.

Полный Changelog: Remnawave API от версии 1.4.7 до 1.5.0

Новые эндпоинты

Users Bulk Actions Controller

Добавлены новые эндпоинты для массовых операций с пользователями:

  • /api/users/bulk/delete: Массовое удаление пользователей по UUID

    • POST-метод с BulkDeleteUsersRequestDto и BulkDeleteUsersResponseDto
  • /api/users/bulk/revoke-subscription: Массовое отзыв подписок пользователей

    • POST-метод с BulkRevokeUsersSubscriptionRequestDto и BulkRevokeUsersSubscriptionResponseDto
  • /api/users/bulk/reset-traffic: Массовый сброс трафика пользователей

    • POST-метод с BulkResetTrafficUsersRequestDto и BulkResetTrafficUsersResponseDto
  • /api/users/bulk/update: Массовое обновление пользователей

    • POST-метод с BulkUpdateUsersRequestDto и BulkUpdateUsersResponseDto
  • /api/users/bulk/update-inbounds: Массовое обновление входящих соединений пользователей

    • POST-метод с BulkUpdateUsersInboundsRequestDto и BulkUpdateUsersInboundsResponseDto
  • /api/users/bulk/all/update: Массовое обновление всех пользователей

    • POST-метод с BulkAllUpdateUsersRequestDto и BulkAllUpdateUsersResponseDto
  • /api/users/bulk/all/reset-traffic: Массовый сброс трафика всех пользователей

    • PATCH-метод с BulkAllResetTrafficUsersResponseDto

Users Stats Controller

  • /api/users/stats/usage/range/{uuid}: Получение статистики использования пользователя по временному диапазону

    • GET-метод с параметрами запроса start и end (даты в формате ISO)

Users Controller

  • /api/users/activate-all-inbounds/{uuid}: Активация всех входящих соединений для пользователя

    • PATCH-метод с ответом ActivateAllInboundsResponseDto

Hosts Bulk Actions Controller

Добавлены новые эндпоинты для массовых операций с хостами:

  • /api/hosts/bulk/delete: Удаление нескольких хостов

    • POST-метод с BulkDeleteHostsRequestDto и BulkDeleteHostsResponseDto
  • /api/hosts/bulk/disable: Отключение нескольких хостов

    • POST-метод с BulkDisableHostsRequestDto и BulkDisableHostsResponseDto
  • /api/hosts/bulk/enable: Включение нескольких хостов

    • POST-метод с BulkEnableHostsRequestDto и BulkEnableHostsResponseDto
  • /api/hosts/bulk/set-inbound: Установка входящего соединения для нескольких хостов

    • POST-метод с SetInboundToManyHostsRequestDto и SetInboundToManyHostsResponseDto
  • /api/hosts/bulk/set-port: Установка порта для нескольких хостов

    • POST-метод с SetPortToManyHostsRequestDto и SetPortToManyHostsResponseDto

Inbounds Controller

  • /api/inbounds/full: Получение полной информации о входящих соединениях

    • GET-метод с ответом GetFullInboundsResponseDto

Inbounds Bulk Actions Controller

  • /api/inbounds/bulk/add-to-users: Добавление входящего соединения для пользователей

    • POST-метод с AddInboundToUsersRequestDto и AddInboundToUsersResponseDto
  • /api/inbounds/bulk/remove-from-users: Удаление входящего соединения у пользователей

    • POST-метод с RemoveInboundFromUsersRequestDto и RemoveInboundFromUsersResponseDto
  • /api/inbounds/bulk/add-to-nodes: Добавление входящего соединения ко всем узлам

    • POST-метод с AddInboundToNodesRequestDto и AddInboundToNodesResponseDto
  • /api/inbounds/bulk/remove-from-nodes: Удаление входящего соединения со всех узлов

    • POST-метод с RemoveInboundFromNodesRequestDto и RemoveInboundFromNodesResponseDto

Изменения в существующих эндпоинтах

Subscription Controller

  • Изменен путь /api/sub/{shortUuid}/{clientType}: добавлен новый тип клиента v2ray-json в enum clientType

API Tokens Management

Обновлены ответы эндпоинтов:

  • /api/tokens/create: теперь возвращает CreateApiTokenResponseDto вместо простого описания

  • /api/tokens/delete/{uuid}: теперь возвращает DeleteApiTokenResponseDto вместо простого описания

  • /api/tokens/: теперь возвращает FindAllApiTokensResponseDto вместо простого описания

Keygen Controller

  • Изменено описание эндпоинта /api/keygen/get: теперь “Get SSL_CERT for Remnawave Node” вместо “Get public key”

  • Изменилась схема ответа: теперь это массив объектов GetPubKeyResponseDto вместо одного объекта

Subscription Info

  • Обновлена схема ответа эндпоинта /api/sub/{shortUuid}/info: теперь возвращает GetSubscriptionInfoResponseDto с детальной информацией о подписке

Изменения в моделях данных

Inbound-модели

  • Обновлена структура activeUserInbounds: добавлены свойства network и security для более полного описания входящих соединений

Host-модели

  • В CreateHostRequestDto и UpdateHostRequestDto добавлено новое свойство securityLayer с возможными значениями DEFAULT, TLS, NONE

  • В CreateHostRequestDto и UpdateHostRequestDto добавлено новое свойство xHttpExtraParams для дополнительных HTTP-параметров

  • Расширен enum alpn в моделях хостов: добавлены новые значения h3, h3,h2,http/1.1 и h3,h2

CreateUserRequestDto

  • Добавлено новое свойство activateAllInbounds типа boolean, позволяющее активировать все входящие соединения при создании пользователя

Модели ответа пользователя

  • Добавлено свойство happ с подсвойством cryptoLink в ответах о пользователе

Изменения в параметрах путей (Path Parameters)

  • В пути /api/sub/{shortUuid}/{clientType} добавлен новый вариант типа клиента v2ray-json в enum clientType

Изменения в ClientType enum

  • В версии 1.4.7 список значений был: ["stash", "singbox", "singbox-legacy", "mihomo", "json", "clash"]

  • В версии 1.5.0 добавлен вариант "v2ray-json": ["stash", "singbox", "singbox-legacy", "mihomo", "json", "v2ray-json", "clash"]

Изменения в API-ответах для токенов

  • Были улучшены возвращаемые схемы для API Token Management:

    • CreateApiTokenResponseDto добавлен для /api/tokens/create

    • DeleteApiTokenResponseDto добавлен для /api/tokens/delete/{uuid}

    • FindAllApiTokensResponseDto добавлен для GET /api/tokens

Изменения в структуре ответов

  • В версии 1.5.0 многие ответы предоставляют более полную информацию о ресурсах:

    • Добавлены свойства network и security в объекты activeUserInbounds

    • Добавлено свойство happ с подобъектом содержащим cryptoLink в ответах о пользователе

Прочие изменения

  • Расширена и улучшена документация API

  • Изменен формат даты в некоторых полях с nullable: true на строгий format: date-time

  • Улучшена валидация входящих данных

  • Изменено описание для /api/keygen/get: теперь это “Get SSL_CERT for Remnawave Node” вместо “Get public key”

Обновлены типы ответов

Следующие типы ответов были расширены или добавлены:

  • GetFullInboundsResponseDto: новая модель для получения подробной информации о входящих соединениях

  • Все типы ответов для массовых операций с пользователями и хостами

  • GetUserUsageByRangeResponseDto: модель для статистики использования

  • ActivateAllInboundsResponseDto: ответ после активации всех входящих соединений

Изменения в структуре данных хоста

Изменения в свойстве alpn

  • В версии 1.4.7 enum alpn имел значения:

    ["http/1.1", "h2", "h2,http/1.1"]
    
  • В версии 1.5.0 enum alpn расширен и теперь включает:

    ["h3", "h2", "http/1.1", "h2,http/1.1", "h3,h2,http/1.1", "h3,h2"]
    

Новые свойства хоста

  • Добавлено новое свойство securityLayer с enum:

    ["DEFAULT", "TLS", "NONE"]
    
  • Добавлено новое свойство xHttpExtraParams для передачи дополнительных HTTP-параметров

Изменения в структуре /api/sub/{shortUuid}/info

  • В версии 1.5.0 добавлена полная схема ответа GetSubscriptionInfoResponseDto

Full Backend Changelog (1.4.6…1.5.0)

[compare changes]

:rocket: Enhancements

- Add SHORT_UUID_LENGTH configuration and update UsersService to utilize it (0afd640)

- Enhance user management with bulk operations and error handling (61442e5)

- Adjust keypair generation and error handling in KeygenService (5342f6a)

- Enhance subscription info endpoint with response documentation (ed62b1a)

- Add superjson utils (a81122a)

- Add isConnecting field to NodeHealthCheck payload and processor (5464113)

- Enhance key generation and update dependencies (0b4b61c)

- Add KEYPAIR_NOT_FOUND error and enhance logging in seed process (9e4741d)

- Add reset certs functionality to CLI (5c33240)

- Implement user expiration notifications and related functionality (fcabf1d)

- Add password field to RealityObject interface and update publicKey retrieval logic (50789dc)

- Add handling for empty hosts and user inbounds in FormatHostsService (e2f7cc5)

- Add activate all inbounds functionality (0a0c1eb)

- IsShowCustomRemark, PublicKey generation (ce826aa)

- Add V2RAY_JSON (v2ray-json) request template type (12a0487)

- Enhance template engine with user-specific data (de8f4ce)

:adhesive_bandage: Fixes

- Enhance ALPN configuration handling in SingBoxGeneratorService (817a9ee)

- Update xHttpExtraParams assignment in FormatHostsService (e43eb92)

- Update SingBox version handling in render-templates.service.ts (e63c5e1)

- Improve database seeding error handling in docker-entrypoint.sh (de889b1)

- Update regex for MIHOMO subscription config type (d27b9e1)

- Increase axios request timeout from 30s to 45s (344e71f)

- Improve port handling logic in InboundsService (4dcdeb0)

- Improve port parsing logic in InboundsService (772f9f8)

:nail_polish: Refactors

- Update method visibility in SystemService (437a68b)

- Reorder getDocs call in bootstrap function (d62479f)

- Streamline Telegram bot event handling and integrate logging (3581c7c)

- Improve keygen seeding logic and error handling (df7d946)

- Replace console.log with consola (ef27f7e)

- Rename prismaModule to prisma.module (1417822)

- Simplify host formatting logic in FormatHostsService (4de4747)

- Move activateAllInbounds controller (ae50e2e)

- Update sorting logic in UsersRepository to include nulls handling (aeff714)

- Update UserEntity to allow onlineAt to be nullable and enhance sorting logic in UsersRepository (36158a3)

- Update user traffic handling and enhance error logging (06e4aa9)

- Remove redundant warning log in NodeHealthCheckQueueProcessor (0265edf)

- Update user retrieval and response models (be0a087)

- Update Dockerfile and Prisma schema for improved structure and consistency (8d35c77)


Full Frontend Changelog (1.4.6…1.5.0)

[compare changes]

:rocket: Enhancements

- Update localization for important notes in English, Persian, and Russian (4248add)

- Enhance localization in English and Persian ([9a2aeec)

- Integrate bulk inbounds actions, add multi-select to hosts (c834893)

- Enhance user table and authentication flow (324e720)

- Implement bulk user actions and update localization (038fa63)

- Add animation to hosts table component (63361bb)

- Add copy functionality for UUID in InboundsCardWidget (d71cd34)

- Add new localization entries and enhance user subscription links feature (94b6f80)

- Add detailed user usage traffic statistics (64b86f3)

- Enhance user modal store and add detailed user info drawer (7c5380b)

- Update backend contract version and enhance xHTTP extra parameters functionality (737de78)

- Add clone functionality to BaseHostForm and update localization (68fe928)

- Enhance config editor with validation and save confirmation (a577c04)

- Update node status badge icon and color for connecting state (51f58cb)

- Update version and enhance happ routing builder (12cbb51)

- Enhance subscription settings and localization updates (89a0fbf)

- Enhance UI components (8818c8e)

- Add expiration date options in user actions (cc80eca)

- Add Subscription Page Builder to dashboard sidebar and routing (b815e1f)

- Add localization support for Subscription Page Builder and update dashboard components with management breadcrumbs (fcd50e0)

- Add option to hide custom remarks (820cc5f)

- Enhance user usage modal with detailed node statistics and navigation (c045a9a)

- Improve media query handling in MainLayout for better responsiveness (c6c5bc6)

- Add column filtering functionality to users table store and widget (5ebe41f)

- Implement clear modal state actions for user and node modals, skeletons in viewUserModal (e62f7df)

- Delay clearing modal state actions in EditNodeModal for smoother user experience (cb0430b)

- Add refresh functionality to user usage modal with loading state indicator (b0c2d34)

- Add build-info.json generation to release workflow for enhanced build metadata (1ab2093)

- Add happ crypto-link (14c42a4)

:adhesive_bandage: Fixes

- Update Russian localization for various components (9c4ddf3)

- Update Russian localization for inbounds term (8055f72)

- Correct translation usage in delete user confirmation modal (895accc)

- Update error message color in error accordion widget (5bca2bb)

- Adjust query hook parameters (4991a3a)

- Update node card widget to conditionally display badge based on connection status (77f016a)

- Improve NodeCardWidget styling (2917b58)

- Add offline badge to NodeCardWidget for disconnected nodes (e3891ff)

- Enhance HappRoutingBuilder components (970264e)

- Update Russian localization for user edit and usage statistics (4d524a8)

- Adjust skeleton heights and margin in ViewUserModal for improved layout consistency (5f01df5)

- Correct spelling of ‘Length’ in UUID-related functions and update related components (bdf6c1c)

:nail_polish: Refactors

- Improve layout of BaseHostForm inputs (95a42cd)

- Improve form reset handling in modal components (a7f3102)

- Remove unused comments and clean up code in subscription page builder config (ed530d3)

- Update importConfig function to accept File directly and enhance file input component in subscription page builder header (d7513d1)

- Restructure dashboard routes to include management and utils sections, update sidebar menu items, and enhance layout styles (63ebdd8)

- Update dashboard routes to include management prefix for API tokens, config, and nodes sections (186cad9)

- Remove unused customIcons import and comment out icons in UserTableWidget for cleaner code (923f50a)

- Simplify HeaderButtons component by removing translation and replacing Button with ActionIcon for logout (72dd3c3)

- Enhance app update logic in Subscription Page Builder to handle old IDs (07c6eea)

- Restructure dashboard layout by removing unused components and updating routing to use MainLayout (f11961e)

:artist_palette: Styles

- Add cursor pointer to Code component in mobile and dashboard layouts for better UX (e188c50)

- Update color variables in dashboard metrics and user actions components (b3d61f4)

- Update Button components in AppForm to use ‘p’ as the component type (ef47d36)

- Update InboundsCardWidget to use ‘teal’ color for badges and buttons, and adjust text sizes (77c2d21)


Full Remnawave Node Changelog (1.4.0…1.5.0)

[compare changes]

:rocket: Enhancements

- Enhance startup message with XRay service information (8bdda37)

- Integrate supervisord-nestjs for process management (5bdcaee)

- Add p-retry for enhanced retry logic and update logging (2a2d910)

- Integrate XrayService into HandlerService for user management (d62b52f)

:adhesive_bandage: Fixes

- Filter users with non-zero uplink and downlink in GetUsersStatsResponseModel (a528f30)

- Improve error handling in XrayService (8203e97)

- Update host address in app module for local development (09f3102)

:nail_polish: Refactors

- Change logging level for request headers in JwtDefaultGuard (f425fd5)

- Update supervisord configuration and enhance XrayService (1369f79)

- Reorder imports and enhance error logging in HandlerController and XrayService (754d07b)

- Streamline constructor syntax in Internal, Stats, and Xray controllers (f067b4c)