CI License Stars

VPN-панель, которую
можно понять за вечер

Xray-core, Reality, Hysteria2, Telegram-бот и платежи — в одном небольшом репозитории на Python. Без Docker, без чужой закрытой панели под капотом, без разбора чужого фреймворка перед первым коммитом.

$ git clone https://github.com/devsavsis/mbs-panel.git && cd mbs-panel && sudo bash install.sh
01

Телеграм-бот как основа

Не уведомления сбоку, а весь флоу покупки и управления — тарифы, гифт-коды, авто-отключение по истечении раз в 90 секунд, а не раз в полчаса.

02

Админка без фреймворков

Чистый HTML/CSS/JS. Дашборд, карточка юзера с историей и устройствами, ноды с полным редактированием, трафик по Stats API самого Xray.

03

Мультинодовость в одну команду

Добавил ноду в панели — получил одну bash-команду. Вставил на чистый сервер — сам ставит Xray, генерит ключи, регистрируется.

04

Протоколы на выбор

VLESS Reality (TCP / gRPC / XHTTP), VLESS WS+TLS с реальным Let's Encrypt сертификатом, Hysteria2 отдельным процессом.

05

HWID-лимит устройств

Ограничение числа устройств на подписку через заголовок клиента — опционально, как у Remnawave, но необязательно.

06

Платежи из коробки

ЮKassa и Platega — опционально. Без них бот просто выдаёт подписку по кнопке, для своих или для теста.

Чем MBS Panel отличается

Честно, без "мы лучше всех" — Remnawave и Marzban старше, крупнее и во многом функциональнее. Вот где реальная разница, а не маркетинг.

ФункцияMBS PanelRemnawaveMarzban
Telegram-бот — основной UX покупки✓только уведомленияуведомления + команды
HWID-лимит устройств✓✓—
База данныхSQLitePostgreSQLна выбор
Установка1 bash-командаDocker Composebash-скрипт / Docker
Backup & Restore в самой панелив разработкеcommunity toolscommunity tools
Xray config pre-flight проверка✓full-featuredтолько JSON-синтаксис
ЛицензияMITAGPL-3.0AGPL-3.0

Данные по Remnawave/Marzban — из их собственной документации на момент публикации (docs.rw), проверяй актуальность сам, проекты активно развиваются.

Что происходит под капотом

Панель и первая VPN-нода живут на одном сервере. Дополнительные ноды подключаются по SSH — без агента, без открытых портов управления наружу.

Telegram / браузер │ ▼ bot.py (aiogram) ──┐ api.py (FastAPI) ──┼──▶ SQLite │ │ ▼ ▼ локальный Xray SSH ──▶ Xray на удалённой ноде (management-ключ, генерится сам)
1Устанавливаешь на чистый сервер — скрипт сам ставит Xray, nginx, certbot, генерит Reality-ключи, поднимает бота и API systemd-юнитами.
2Бот — точка входа для юзеров: тарифы, гифт-коды, оплата (если включена). Подписка выдаётся сразу и добавляется в клиент по одной ссылке.
3Админка — точка входа для тебя: ноды, юзеры, устройства, трафик по Stats API самого Xray. Всё через браузер, ничего руками на сервере.
4Новую ноду добавляешь в панели — получаешь одну bash-команду. Вставляешь на чистый сервер, она сама ставит Xray и регистрируется — SSH-ключ панель добавляет туда сама, пароль не спрашивает ни разу.
Python 3.10+FastAPIaiogram 3SQLite (WAL)paramikoXray-core

Чистый сервер → готовая панель за одну команду

Код открыт, MIT — клонируешь и ставишь на свой сервер, ничего не покупаешь и никуда не регистрируешься.

1Подними чистый сервер — Ubuntu 22.04/24.04 или Debian 11/12, root-доступ — и три DNS A-записи на его IP: под панель, под подписку и под первую VPN-ноду.
2Склонируй репозиторий и запусти install.sh от root — команда ниже.
3Скрипт спросит домены и пароль админки, сам поставит Xray/nginx/certbot, сгенерит ключи и выпустит сертификаты.
4Готово: бот отвечает в Telegram, сайт с подпиской и админка — на своих доменах. Обновления потом — командой mbs update.
$ git clone https://github.com/devsavsis/mbs-panel.git && cd mbs-panel && sudo bash install.sh

Открытый исходник, MIT

Изначально писалось под конкретный проект — получилось достаточно универсально, чтобы выложить как есть. Issues и PR приветствуются.