Skip to content

Releases: valentinvelnesev-alt/vpn-panel

VPN Panel 1.5.2

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 15 Sep 21:07

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

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 15 Sep 21:02

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

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 15 Sep 11:44

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

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 14 Sep 19:12

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

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 13 Sep 20:24

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

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 11 Sep 15:39

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 — Проверка платежей, фиксы триала и обновления

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 03 Sep 14:36

🐛 Важное обновление: платежи и обновление панели

Собрали несколько критичных фиксов, о которых писали в поддержку.

💳 Оплата зависала после 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 — перекачайте скрипт заново той же командой и запустите ещё раз.

👉 https://github.com/valentinvelnesev-alt/vpn-panel

v1.1.1 — Ссылки на юридические документы

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 28 Aug 08:09

🆕 Добавлено

  • Кнопки «Политика конфиденциальности» и «Пользовательское соглашение» в профиле бота — ссылки задаются в панели (вкладка «Бот»). Пусто — кнопок нет, ничего не ломается.

v1.1.0 — Множественные подписки, админка в Telegram, RollyPay

Choose a tag to compare

@valentinvelnesev-alt valentinvelnesev-alt released this 27 Aug 15:28

Обновление бота: множественные подписки, встроенная админка, новые способы оплаты

🆕 Новое

  • Несколько подписок на одного пользователя. Раньше при повторной покупке бот продлевал единственный ключ — теперь каждая покупка тарифа заводит отдельный, независимый ключ. Появился раздел «Мои подписки»: список всех ключей пользователя, у каждого — своя ссылка для подключения, свои устройства и возможность продлить именно его.
  • «Мой профиль». Баланс, пополнение кошелька и история покупок собраны в одном месте.
  • Админ-панель прямо в Telegram — команда /admin (доступ настраивается в веб-панели по Telegram ID):
    • 📊 Статистика: пользователи, финансы, рефералы, рассылки, уведомления
    • 📢 Создание рассылки прямо из чата — текст и сегмент аудитории
    • 🎟 Создание и просмотр промокодов без захода в браузер
  • RollyPay — второй способ оплаты через СБП, включается/выключается в панели.
  • Категории тарифов. Админ сам создаёт, переименовывает и удаляет любые категории (например «VPN» и «VPN + LTE») — бот показывает их вкладками в меню тарифов.
  • Денежная реферальная программа — двухуровневая процентная комиссия на баланс с каждой оплаты приглашённого (не только с первой), с настройкой процентов в панели.
  • Уведомления о продажах в отдельный чат/группу.

🛠 Улучшено

  • Обновлённое главное меню бота: более понятная структура (Купить подписку / Мои подписки, Мой профиль / Промокод, Пригласить друга).
  • Панель обновления update.sh — бэкап .env и базы данных перед обновлением, показ списка изменений.
  • Установка панели: повторный ввод пароля администратора при ошибке вместо остановки скрипта.

🐛 Исправлено

  • Ошибка 500 в списке пользователей и в создании подписок (триал и оплаченные) — панель была рассинхронизирована с обновлённым API Remnawave.
  • Бот иногда не запускался после нажатия «Запустить» в панели — гонка между сохранением настроек и командой запуска.
  • Индикатор статуса бота теперь показывает «запускается…» вместо «остановлен» в момент старта.