гора.
VPN / обход блокировок

VPN-бот: 4 протокола, 3 страны, 67 пользователей

Telegram-бот для VPN-конфигов: WireGuard, Hysteria2, HTTP, SOCKS5 на трёх континентальных серверах. Индивидуальные пароли, QR-коды, проверка подписки.

Регион
@vpnsrv18_bot · 3 страны (NL / US East / US West)
Роль
Solo: серверная инфра, бот, генератор конфигов, биллинг
Период
2024–2026
Ниша
VPN / обход блокировок

Адреса серверов и порты Hysteria2 опубликованы потому что они и так в DNS. Пароли отдельных пользователей и публичные ключи WireGuard — нет.

Сводка. Дальше — зачем четыре протокола, как устроено мульти-сервер и где боль с биллингом.

Почему четыре протокола. Один протокол не решает все задачи. WireGuard быстрый, но провайдеры в России и Иране давно научились детектить UDP-handshake и обрезать. Hysteria2 через QUIC на 443-м порту маскируется под HTTPS-трафик к CDN — обходит большинство фильтров. HTTP-прокси нужен для случаев, когда юзер хочет подключить только браузер, а не весь трафик. SOCKS5 — fallback для приложений, которые не умеют WireGuard и не любят QUIC.

Мульти-сервер. vps1 в Amsterdam (нидерландское право, EU, низкая латентность для Европы), vps2 в Нью-Йорке (US East), vps4 в Salt Lake City (US West, для тех кому ближе). Каждый сервер описан в таблице servers: SSH-доступ, WireGuard public key, Hysteria2 domain + obfs password, прокси-порты. Когда юзер просит новый конфиг, бот по SSH добавляет peer на нужном сервере и возвращает готовую конфигурацию + QR.

Биллинг и лимиты. Лимиты считаются на стороне бота — у каждого юзера в users.tariff запись с разрешённым количеством конфигов и трафиком. cleanup.py запускается по cron, ходит по серверам, забирает статистику трафика через WireGuard wg show transfer и Hysteria2-метрики, обновляет usage_logs. Превысил — пинок в Telegram и временная блокировка.

Подписка на канал как gate. Subscription middleware проверяет, что user подписан на @izgoy4u перед каждым ответом меню. Если отписался — бот молчит и предлагает подписаться обратно. Это органический рост канала + защита от мульти-аккаунтов.

Без k8s, без Docker. SQLite-база в одном файле, systemd-юнит, paramiko для SSH. 67 пользователей не требуют ничего кроме aiogram-приложения на одном процессе. Усложнение пришло бы только с переходом на платёжку и десятки тысяч пользователей — но текущая архитектура переедет на тысячи без изменений.

Что внутри

  • Четыре протокола в одном боте: WireGuard для скорости, Hysteria2 с QUIC для обхода DPI, HTTP-прокси для браузеров, SOCKS5 как универсальный fallback.
  • Три сервера на трёх локациях: vps1 Amsterdam (42/100 пользователей), vps2 New York (31/100), vps4 Salt Lake City (20/100) — реальная загрузка из таблицы servers.
  • Hysteria2 на доменах cdn.4brd188.com и cdn.httpsstonies.app через Cloudflare — выглядит как обычный TLS-трафик к CDN, не блокируется.
  • Индивидуальный пароль Hysteria2 на каждого пользователя — ключи не утекают всем сразу, изоляция от компроментации одного аккаунта.
  • QR-коды генерируются на лету: фотографируешь камерой Hiddify / WireGuard и сразу подключаешься.
  • Subscription middleware: бот пускает в меню только после подписки на канал @izgoy4u. Проверка живая, через Telegram API.
  • Автоочистка неактивных конфигов: cleanup.py убивает ключи у пользователей, которые не пользовались VPN N дней.
  • Тарифы Free/Basic/Pro: бесплатный план — 1 конфиг, 10 GB/мес; платные — 3/10 конфигов, 100 GB или безлимит.
  • Реальная база на момент публикации: 67 пользователей, 93 живых VPN-конфига, 3 активных сервера.
  • Реферальная программа: за приведённого пользователя — бонусные конфиги. Хранится в БД, без отдельного сервиса.

Стек

  • aiogram 3
  • SQLAlchemy async + aiosqlite
  • WireGuard
  • Hysteria2
  • HTTP/SOCKS5 (Squid/Dante)
  • qrcode (Python)
  • paramiko (SSH к серверам)
  • Cloudflare CDN (для Hysteria2-доменов)
  • systemd
  • VPS1 (Amsterdam) · VPS2 (NYC) · VPS4 (Salt Lake City)
Три рассказа

Один проект — три точки зрения

    VPN-бот: 4 протокола, 3 страны, 67 пользователей · hiregora.com