Skip to content

blablajka/serv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Smart VPN Panel (AmneziaWG + Sing-Box)

Умная панель управления VPN с каскадной маршрутизацией, защитой от ТСПУ и графическим интерфейсом.


📌 Что это такое?

Это готовое решение "Всё в одном" для создания собственного VPN, устойчивого к блокировкам. Система использует гибридный каскад:

  1. Вы подключаетесь к Российскому серверу через неблокируемый протокол AmneziaWG (низкий пинг, нет подозрений со стороны провайдеров).
  2. Российский сервер анализирует трафик с помощью маршрутизатора Sing-Box.
  3. Весь зарубежный трафик (заблокированные сайты) скрытно инкапсулируется и отправляется на Зарубежный сервер.

🌟 Главные фичи

  • 🚀 Установка в 1 клик: Весь стек (AmneziaWG, API, маршрутизатор, веб-панель) ставится одной командой.
  • Авто-добавление нод: Встроенный SSH-установщик сам настроит зарубежный VPS и включит его в балансировку.
  • 🧠 Умный Оркестратор: Каждую минуту проверяет зарубежные серверы. Если РКН заблокировал IP или сервер упал — панель моментально переключает ваших пользователей на резервный сервер.
  • 📊 Визуализация и Логи: Красивая карта сети и консоль логов в реальном времени.

🚀 Установка (Быстрый старт)

Вам понадобится чистый российский сервер с Ubuntu 22.04 (минимум 2 ГБ ОЗУ). Подключитесь к нему по SSH от имени пользователя root и выполните ровно одну команду:

wget -qO- https://raw.githubusercontent.com/blablajka/serv/main/deploy.sh | bash

Скрипт автоматически создаст Swap, скачает исходники, скомпилирует ядра awg и sing-box, настроит маршрутизацию (iptables) и запустит Веб-панель.

Доступ к панели: Откройте в браузере http://IP_ВАШЕГО_РУ_СЕРВЕРА:5000 Логин/Пароль по умолчанию: admin / admin (вы можете поменять их в deploy.sh перед установкой).


🌍 Как подключить зарубежный сервер (Каскад)

Без зарубежного сервера ваш VPN будет работать просто как российский прокси. Чтобы получить доступ к заблокированным ресурсам, вам нужен любой дешевый зарубежный VPS (тоже на Ubuntu 22.04).

Как добавить его к нашей связке:

  1. Купите зарубежный VPS (подойдет самый дешевый, можно с 1 ГБ ОЗУ).
  2. Откройте Веб-панель -> вкладка "Серверы".
  3. Нажмите кнопку "⚡ Авто-установка".
  4. Введите IP-адрес зарубежного сервера, логин (root) и пароль.
  5. Нажмите "Начать установку".

Панель сама подключится к нему по SSH, скачает amneziawg-dkms, сгенерирует уникальные параметры обфускации ключей (Jc, Jmin, Jmax и др.), применит их и перезапустит локальный sing-box. Через 15 секунд ваш трафик уже пойдет через этот сервер! Вы можете добавить 5-10 таких серверов, и панель будет распределять трафик между ними.


🤖 RoadMap: Telegram Бот и Монетизация (Выдача подписок)

Система изначально спроектирована так, чтобы её можно было монетизировать.

Как это реализовать (Руководство для разработчиков):

Текущая панель предоставляет REST API. Чтобы сделать автоматическую продажу VPN через Telegram, вам нужно написать небольшого бота (например, на Python/aiogram), который будет общаться с нашей панелью.

Логика работы Telegram-бота:

  1. Пользователь пишет боту /buy и оплачивает подписку.
  2. Бот делает POST-запрос к нашей панели, например: POST http://localhost:5000/api/clients/create
  3. Панель генерирует AmneziaWG .conf файл и возвращает его боту.
  4. Бот присылает пользователю готовый конфиг или QR-код.

Внедрение лимитов (Подписки на месяц): В будущих версиях в clients.json будут добавлены поля expires_at и traffic_limit_gb. Встроенный оркестратор (функция orchestrator_loop в main.py), который сейчас каждую минуту опрашивает сервера, будет заодно парсить статистику по клиентам (awg show awg0 transfer). Если клиент скачал больше разрешенного лимита или его месяц закончился — оркестратор выполнит: awg set awg0 peer <public_key> remove (отключит пользователя до продления подписки).



🛠️ Архитектура и Маршрутизация (Под капотом)

Для гиков: как именно пакеты идут от телефона до назначения и как это логируется?

  1. [Ваш телефон] — использует клиент AmneziaWG. Зашифрованный трафик летит на ваш РУ-сервер.
  2. [awg0 (Входной интерфейс)] — виртуальный интерфейс AmneziaWG на РУ-сервере принимает и расшифровывает пакеты (клиентам выдаются адреса из подсетей 10.99.0.0/24 или 10.255.0.0/24).
  3. [Маршрутизация в tun0] — правила iptables и таблица маршрутизации 100 перехватывают весь трафик с этих подсетей и принудительно заворачивают его в интерфейс tun0 (входной туннель Sing-Box).

    ⚠️ Важно: При перезапуске службы sing-box интерфейс tun0 пересоздается, что сбрасывает маршруты ядра. Чтобы маршруты автоматически восстанавливались, служба vpn-routing.service связана со службой sing-box.service директивой PartOf=sing-box.service.

  4. [Sing-Box (tun0)] — принимает пакеты из tun0, определяет правила маршрутизации (зона .ru -> direct, остальное -> Select-Outbound).
  5. [Выход наружу / Логи] — в логах Sing-box (journalctl -u sing-box) отображается точный путь пакетов по их outbound-тегам:
    • direct — трафик идет напрямую в интернет через основной физический интерфейс VPS (например, ens3 или eth0).
    • ep-de (или другой ep-* тег) — трафик упаковывается в WireGuard-туннель и уходит на выбранный зарубежный VPS.
  6. [Оркестратор] — скрипт Python, который раз в минуту проверяет зарубежные сервера и переключает активный эндпоинт в Select-Outbound через Clash API.
  7. [Зарубежный VPS] — принимает трафик из туннеля, выполняет NAT и отправляет в открытый интернет.

📜 История изменений и исправлений (Changelog)

Обновление от 21.05.2026

  • Починена маршрутизация трафика (Утечка в открытый интернет): Ранее awg-server выдавал клиентам IP из подсети 10.99.0.0/24, а правила iptables ожидали только 10.255.0.0/24. Добавлены обе подсети, теперь трафик жестко заворачивается в tun0 (Sing-Box) и маршрутизируется за рубеж.
  • Интеграция awg-server:
    • Исправлен эндпоинт получения конфигурации (/api/clients/{id}/configuration вместо /config).
    • Добавлена генерация уникального UUID при создании клиента через панель, так как бинарник awg-server на Go требует строгий формат ID.
  • Надежная сборка ядра (DKMS): Скрипт deploy.sh теперь гарантированно устанавливает модуль ядра amneziawg-dkms на bridge-сервер. Добавлена принудительная установка обеих версий заголовков ядра (linux-headers-generic и linux-headers-KVER) и автоматический modprobe.

Сделано с любовью к свободе интернета!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors