Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

austnv/remnawave-minishop

Repository files navigation

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, PayKilla и 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;
  • TRUSTED_PROXIES - оставьте дефолт для Docker/Caddy/Nginx/Newt или укажите IP/CIDR своего reverse proxy, чтобы IP allowlist платежных webhook видел реального провайдера;
  • остальные настройки удобнее задать в Web App админке.

В Remnawave Panel укажите WEBHOOK_URL как публичный адрес Minishop с путем /webhook/panel, например https://app.example.com/webhook/panel. Секрет вебхука задается в самой Remnawave Panel; это же значение вставьте в PANEL_WEBHOOK_SECRET в .env или в Система -> Настройки -> Remnawave Panel в админке.

После первого входа в админку настройте тарифы, платежные провайдеры, внешний вид, поддержку, уведомления и инструкции подключения через 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 этот файл должен быть доступен не только backend и worker, но и одноразовому сервису migrate: мигратор читает каталог тарифов при привязке существующих подписок к тарифу по умолчанию. В текущих compose-файлах весь /app/data уже смонтирован в migrate, backend и worker; если переносите compose вручную, сохраните одинаковый mount для всех трех сервисов.

В compose-примерах /app/data монтируется из папки ./data рядом с docker-compose.yml. Заранее создайте каталог и отдайте его пользователю контейнера. Это нужно для сохранения data/tariffs.json, каталога тем data/themes и кеша логотипа Web App:

mkdir -p data/themes data/webapp-logo data/tariffs
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)

About

Remnawave shop with webapp and tg bot. Flexible tariffs, custom themes and email auth

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • JavaScript 51.4%
  • Python 36.6%
  • Svelte 7.6%
  • CSS 3.4%
  • Shell 0.5%
  • Astro 0.2%
  • Other 0.3%

AltStyle によって変換されたページ (->オリジナル) /