Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NotMyVPN

Telegram-бот выдачи и обновления AmneziaWG-конфигов для VPN-сервера в Болгарии. Доступ по промокоду, управление кнопками, у каждого пользователя свой peer (учёт трафика), срочные/бессрочные подписки, донаты через Telegram Stars.

Часть проекта «Болгарский VPS» (AmneziaWG на сервере в Софии, 169.40.15.171). Бот запускается на том же сервере и управляет пирами интерфейса awg1.

Статус: ✅ в проде

  • Развёрнут на сервере как systemd-сервис vpnbot (режим polling — открытые порты не нужны).
  • Подключён владелец, друзьям раздаётся по промокодам.
  • Версия библиотеки: python-telegram-bot==21.6.

Как это работает

Telegram  ⇄  vpnbot.py (polling)  ⇄  SQLite (vpnbot.db)
                     │
                     ├─ создаёт/удаляет peer на awg1  (awg set … + правка awg1.conf)
                     ├─ собирает .conf клиента: ключи юзера + AllowedIPs
                     │     • allowlist → build_allowlist.py (РФ напрямую, зарубежное в VPN)
                     │     • full tunnel → 0.0.0.0/0, ::/0
                     └─ фоновая проверка сроков раз в час (напоминание/грейс/отключение)
  • БД vpnbot.db: таблицы users (tg_id, имя, ip, ключи, режим, план, срок), codes, donations.
  • Учёт трафика — каждый юзер = отдельный peer, видно в awg show awg1 и в боте.
  • Срочные подписки: за 3 дня — напоминание, в день истечения — грейс, +3 дня — peer отключается (awg set … remove + правка конфига). Бессрочных не трогает.

Типы доступа (зашиты в промокод)

  • ♾️ lifetime — навсегда (старая база и друзья — все такие; миграция БД ставит им lifetime автоматически).
  • limited — 30 дней, с продлением.

Меню пользователя (кнопки)

📱 Allowlist · 🌍 Full tunnel · 🔄 Обновить конфиг · 📊 Мой трафик (только свой) · 📖 Инструкция · 💜 Поддержать (Telegram Stars) · 💎 Продлить (у срочных).

Админ (только ADMIN_ID)

  • Кнопки: ⚙️ Админ-панель → новый код (тип выбирается), список кодов, юзеры, общий трафик.
  • Команды: /grant <tg_id> 30 (продлить на 30 дн), /grant <tg_id> lifetime, /revoke <tg_id>.

Установка / деплой

  1. Создай бота: @BotFather/newbotTOKEN.
  2. Свой Telegram-ID: @userinfobotId: ….
  3. Залей файлы на сервер в /root/vpnbot/ и:
    bash /root/vpnbot/setup.sh                  # venv + python-telegram-bot + systemd
    cp config.env.example /root/vpnbot/config.env
    nano /root/vpnbot/config.env                # впиши BOT_TOKEN и ADMIN_ID (НЕ коммить!)
    systemctl enable --now vpnbot
    journalctl -u vpnbot -f
    
    Деплой обновления: scp vpnbot.py root@169.40.15.171:/root/vpnbot/ && ssh … systemctl restart vpnbot.

Как пользуется друг

  1. Открывает бота → присылает промокод.
  2. Жмёт 📱 Allowlist или 🌍 Full tunnel → получает файл .conf (или текст).
  3. Импортирует в Amnezia (тип AmneziaWG) → подключается.
  4. Если зарубежное перестало открываться — жмёт 🔄 Обновить.

Файлы

Файл Что
vpnbot.py сам бот
setup.sh установка (venv + зависимость + systemd-юнит)
config.env.example шаблон конфига (без секретов)
.gitignore что НЕ коммитим (секреты, БД, клиентские конфиги)
SECURITY.md модель безопасности и чек-лист
config.env локально/на сервере, не в git — токен и admin id

Безопасность

Кратко: секреты (config.env, *.db, клиентские *.conf) не коммитятся — см. .gitignore. Реальные креды держим вне репозитория и вне синхронизируемых папок. Подробности и чек-лист — в SECURITY.md.

Git

# репозиторий: git@github.com:xMinor-1/NotMyVPN.git (ветка main)
git add -A && git commit -m "..."
git push                            # секреты исключены .gitignore — проверь: git status --ignored

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages