Имеется один сервер, и желание гонять через него ~30 человек (все знакомые, не левые люди). Я уже пробовал поднимать на нём голое ядро Xray, всё замечательно работает (на некоторых провайдерах даже Socks пробивался!), но голое ядро – неудобно в плане раздачи конфигураций. Любое изменение конфигурации приведёт к тому, нужно будет раздавать всем людям конфиг по новой, что в свете блокировки телеграмма будет очень неудобно.
Решение понятно – подписка. Я попробовал панельки, а именно 3XUI и Remnawave. Так вот: 3xui оказывается не умеет в подписки с множеством конфигураций (а это очень важно, т.к. на разных провайдерах работают разные транспорты и протоколы), а ремна мало того что оверкилл для таких масштабов, так ещё и не умеет адекватно разворачиватся полностью на одном сервере, а попытка такое настроить превращается в гемморой с реверс прокси и прочим.
Подумал, мол ладно, может просто nginx поднять с раздачей. И обнаружил, что механизм подписок почти не документирован. По сути сервер подписки отдаёт конфиги в base64, и также учитывает юзерагент клиента (у xray, singbox и mihomo формат подписок разный), но нигде не увидел, что бы это было описано в деталях.
И как быть с этим всем? Хватило бы 3xui, если бы он умел в подписки… Попробовать другие панельки?
Заранее всем спасибо за любую помощь! Уже так устал с этим всем, если честно…
Умеет. Поле Subscription по умолчанию генерируется рандомно. Если вам надо завернуть несколько транспортов в одну подписку, то укажите одинаковые значения Subscriptions для каждого инбаунда (а желательно и для каждого клиента). У меня так и работает.
P.S. если быть точнее, то у каждого клиента своя подписка со своими транспортами.
Ничего особенного в подписках нету, им необязательно быть в b64, можно держать обычный текстовый файл, где каждая строка это конфигурация. Я положил текстовый файл с конфигами на нжинксе в отдельный длинный маршрут, закрыл его фильтром юзер агента. Такой формат работает с Throne, v2rayn, nekobox android и shadowrocket iOS.
Я ранее пользовался и 3xui, и marzban, но удобнее чем remnawave пока ничего не нашел, так как я часто раздаю знакомым свои конфигурации, мне проще было ещё и подключить remnashop, с бесплатной выдачей подписки. Плюс его опять же в том что есть и ноды, ну и подключить к тг довольно просто. По крайней мере я поставил его на том же серваке где крутился и 3xui, на 2гб серваке всего хватает на 25 клиентов. Там есть конечно некая загвоздка с портами, я их решил просто через nginx stream на 443, задержки заметной не прибавилось, но зато можно и mtpoxy и xray держать на 443
Так же дополню, для ныне популярного happ, имеется happ роутинг, который упростит работу с ограничениями VPN у приложений из БС. Хотя не уверен, что это будет долго работать
Подписка - это просто обычный текстовый файл с конфигами. Все клиенты ожидают именно его, все панельки генерируют именно его.
Если будете использовать голое ядро без панели, то уже выше написали: можете просто положить txt-файл за nginx по https. Конфиг вручную необязательно составлять. Можете в v2rayNG настроить конфиг и экспортировать его, полученный vless:// конфиг вставьте в файл, один конфиг на строку. На клиенте включите автообновление конфига.
У меня стояла точно такая же проблема.
Вроде, подписки в 3X-UI и есть, но не хватает гибкости: шлет одну подписку на всех, нельзя разделять по клиентам.
Плюс хотелось засунуть в подписку еще пару адресов Hysteria и подписки с других 3X-UI.
Попробовал Remnawave для этого, но это прям overkill. Не смог себя заставить в нем разбираться..
В итоге, оказалось, что подписки устроены очень просто, как писали выше. Из нюансов только, что некоторые специфичные для Happ параметры (вроде Routing) передаются через HTTP-header, а не в теле ответа.
Короче, пару часов вайбкодинга, и у меня есть отличный инструмент-агрегатор подписок с разных 3X-UI, плюс можно добавлять кастомные Routing rules в зависимости от клиента, кому отдаем