2026-05-25 17:47:45 +03:00
2026-05-28 15:21:55 +03:00
2026-05-27 23:56:48 +03:00
2026-05-27 13:53:30 +03:00
2026-05-26 12:48:58 +03:00
2026-05-26 16:04:04 +03:00
2026-05-27 13:53:30 +03:00

Remnawave Minishop

Remnawave Minishop

Remnawave Minishop - Telegram-бот и Web App (Mini App) для продажи и управления подписками панели Remnawave. Бот обрабатывает регистрацию, оплату, продление, пробный период, промокоды, рефералов и поддержку в чате. Web App показывает ссылку подключения, срок действия, трафик, оплату, устройства и вход по Telegram Mini Apps initData, Telegram OAuth / OpenID Connect и одноразовому email-коду.

Проект является переработанным форком kavore/remnawave-tg-shop. Для переноса данных из прежнего стека и других ботов используйте раздел миграций.

Возможности

Для пользователей:

  • регистрация с выбором русского или английского языка;
  • просмотр статуса подписки, даты окончания, ссылки подключения и трафика;
  • покупка подписок, пакетов трафика, обычная и premium-докупка трафика, докупка устройств по настроенному каталогу тарифов;
  • Web App / Mini App с входом через Telegram или email;
  • встроенные инструкции установки в Mini App: личный экран /install и публичная ссылка /s/<token> для передачи инструкции;
  • пробный период, промокоды и реферальная программа;
  • оплата через YooKassa, FreeKassa, Platega, SeverPay, Wata, CryptoPay, Heleket и Telegram Stars;
  • тикеты поддержки в Web App и внешняя ссылка на поддержку;
  • раздел "Мои устройства" при включенном MY_DEVICES_SECTION_ENABLED.

Для администраторов:

  • админ-панель для пользователей из ADMIN_IDS (только при входе через Telegram, не для аккаунтов только с email);
  • статистика пользователей, подписок, платежей и синхронизации с Remnawave;
  • список пользователей с поиском, фильтрами и колонкой premium-трафика;
  • блокировка пользователей, поддержка через тикеты, рассылки, промокоды, логи действий и настройка разрешенных параметров приложения поверх .env;
  • редактор JSON-каталога тарифов с моделями на срок/по трафику, Internal Squads, premium-сквадами и HWID-пакетами;
  • настройки инструкций подключения: чтение конфига Subscription Page из Remnawave Panel, опциональное JSON-переопределение и переключатель поведения кнопок бота;
  • ручная синхронизация пользователей и подписок с панелью.

Документация

Совместимость

Интеграция с API панели Remnawave (вебхуки, пользователи, подписки, статистика в админке и т.д.) протестирована на панели Remnawave версии > 2.7.0. Более старые версии могут работать частично или не работать из‑за изменений в API.

Стек

Сборка и runtime задаются deploy/docker/Dockerfile и docker-compose.yml; точные версии пакетов — в backend/requirements.txt и frontend/package.json.

Слой Технологии
Backend Python 3.12, aiogram 3.x (Telegram), aiohttp (HTTP и Web App), SQLAlchemy 2 async, asyncpg, Pydantic / pydantic-settings, httpx, платёжные SDK (в т.ч. YooKassa, aiocryptopay), PyJWT
Данные PostgreSQL 17 (сервис postgres в Compose) и Redis 7 (сервис redis)
Сборка Web App Node.js 22, Svelte 5, Vite, Tailwind CSS 4; артефакты попадают в шаблоны backend/bot/app/web/templates/

Локальная разработка без Docker возможна при установленных Python 3.12, PostgreSQL и (для пересборки фронта) Node 22; типичный сценарий — всё через Compose.

Быстрый старт

Требования:

  • Docker и Docker Compose;
  • рабочая панель Remnawave версии > 2.7.0 (см. раздел «Совместимость»);
  • токен Telegram-бота;
  • публичные домены для webhook и Mini App.
git clone https://github.com/3252a8/remnawave-minishop
cd remnawave-minishop
cp .env.example .env
nano .env
docker compose up -d --build
docker compose logs -f backend worker frontend

Минимально заполните в .env:

  • BOT_TOKEN - токен Telegram-бота;
  • ADMIN_IDS - Telegram ID администраторов через запятую;
  • WEBHOOK_BASE_URL - публичный URL вебхуков;
  • POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB - доступы PostgreSQL;
  • WEBAPP_ENABLED=True - включает Web App и админку для первого входа;
  • WEBAPP_SESSION_SECRET, WEBHOOK_SECRET_TOKEN - стабильные секреты;
  • SUBSCRIPTION_MINI_APP_URL - публичный HTTPS URL Mini App/frontend, например https://app.domain.com/;
  • PANEL_API_URL, PANEL_API_KEY, PANEL_WEBHOOK_SECRET - доступ к Remnawave;
  • остальные настройки удобнее задать в Web App админке.

После первого входа в админку настройте тарифы, платежные провайдеры, внешний вид, поддержку, уведомления и инструкции подключения через UI. Инструкции установки включены по умолчанию, читают Subscription Page config из Remnawave Panel и при проблемах с конфигом откатываются к обычной ссылке подключения. Полный справочник env-переменных: docs/configuration/env-vars.md.

Для каталога тарифов используется TARIFFS_CONFIG_PATH со значением по умолчанию data/tariffs.json. Пример формата лежит в data/tariffs.example.json, подробности - в docs/features/tariffs.md.

Если в Docker Compose включаете bind mount ./data:/app/data, заранее создайте каталог и отдайте его пользователю контейнера. Это нужно для сохранения data/tariffs.json, каталога тем data/themes, кеша логотипа Web App и animated emoji:

mkdir -p data/themes data/webapp-logo data/webapp-emoji
touch data/locales-overrides.json
chown -R 10001:10001 data
chmod -R u+rwX data

Полезные команды

# Локальная сборка и запуск
docker compose up -d --build

# Логи приложения
docker compose logs -f backend worker frontend

# Рекомендуемый продакшен-вариант с Caddy
cd deploy/examples/caddy      # или nginx, newt, no-proxy
cp .env.example .env
nano .env
docker compose up -d

# Запуск из готового образа с конкретным тегом
IMAGE_TAG=3.1.0 docker compose up -d

Для продакшен-запуска удобнее брать готовые папки из deploy/examples, а читать каноничные инструкции в docs/getting-started/deployment.md. Предпочтительный вариант для обычного публичного сервера - Caddy: он сам выпускает и продлевает HTTPS-сертификаты. В папках рядом с compose лежат только конфиги и короткие ссылки на документацию.

Имена образов для релизов:

  • ghcr.io/3252a8/remnawave-minishop-backend
  • ghcr.io/3252a8/remnawave-minishop-worker
  • ghcr.io/3252a8/remnawave-minishop-frontend
  • docker.io/3252a8/remnawave-minishop-backend
  • docker.io/3252a8/remnawave-minishop-worker
  • docker.io/3252a8/remnawave-minishop-frontend

Сборка и публикация сразу в GHCR и Docker Hub:

docker login ghcr.io
docker login docker.io
IMAGE_TAG=v3.4.3 bash scripts/docker-build-push-images.sh

Поддержать проект

  • Crypto: USDT/Other ERC-20 0xeD506D44aae634fEc0E01C8835744fBedb7B2a44 (Ethereum/Polygon/Gnosis)
S
Description
Remnawave shop with webapp and tg bot. Flexible tariffs, custom themes and email auth
Readme MIT
8.3 MiB
Languages
JavaScript 51.5%
Python 36.5%
Svelte 7.7%
CSS 3.4%
Shell 0.5%
Other 0.2%