Сводка. Дальше — зачем четыре протокола, как устроено мульти-сервер и где боль с биллингом.
Почему четыре протокола. Один протокол не решает все задачи. 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-приложения на одном процессе. Усложнение пришло бы только с переходом на платёжку и десятки тысяч пользователей — но текущая архитектура переедет на тысячи без изменений.