Happ · INCY · Remnawave

Умная балансировка подписки

Как серверы из Remnawave превращаются в удобные группы стран в Happ, INCY и v2raytun. Настройка хостов — в Remnawave, в админке бота — переключатели JSON и балансировки.

Как это работает

💡
Главная идея: вы создаёте серверы (хосты) в Remnawave как обычно. Бот при выдаче подписки пересобирает JSON-конфиг: вместо длинного списка серверов пользователь видит группы «🇫🇮 Финляндия», «🇩🇪 Германия», «⚡ AUTO». Mihomo и Sing-box не используются — только Happ и INCY.

Цепочка запроса

📱
Happ / INCY
Обновляет подписку по URL
→
🌐
SUBPAGE
/sub/{uuid}
→
⚙️
xuiweb
Проверка + балансировка
→
☁️
Remnawave
Сырой Xray 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 подписка.

Блок «Формат подписки»
Активирует подписку JSON Включает поле xrayConfig для выбранных клиентов (см. ниже). Без этого переключателя балансировка не работает.
Клиенты JSON-подписки

Отметьте приложения, которым отдавать JSON вместо plain-ссылок. Проверка по User-Agent при обновлении подписки.

Happ User-Agent содержит happ
INCY User-Agent содержит incy
v2raytun User-Agent содержит v2raytun
Умная балансировка xuiweb пересобирает JSON из Remnawave: группы по странам, AUTO, failover между серверами, фильтр перегруженных нод. Можно выключить — тогда отдаётся «сырой» JSON из Remnawave.
Свои правила routing Списки block / proxy / direct (по одному правилу на строку: geosite:ru, domain:example.com, geoip:private и др. — см. документацию Xray). Остальной трафик — через балансировщик AUTO. Локальные сети и BitTorrent — всегда direct. Без этого переключателя используются правила из шаблона Remnawave (базовый fallback балансировщика).
⚠️
Порядок включения: сначала JSON-подписка, выберите клиентов (Happ / INCY / v2raytun), затем при необходимости — балансировка. Если JSON выключен или клиент не отмечен — приложение получит base64/plain-ссылки без групп.

Шаг 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, а не прямую ссылку на панель:

URL
https://sub.ваш-домен.ru/sub/{SUBSCRIPTION_UUID}

Бот и SUBPAGE подставят реальный UUID пользователя. Remnawave отдаёт «сырой» конфиг только xuiweb — клиент напрямую к панели не ходит.

Что видит пользователь в Happ / INCY

Без балансировки
HAPP · ПОДПИСКА
Finland-1
Finland-2
German-Main
NL Amsterdam
Europe-LTE-1
… ещё 10 строк
С умной балансировкой
HAPP · ПОДПИСКА
⚡ AUTO · Самые быстрые ▶
🇷🇺 LTE AUTO · Самые быстрые ▶
🇫🇮 Finland ▶
🇩🇪 Germany ▶
🇳🇱 Netherlands ▶
💡
Пользователь выбирает страну или AUTO — не конкретный сервер. Какой физический сервер подключится внутри группы — решает балансировщик (ping + нагрузка).

Что происходит внутри группы

Когда пользователь нажимает «🇫🇮 Finland», он не видит Finland-1 и Finland-2 — за кулисами работает каскад:

1
Sticky — если пользователь уже был на Finland-2, держим его (IP не прыгает при каждом обновлении)
↓ если sticky-сервер недоступен
2
Main balancer — выбирает лучший из Finland-1, Finland-2, Finland-3 (leastLoad + probe)
↓ если все FI-серверы упали
3
All-balancer — крайний случай (если настроен каскад в шаблоне)

Группы 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

1
Remnawave: создаёте 4 хоста Finland-1, German-1, NL-1, Backup-LTE-1 — все в одном Squad.
2
Remnawave: URL подписки → SUBPAGE https://sub.example.com/sub/{uuid}
3
Админка: включаете JSON-подписку Happ/INCY начнут получать xrayConfig.
4
Админка: включаете умную балансировку xuiweb начнёт группировать серверы по именам хостов.
5
Пользователь добавляет подписку в Happ Через SUBPAGE (кнопка «Добавить в Happ») или happ://add/...
6
Happ обновляет подписку Запрос идёт на SUBPAGE → xuiweb тянет JSON из Remnawave → пересобирает → отдаёт 5 групп вместо 4 серверов + AUTO.

Итог для пользователя Ivan

Видит в HappAUTO · LTE AUTO · Finland · Germany · Netherlands
Выбирает🇫🇮 Finland
Подключается кFinland-1 (балансер + sticky)
При падении FIавтоматически → LTE или другая страна

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).