Изначально я, как и все, пользовался популярными сервисами вроде Marzban и 3x‑ui. Они, безусловно, очень удобны, когда хочется создать конфиг и добавить его в подписку. Но вот проблема: ты захотел добавить в свою подписку конфиг, который создал не в Marzban или 3x‑ui. Даже если ты поднял два независимых сервера с отдельными, но идентичными Marzban‑инстансами — соединить их напрямую не получится. Приходится городить костыль, который их объединит.

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

В какой‑то момент я перестал пользоваться подобными сервисами и начал вручную поднимать xray и писать конфигурации сам. Проблема в том, что если IP блокировали и было проще поднять новый VPS, приходилось заново вручную добавлять конфигурации во все приложения. Пока пользуешься сам — терпимо. Но когда начал делиться конфигами со знакомыми, особенно со старшим поколением... стало понятно, что так дальше нельзя.

По итогу я написал простенький костыль, куда вручную записывал все конфигурации, а он возвращал подписку — которую уже можно было отправить конечным пользователям VPN. И тут я подумал: а сколько таких же, как я, мучается теми же проблемами? Возятся не только с настройкой конфигураций, но ещё и с подписками.

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

А как же удобство использования?

Но какой же API без удобной библиотеки для его использования? А если пользователь не собирается разворачивать полный API у себя на сервере — зачем ему инструменты администратора? Так я решил разработать две библиотеки: v2hub и v2hub‑admin. Обе имеют и синхронный, и асинхронный клиенты — кому что по вкусу.

А если пользователь хочет пользоваться сервисом, но не хочет заморачиваться с написанием кода? Добавил CLI на базе Typer и Rich, чтобы всё было по красоте.

Регистрация без боли

Как избавиться от спама и мультиаккаунтов, при этом не заставляя пользователя проходить регистрацию через почту, номер телефона или скан ануса? Тут на помощь пришёл Павел Валерьевич a.k.a. Дуров и его детище VK Telegram. Написал бота, через которого пользователи получают свой токен и пользуются функционалом сервиса, а при необходимости — сбрасывают токен и получают новый. Важный момент: все подписки привязаны не к токену, а к внутреннему user_hash, так что сброс токена ничего не ломает.

И вот сервис разросся...

Сервис разросся настолько, что им можно стало пользоваться не только разработчикам, но и простым смертным. Но тут возникла новая проблема: обычные люди не особо понимают всю эту магию с CLI, библиотеками и, упаси боже, прямыми запросами к API через curl.

Было принято решение накидать сайт, через который можно взаимодействовать с сервисом, просто тыкая пальцем в экран — так появилась v2hub‑panel.

Вот так примерно и началась история проекта V2Hub. Посмотрим, к чему нас это приведёт.


Компоненты проекта, если вдруг интересно потыкать:


P. S. Я только недавно в habr, буду рад вашим советам в комментариях как улучшить посты 🙂