Система двухфакторной аутентификации для VPN подключений на роутерах MikroTik.
Приложение обеспечивает безопасное подключение к VPN через подтверждение в Telegram боте или Mini-App, автоматически управляет пользователями и правилами firewall в MikroTik роутере.
mikrotik-2fa-vpn/
├── plans/ # Планы и документы планирования
├── docs/ # Документация проекта
├── backend/ # Backend приложение (FastAPI)
│ ├── api/ # API endpoints
│ ├── models/ # Модели базы данных
│ ├── services/ # Бизнес-логика
│ ├── database/ # Конфигурация БД
│ └── migrations/ # Миграции БД
├── frontend/ # Frontend приложение (React/Vue)
│ ├── src/
│ │ ├── components/ # UI компоненты
│ │ ├── pages/ # Страницы приложения
│ │ ├── services/ # API клиенты
│ │ └── utils/ # Утилиты
│ ├── public/ # Статические файлы
│ └── static/ # Статические ресурсы
├── telegram_bot/ # Telegram бот
│ ├── handlers/ # Обработчики команд
│ ├── middleware/ # Middleware
│ └── utils/ # Утилиты
├── config/ # Конфигурационные файлы
├── scripts/ # Вспомогательные скрипты
└── tests/ # Тесты
- Регистрация пользователей через Telegram с одобрением администратором
- Запрос подключения к VPN через Telegram бот
- Автоматическое подтверждение подключения (двухфакторная аутентификация)
- Управление существующими пользователями MikroTik (включение/отключение)
- Поддержка нескольких MikroTik аккаунтов на пользователя
- Управление правилами firewall в MikroTik
- Напоминания о продолжении работы
- Веб-интерфейс администратора для полной настройки системы
- Мастер настройки с пошаговым руководством при первом запуске
- Управление базой данных из веб-интерфейса (скачивание/загрузка резервных копий)
1. Админ создает пользователя в MikroTik User Manager (вручную)
↓
2. Пользователь регистрируется через Telegram бот
↓
3. Админ одобряет регистрацию в веб-интерфейсе
↓
4. Админ привязывает MikroTik username к пользователю (можно несколько)
↓
5. Пользователь запрашивает VPN через бот → система АКТИВИРУЕТ аккаунт в MikroTik
↓
6. Пользователь подключается к VPN стандартными средствами
↓
7. Система обнаруживает подключение → запрашивает подтверждение (2FA)
↓
8. При подтверждении включается firewall правило (опционально)
↓
9. Система отправляет напоминания о продлении сессии
🔥 Firewall правила (опционально): система ищет/показывает правила для “доп. защиты” по наличию строки 2FA в comment на MikroTik (например: 2FA user vpn_user_ivan). Если 2FA в комментарии нет — правило не будет найдено.
📖 Подробное описание / Full workflow: RU | EN
- Backend: Python 3.11+, FastAPI
- Database: SQLite 3 (встроенная)
- Frontend: React 18+ или Vue 3+
- Telegram: python-telegram-bot / aiogram
- MikroTik: SSH (paramiko/asyncssh), REST API
- Интернационализация: Поддержка русского и английского языков (i18n)
- ОС: Debian 12 (Bookworm) или Debian 13 (Trixie)
- Python 3.11+ (входит в Debian 12+)
- SQLite 3.x (встроен в Python)
- Минимум 512MB RAM (рекомендуется 1GB+)
- Минимум 1GB свободного места на диске
wget -O install.sh "https://raw.githubusercontent.com/netcore-24/2FA-Mikrotik-VPN/main/install.sh"
sudo bash install.shСкрипт сам установит зависимости, развернёт проект, запустит сервис и выведет в терминале ссылку вида http://<IP>:8000 (веб уже будет готов).
Логин/пароль администратора (после установки):
- Во время установки они выводятся в терминал.
- Также могут быть сохранены в файл (по умолчанию):
/opt/mikrotik-2fa-vpn/.admin_credentials.txt
(если вы менялиINSTALL_DIR, путь будет<INSTALL_DIR>/.admin_credentials.txt)
Показать сохранённые данные:
sudo cat /opt/mikrotik-2fa-vpn/.admin_credentials.txtПосле того как сохранили логин/пароль — удалите файл:
sudo rm -f /opt/mikrotik-2fa-vpn/.admin_credentials.txtПодробности / Details: RU | EN
Все зависимости включены в проект:
- requirements.txt - Python зависимости
- package.json - Frontend зависимости (если требуется)
- install.sh - список системных пакетов для Debian
- Как работает система / Workflow: RU | EN
- Диаграммы / Diagrams: RU | EN
- Telegram сообщения / Telegram messages: RU | EN
- Развертывание / Deployment: RU | EN
- Требования / Requirements: RU | EN
- Архитектура / Architecture: RU | EN
- Справочник настроек / Settings reference: RU | EN
- Мастер настройки / Setup wizard: RU | EN
- База данных / Database management: RU | EN
- i18n: RU | EN
Система поддерживает следующие языки:
- 🇷🇺 Русский (ru) - язык по умолчанию
- 🇬🇧 Английский (en)
Язык определяется автоматически из параметра запроса ?lang=, заголовка HTTP Accept-Language или настройки по умолчанию.
- DonationAlerts: donationalerts.com/r/netcore_24
Этот проект распространяется под лицензией PolyForm Noncommercial 1.0.0 (только некоммерческое/ознакомительное использование). См. файл LICENSE для деталей. Коммерческое использование — по отдельной лицензии у автора: см. COMMERCIAL_LICENSE.md.
Two-factor authentication system for VPN access on MikroTik routers.
wget -O install.sh "https://raw.githubusercontent.com/netcore-24/2FA-Mikrotik-VPN/main/install.sh"
sudo bash install.shThe installer will set up dependencies, deploy the project, start the service, and print a URL like http://<IP>:8000.
Admin login/password (after install):
- Printed to the terminal during installation.
- May also be saved to a file (default):
/opt/mikrotik-2fa-vpn/.admin_credentials.txt
(if you changedINSTALL_DIR, the path is<INSTALL_DIR>/.admin_credentials.txt)
Show saved credentials:
sudo cat /opt/mikrotik-2fa-vpn/.admin_credentials.txtAfter you store them somewhere safe, remove the file:
sudo rm -f /opt/mikrotik-2fa-vpn/.admin_credentials.txt- DonationAlerts: donationalerts.com/r/netcore_24
This project is licensed under PolyForm Noncommercial 1.0.0 (noncommercial/evaluation use only). See LICENSE. Commercial use requires a separate license from the author — see COMMERCIAL_LICENSE.md.