Умная балансировка подписки
Как серверы из Remnawave превращаются в удобные группы стран в Happ, INCY и v2raytun. Настройка хостов — в Remnawave, в админке бота — переключатели JSON и балансировки.
Как это работает
Цепочка запроса
Настраиваете в Remnawave
- Ноды (серверы)
- Хосты и их имена (Remark / Tag)
- Squads — какие серверы у пользователя
- URL подписки → ваш SUBPAGE
- Шаблон Xray JSON (если нужен кастом)
Включаете в админке бота
- JSON-подписка — выбранные клиенты получают
xrayConfig - Клиенты JSON — Happ / INCY / v2raytun (по User-Agent)
- Умная балансировка — группы стран + AUTO (опционально)
- Свои правила routing — block / proxy / direct (опционально, при включённой балансировке)
Шаг 1 — Переключатели в админке
Откройте Remnawave → Настройки → JSON подписка.
xrayConfig для выбранных клиентов (см. ниже). Без этого переключателя балансировка не работает.
Отметьте приложения, которым отдавать JSON вместо plain-ссылок. Проверка по User-Agent при обновлении подписки.
happ
incy
v2raytun
geosite:ru, domain:example.com, geoip:private и др. — см. документацию Xray). Остальной трафик — через балансировщик AUTO. Локальные сети и BitTorrent — всегда direct. Без этого переключателя используются правила из шаблона Remnawave (базовый fallback балансировщика).
Шаг 2 — Настройка в Remnawave
2.1 Ноды и хосты
Стандартная схема Remnawave:
- 1Добавьте ноды (физические серверы с Xray).
- 2Создайте хосты — каждый хост = одна строка в подписке пользователя.
- 3Привяжите хосты к Internal Squad, который указан в настройках бота.
2.2 Имена хостов — самое важное
Имена задаются в Remnawave у каждого хоста (поле Remark или Tag). Балансировщик использует их в двух местах:
- 1Список кнопок стран — xuiweb читает
/api/hosts/Remnawave и строит группы по remark/tag активных хостов. - 2Куда попадёт каждый сервер — по имени (tag) в JSON подписки из Remnawave. Обычно это тот же remark хоста.
Отдельно в админке страны не настраиваются — достаточно правильно назвать хосты:
| Remark / Tag в Remnawave | Куда попадёт в Happ | Комментарий |
|---|---|---|
Finland-1 |
🇫🇮 Finland | Слово Finland в имени |
🇩🇪 German-Main |
🇩🇪 Germany | Слово German |
NL Amsterdam |
🇳🇱 Netherlands | NL или Amsterdam |
🇸🇪 Швеция LTE |
🇷🇺 LTE AUTO + резерв в 🇸🇪 Швеция | LTE в имени → верхняя LTE-кнопка и fallback страны |
Europe-LTE-Backup |
🇷🇺 LTE AUTO | Любой хост с LTE в remark |
🇷🇺 Россия no auto |
🇷🇺 Россия (одиночный) | Не в AUTO и не в страновом балансере — отдельная кнопка |
server-42 |
— | Без страны в имени — не попадёт в группу страны |
Finland, German, Netherlands, France и т.д.
Можно на русском: Финляндия-1, Германия-Main.
2.3 URL подписки
В Remnawave в настройках подписки укажите URL вашего SUBPAGE, а не прямую ссылку на панель:
https://sub.ваш-домен.ru/sub/{SUBSCRIPTION_UUID}
Бот и SUBPAGE подставят реальный UUID пользователя. Remnawave отдаёт «сырой» конфиг только xuiweb — клиент напрямую к панели не ходит.
Что видит пользователь в Happ / INCY
Что происходит внутри группы
Когда пользователь нажимает «🇫🇮 Finland», он не видит Finland-1 и Finland-2 — за кулисами работает каскад:
Группы AUTO и LTE AUTO
🇪🇺 AUTO | Самые быстрые — все обычные серверы без LTE в имени. Пользователь не думает о стране — подключается к лучшему из основного пула.
🇷🇺 LTE AUTO | Самые быстрые — отдельная верхняя кнопка: все хосты с LTE в имени балансируются вместе.
Тот же LTE-сервер страны (например 🇸🇪 Швеция LTE) дополнительно остаётся резервом внутри группы страны 🇸🇪 Швеция — основной канал → LTE fallback. В AUTO LTE не участвует — только Wi‑Fi.
В режиме auto_only можно указать хост Remnawave, под которым показать LTE AUTO (поле в настройках балансировки). Пусто — кнопка сразу после AUTO.
no auto — если в remark хоста есть no auto, noauto, no-auto или без auto, сервер становится одиночной кнопкой: не попадает в AUTO, не балансируется внутри страны. Маркер из названия кнопки убирается (🇷🇺 Россия no auto → 🇷🇺 Россия).
Полный сценарий: от нуля до Happ
Finland-1, German-1, NL-1, Backup-LTE-1 — все в одном Squad.
https://sub.example.com/sub/{uuid}
xrayConfig.
happ://add/...
Итог для пользователя Ivan
SUBPAGE и приложения
Страница подписки в браузере (subscription.html) — это инструкция для пользователя: скачать Happ/INCY, добавить подписку, скопировать ссылку.
- BARNAUL V — отдельное приложение, свой формат
- Happ — получает JSON через
happ://add/ - INCY — получает тот же JSON через
incy://add/
Балансировка влияет только на то, что внутри JSON, который Happ/INCY импортируют. HTML-страницу менять не нужно.
Частые вопросы
Где настраивать группы «🇫🇮 Финляндия»?
Нигде отдельно. Группы строятся автоматически из имён хостов в Remnawave. Переименовали хост — через обновление подписки группы пересчитаются.
Нужен ли отдельный xray-balancer-mw?
Нет. Логика встроена в xuiweb. Отдельный middleware перед Remnawave не ставится.
Работает ли с plain-ссылками (base64)?
Умная балансировка JSON — нет, только для xrayConfig. Для plain-текста (vless://…) есть отдельная функция — балансировка текстовых ключей в настройках Remnawave.
Что если хост без страны в имени?
Он не попадёт ни в одну группу страны, но может участвовать в AUTO и all-balancer как резерв.
LTE — обязательно?
Нет. Если LTE-хостов нет — кнопка 🇷🇺 LTE AUTO не появится. Достаточно назвать хост с LTE в remark.
Как исключить сервер из AUTO?
Добавьте в remark хоста в Remnawave маркер no auto (или noauto, no-auto, без auto). Сервер появится отдельной кнопкой без балансировки — удобно для спец-каналов (YouTube, TG и т.п.).
Откуда балансировщик читает имена?
Из хостов Remnawave: список групп стран — через API /api/hosts/; распределение серверов (AUTO, LTE, no auto, страна) — по remark/tag в JSON подписки, который Remnawave формирует из тех же хостов.
Mihomo / Sing-box?
Не используются в вашем проекте. Балансировка рассчитана на Happ и INCY (Xray JSON).