Repository navigation
Releases: valentinvelnesev-alt/vpn-panel
Release list
VPN Panel 1.5.2
VPN Panel 1.5.2
Проверка подключения к Remnawave стала надёжнее.
У некоторых сборок Remnawave эндпоинт /api/system/metadata отдаёт 404, из-за чего кнопка «Проверить подключение» ругалась «Объект не найден», хотя панель могла работать с API. Теперь проверка пробует несколько системных эндпоинтов (metadata, health, stats) и считает подключение рабочим, если ответил любой. Если не отвечает ни один — понятное сообщение, что по адресу нет API Remnawave.
Обновление:
cd vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
VPN Panel 1.5.1
VPN Panel 1.5.1
Исправление подключения к Remnawave.
Если в поле адреса Remnawave вставляли ссылку страницы входа целиком (например .../auth/login?secret=...), панель не подключалась: запросы уходили на .../auth/login/api/... вместо корня домена, а кнопка «Проверить подключение» не показывала внятного результата. Теперь путь страницы входа отбрасывается автоматически — можно вставлять хоть полный адрес из браузера. Панели, поднятые под своим префиксом, не затрагиваются.
Обновление:
cd vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
VPN Panel 1.5.0
VPN Panel 1.5.0
Редактор приветственного сообщения в панели.
На вкладке «Бот» появилось поле «Приветственное сообщение» — текст первого экрана бота теперь меняется прямо из панели, без правки кода. Поддерживается HTML-разметка и подстановка {brand} (название бота). Пустое поле — стандартное приветствие.
Обновление:
cd vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
VPN Panel 1.4.0
VPN Panel 1.4.0
Быстрая установка: готовые образы вместо сборки на сервере.
Раньше install.sh и update.sh собирали все образы из исходников прямо на сервере — установка pip и сборка фронтенда занимали несколько минут. Теперь образы собирает GitHub Actions и публикует в GHCR, а сервер их просто скачивает. Установка и обновление занимают секунды.
Как это работает: при выходе тега версии CI собирает три образа (panel-api, bot, panel-web) и кладёт в ghcr.io. docker-compose тянет готовые образы, install.sh и update.sh делают pull вместо build. Образы публичные — скачиваются без авторизации.
Сборка из исходников остаётся для форков со своим кодом: BUILD_FROM_SOURCE=1 sudo bash install.sh (и то же для update.sh), сборочный оверрайд — docker-compose.build.yml.
Также исправлено: update.sh делал бэкап базы под неверным пользователем/именем БД и всегда пропускал дамп — теперь берёт реальные значения из .env.
Установка:
git clone https://github.com/valentinvelnesev-alt/vpn-panel vpn-panel && cd vpn-panel && sudo bash install.sh
Обновление:
cd vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
VPN Panel 1.3.1
VPN Panel 1.3.1
Исправление синхронизации пользователей с Remnawave.
Проблема: бот знал только тех пользователей, которых создал сам. Если аккаунт в Remnawave уже существовал (заведён вручную в панели или перенесён при миграции) и у него был указан Telegram ID, бот не распознавал такого человека и при первом обращении создавал второй аккаунт на тот же Telegram ID — появлялись дубли.
Что изменилось: при первом контакте (старт бота, экран «Мои подписки») бот ищет в Remnawave аккаунты по Telegram ID и подхватывает их. Первая покупка продлевает найденный аккаунт, а не заводит новый. Существующая подписка сразу видна в «Моих подписках», пробный период таким пользователям не предлагается. Повторных обращений к Remnawave на каждый старт нет — синхронизация выполняется один раз на пользователя.
Также исправлена адресация подхваченного аккаунта на панелях старее 2.9 (обращение по uuid вместо числового id).
Обновление:
cd vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
Миграция базы (до 0016) применяется автоматически при старте.
VPN Panel 1.3.0
VPN Panel 1.3.0
Крупное обновление: панель и бот стали работать с любой версией Remnawave, добавлены докупка трафика, оформление бота и десятки исправлений в оплате и подписках.
Совместимость с Remnawave
Клиент теперь работает и со старыми панелями (до 2.9, адресация по uuid), и с новыми (2.9+, числовой id) — версия определяется автоматически, настраивать ничего не нужно. Поддержаны панели, спрятанные за проверкой в nginx: секрет доступа можно указать прямо в адресе. Поиск пользователей по Telegram ID и email на старых панелях больше не возвращает всю базу.
Оплата
Исправлен формат запроса к Platega (из-за него оплата картой не проходила). Оплата через Telegram Stars фиксируется до выставления счёта — деньги не теряются, если сервер VPN недоступен в момент оплаты. Убраны платежи-сироты, кнопки провайдеров без реквизитов скрыты. Подтверждение по вебхуку стало мгновенным. Добавлены лимит запросов и подпись вебхуков.
Подписки
Покупка при активном пробном периоде апгрейдит пробный ключ вместо второго аккаунта. Дата в меню, напоминания и сегменты рассылок считаются по актуальному ключу. Скидочные промокоды реально применяются. Автопродление с баланса по каждому ключу. Названия тарифов вместо технических имён.
Докупка трафика
Отдельного метода в Remnawave нет, поэтому покупка поднимает лимит трафика на размер пакета. Пакеты (объём и цена) настраиваются в панели, кнопка в боте появляется только у подписок с лимитом. В форму тарифа добавлен лимит трафика.
Оформление бота
Кастомные премиум-эмодзи на всех кнопках и в тексте, с точными заглушками из набора. Нижняя клавиатура «Меню» и «Помощь». Экран подключения: выбор устройства, приложение, пошаговая инструкция, редиректор happ:// и incy:// через страницу на домене подписок. Картинка над каждым экраном бота — загружается в панели.
Устойчивость
Гонка создания пользователя, зависшие кнопки и трейсбеки на типовых ошибках Telegram, приветствие с фигурными скобками, применение настроек без перезапуска бота, авто-восстановление после сбоев сети, рассылки без дублей и с возобновлением после падения.
Обновление
cd ~/vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
Миграции базы (до 0015) применяются автоматически при старте.
v1.1.2 — Проверка платежей, фиксы триала и обновления
🐛 Важное обновление: платежи и обновление панели
Собрали несколько критичных фиксов, о которых писали в поддержку.
💳 Оплата зависала после QR-кода
Если вебхук от платёжной системы не долетал до панели (нет домена, файрвол, сбой у провайдера) — платёж навсегда оставался «в ожидании», хотя деньги списывались. Подписка не выдавалась, и сделать с этим в боте ничего было нельзя.
Теперь:
- на экране оплаты появилась кнопка «🔄 Проверить оплату» — бот сам спрашивает статус напрямую у провайдера (Platega / RollyPay / CryptoBot) и сразу выдаёт подписку, если оплата прошла
- в фоне работает воркер, который каждые 30 секунд сам перепроверяет все зависшие платежи — подписка выдастся, даже если никто не нажмёт кнопку
🔑 Пробный период без доступа к нодам
В панели не было выбора сквадов для триала — пробные подписки создавались без доступа ни к одному серверу. Добавили выбор сквадов в Бот → Пробный период, как у обычных тарифов.
🖼 Рассылки с фото в режиме «по IP»
Ссылка на фото собиралась неправильно, серверы Telegram не могли её скачать. Починили — адрес теперь определяется верно.
🔧 Обновление через curl больше не обрывается молча
Нашли причину: при curl ... | bash часть команд внутри скрипта («докачивала» пропущенные шаги вроде пересборки и миграций) конфликтовала с самим пайпом — обновление выглядело успешным, но по факту не доезжало до конца.
Теперь команда обновления — скачать, потом выполнить:
cd ~/vpn-panel && curl -fsSL https://raw.githubusercontent.com/valentinvelnesev-alt/vpn-panel/main/update.sh -o update.sh && bash update.sh
Обновление само создаёт бэкап .env и базы, применяет миграции и пересобирает фронтенд — вручную ничего делать не нужно.
Апдейт (в тот же день): если на сервере ранее уже что-то правили руками в update.sh (или просто менялись права/переносы строк), git видел это как локальные изменения и обрывал обновление ошибкой «local changes would be overwritten» — правок вне .env там быть не может, поэтому обновление кода теперь синхронизирует его с репозиторием без такой проверки. Заодно почини риск, что скрипт переписывает сам себя во время выполнения: теперь update.sh перед этим копирует себя во временный файл и работает уже из копии.
Если словили ошибку local changes would be overwritten by merge на update.sh — перекачайте скрипт заново той же командой и запустите ещё раз.
v1.1.1 — Ссылки на юридические документы
🆕 Добавлено
- Кнопки «Политика конфиденциальности» и «Пользовательское соглашение» в профиле бота — ссылки задаются в панели (вкладка «Бот»). Пусто — кнопок нет, ничего не ломается.
v1.1.0 — Множественные подписки, админка в Telegram, RollyPay
Обновление бота: множественные подписки, встроенная админка, новые способы оплаты
🆕 Новое
- Несколько подписок на одного пользователя. Раньше при повторной покупке бот продлевал единственный ключ — теперь каждая покупка тарифа заводит отдельный, независимый ключ. Появился раздел «Мои подписки»: список всех ключей пользователя, у каждого — своя ссылка для подключения, свои устройства и возможность продлить именно его.
- «Мой профиль». Баланс, пополнение кошелька и история покупок собраны в одном месте.
- Админ-панель прямо в Telegram — команда
/admin(доступ настраивается в веб-панели по Telegram ID):- 📊 Статистика: пользователи, финансы, рефералы, рассылки, уведомления
- 📢 Создание рассылки прямо из чата — текст и сегмент аудитории
- 🎟 Создание и просмотр промокодов без захода в браузер
- RollyPay — второй способ оплаты через СБП, включается/выключается в панели.
- Категории тарифов. Админ сам создаёт, переименовывает и удаляет любые категории (например «VPN» и «VPN + LTE») — бот показывает их вкладками в меню тарифов.
- Денежная реферальная программа — двухуровневая процентная комиссия на баланс с каждой оплаты приглашённого (не только с первой), с настройкой процентов в панели.
- Уведомления о продажах в отдельный чат/группу.
🛠 Улучшено
- Обновлённое главное меню бота: более понятная структура (Купить подписку / Мои подписки, Мой профиль / Промокод, Пригласить друга).
- Панель обновления
update.sh— бэкап.envи базы данных перед обновлением, показ списка изменений. - Установка панели: повторный ввод пароля администратора при ошибке вместо остановки скрипта.
🐛 Исправлено
- Ошибка 500 в списке пользователей и в создании подписок (триал и оплаченные) — панель была рассинхронизирована с обновлённым API Remnawave.
- Бот иногда не запускался после нажатия «Запустить» в панели — гонка между сохранением настроек и командой запуска.
- Индикатор статуса бота теперь показывает «запускается…» вместо «остановлен» в момент старта.