Ghost VPN: собственный VPN-сервис под ключ — сайт, бот, мониторинг
Полностью самописный VPN-сервис на VLESS + Reality: Telegram-бот с автоплатежами, сайт с прямой оплатой, мониторинг доступности к целевым ресурсам и failover за 10 минут.
Полностью самописный VPN-сервис: от настройки протоколов на сервере до Telegram-бота и сайта с автоматической оплатой. Запущен в продакшене, работает без простоя.
Это не обёртка вокруг стороннего API и не реселл-кабинет. Мы собрали стек сами — серверная часть, биллинг, бот, сайт, мониторинг — и довели до состояния, когда от покупки тарифа до готового QR-кода в чате клиент не встречает ни одного человека. Под капотом — современный VLESS+Reality, под морду — два независимых канала продаж (сайт и Telegram), под надёжность — мониторинг с алертами и failover как infrastructure-as-code.
Что внутри
Протокол: VLESS + Reality
Снаружи трафик неотличим от обычного TLS-подключения к стороннему сайту — DPI не видит разницы и не может заблокировать конкретно нашу инфраструктуру без блокировки тысяч безобидных подключений. Серверный сертификат не используется: Reality переиспользует сертификат прикрываемого домена, что лишает активного зондирования основного признака.
Управление пользователями
Marzban-панель с единой БД пользователей: лимиты по трафику и сроку действия, выдача подписок, ротация ключей. Подписка клиента — один URL, который автоматически тянет актуальную конфигурацию.
Telegram-бот
Python + aiogram. Покупка тарифа, продление, статус подписки, поддержка. Платежи — через ЮKassa с идемпотентной обработкой webhook'ов: дублирующие уведомления от платёжной системы не дублируют продление, оплата атомарно фиксируется в БД.
Кабинет в боте: статус, трафик, действия
Сайт
Next.js 15 (App Router) + Tailwind + TypeScript. Cyberpunk-дизайн, оплата напрямую с сайта без перехода в бота, выдача QR-кода подписки сразу после успешного платежа. Два канала — один процесс.
Витрина тарифов: оплата напрямую с сайта без перехода в бота
Мониторинг
Постоянная проверка доступности сервера и качества VPN-канала к конкретным целевым ресурсам — не «пингуем 8.8.8.8», а реально измеряем латенси и доступность того, ради чего пользователи подключаются:
→
Google, YouTube, Instagram, TikTok — основной поток
→
Discord, Telegram (web-версия) — связь
→
Игровые сервисы — латенси-чувствительный трафик
Замеры идут с внешних точек, дашборды показывают состояние сервисов. Оповещения помогают заметить инцидент и перейти к диагностике.
Failover и переезд
Вся конфигурация — сервера, маршрутизации, бота, сайта, мониторинга — версионируется как infrastructure-as-code. При попадании IP-адреса в блок-листы или резке трафика конкретным провайдером поднимается новый сервер и переключаются подписки за ≤ 10 минут. Без переписки с поддержкой, без выдачи новых конфигов клиентам — подписки динамические, тянут актуальный конфиг сами.
Технологический стек
VPN-ядроXray-core, VLESS + Reality, Marzban, Docker с host networking
Бэкенд ботаPython 3, aiogram, SQLAlchemy, SQLite
ПлатежиЮKassa API, идемпотентные webhook-обработчики, статус-машина в БД
ИнфраструктураDocker Compose, systemd, отдельный VPS под весь стек
МониторингВнешние пробы к целевым ресурсам, дашборды, алерты в реальном времени
Что заняло больше всего работы
Reality fallback на легитимный домен
Настройка маскировки через nginx так, чтобы при ошибке SNI Reality-handshake уходил в реальный HTTPS-сайт, а не в пустоту. Это убирает один из главных признаков для активного зондирования — попытка пробить наш порт извне видит обычный сайт, отдающий нормальный TLS-ответ.
Идемпотентность платежей
Webhook ЮKassa может прийти несколько раз — сетевые ретраи на их стороне, наша задача — не продлить подписку дважды. Решено через статус-машину в БД с уникальными ID платежей и атомарными апдейтами. Каждое уведомление — идемпотентная операция, повторный вызов с тем же ID не делает ничего лишнего.
Полный self-service
От покупки до подключения — без участия администратора. Покупка → автоплатёж → создание пользователя в Marzban → выдача подписки → готовый QR-код в чате. Каждый шаг автоматизирован, каждая ошибка — обработана, каждый сбой — алертит, а не теряется.
Результат
Работающий сервис с реальными пользователями. Для эксплуатации предусмотрены мониторинг, биллинг и инструменты управления. Доступность сервиса и корректность операций требуют постоянного контроля.
Нужен сервис под ключ — с ботом, сайтом и платежами?
Делаем полный стек: бэкенд, бот, сайт, оплаты, мониторинг. Без коробочных шаблонов — каждое решение под конкретный сценарий. От бриф до продакшена — обычно 1–2 месяца.
Что входит в IT-аутсорсинг компании: компьютеры, серверы, сеть и 1С
Как согласовать обслуживание IT-инфраструктуры: состав работ, границы ответственности, порядок обращений и данные для расчёта сметы. Для компаний в Перми и удалённой поддержки.
Сколько стоит монтаж ЛВС и СКС в Перми: из чего складывается смета
Кабельные трассы, розетки, патч-панели, шкафы и проверки: какие сведения нужны для оценки монтажа. Три выполненных проекта с известным составом работ и стоимостью.