Add WATA webhook listener with RSA signature verification
🚀 Remnawave Bedolaga Bot
🤖 Современный Telegram-бот для управления VPN подписками через Remnawave API
Полнофункциональное решение с управлением пользователями, платежами и администрированием
🚀 Быстрый старт • 📖 Функционал • 🐳 Docker • 💻 Локальная разработка • 💬 Поддержка
🧪 Тестирование бота
💬 Bedolaga Chat - Для общения, вопросов, предложений
🌟 Почему Bedolaga?
Бот Бедолага не добрый и не милый. Он просто делает вашу работу вместо вас, принимает оплату, выдаёт подписки, интегрируется с Remnawave и тихо ненавидит всех, кто ещё не подключил его.
Вы хотите продавать VPN — Бедолага позволит это делать. Вы хотите спать — он позволит и это.
⚡ Полная автоматизация VPN бизнеса
- 🎯 Готовое решение - разверни за 5 минут, начни продавать сегодня
- 💰 Многоканальные платежи - Telegram Stars + Tribute + CryptoBot + YooKassa (СБП + карты) + MulenPay + PayPalych (СБП + карты) + WATA
- 🔄 Автоматизация 99% - от регистрации до продления подписок
-
- 📱 MiniApp лк - личный кабинет с возможностью покупки/продления подписки
- 📊 Детальная аналитика - полная картина вашего бизнеса
- 💬 Уведомления в топики об: Активация триала 💎 Покупка подписки 🔄 Конверсия из триала в платную ⏰ Продление подписки 💰 Пополнение баланса 🚧 Включении тех работ ♻️ Появлении новой версии бота
🎛️ Гибкость конфигурации
- 🌍 Умный выбор серверов - автоматический пропуск при одном сервере, мультивыбор
- 📱 Управление устройствами - от 1 до неограниченного количества
- 📊 Режимы продажи трафика - фиксированный лимит или выбор пакетов
- 🎁 Промо-система - коды на деньги, дни подписки, триал-периоды
- 🔧 Гибкие тарифы - от 5GB до безлимита, от 14 дней до года
- 🛒 Умная корзина - сохранение параметров подписки при недостатке баланса
💪 Enterprise готовность
- 🏗️ Современная архитектура - AsyncIO, PostgreSQL, Redis, модульная структура
- 🔒 Безопасность - интеграция с системой защиты панели через куки-аутентификацию
- 📈 Масштабируемость - от стартапа до крупного бизнеса
- 🔧 Мониторинг - автоматическое управление режимом тех. работ
- 🛡️ Защита панели - поддержка remnawave-reverse-proxy
- 🗄️ Бекапы/Восстановление - автобекапы и восстановление бд прямо в боте с уведомлениями в топики
- ✍️ Проверка на подписку - проверяет подписку на канал
- 🔄 Автосинхронизация - фоновая синхронизация серверов с Remnawave по расписанию
📚 Поддерживаемые методы авторизации
| Метод | Заголовок | Описание |
|---|---|---|
| API Key | X-Api-Key: your_api_key | Стандартный API ключ |
| Bearer Token | Authorization: Bearer token | Классический Bearer token |
| Basic Auth | X-Api-Key: Basic base64(user:pass) | Basic Authentication |
| eGames Cookies | Cookies в формате key:value | Для панелей eGames |
🚀 Быстрый старт
🧙♂️ Автоустановка через install_bot.sh
Скрипт-установщик берёт на себя подготовку окружения, настройку конфигурации и дальнейшее обслуживание бота. Он работает поверх Docker Compose и требует заранее установить:
- Docker Engine и Docker Compose plugin (2.20+);
- Git и Bash (по умолчанию есть в большинстве Linux дистрибутивов);
openssl(используется для генерации токенов, но не обязателен — при отсутствии скрипт используетurandom).
# 1. Скачай репозиторий
git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot.git
cd remnawave-bedolaga-telegram-bot
# 2. Создай необходимые директории
mkdir -p ./logs ./data ./data/backups ./data/referral_qr
chmod -R 755 ./logs ./data
sudo chown -R 1000:1000 ./logs ./data
# 3. Запусти мастер установки
chmod +x install_bot.sh
./install_bot.sh
На первом запуске мастер:
- Спросит путь установки и сохранит его в
./.bot_install_state— можно оставлять путь по умолчанию (текущая директория). - Поможет собрать
.env: запросит обязательные токены (бот, Remnawave, админы), при необходимости сгенерирует Web API и PostgreSQL пароли, предложит авторизацию Basic Auth или eGames secret. - Подготовит структуру каталогов (
logs,data,backupsи т. д.) и проверит, что Docker готов к запуску. - Создаст (или обновит)
docker-compose.yml, настроит внешнюю сетьbot_network, чтобы дальнейшие сервисы (например, Caddy) могли подключаться. - Запустит контейнеры бота, PostgreSQL и Redis и выведет их статус.
После установки повторный запуск ./install_bot.sh открывает интерактивное меню управления:
- 📊 Мониторинг состояния контейнеров и ресурсов
- ⚙️ Управление сервисами (запуск/остановка/пересборка)
- 📋 Просмотр и поиск по логам
- 🔄 Обновление проекта из Git с автоматическим бэкапом
- 💾 Создание и 📦 восстановление резервных копий (включая базу данных)
- 🧹 Очистка логов, бэкапов и образов
- 🌐 Помощник настройки обратного прокси Caddy (webhook + miniapp, обновление
docker-compose, перезагрузка) - ⚙️ Конфигуратор
.env(редактирование, пересоздание, маскировка секретов)
💡 Скрипт можно запускать сколько угодно раз — он хранит путь установки и понимает, когда конфигурация уже создана. Меню работает и по SSH (достаточно TTY), а для скриптов можно передать путь установки через stdin.
🐳 Ручной Docker запуск
Если не хочется пользоваться мастером, можно настроить всё вручную:
# 1. Скачай репозиторий
git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot.git
cd remnawave-bedolaga-telegram-bot
# 2. Настрой конфиг
cp .env.example .env
nano .env # Заполни токены и настройки
# 3. Создай необходимые директории
mkdir -p ./logs ./data ./data/backups ./data/referral_qr
chmod -R 755 ./logs ./data
sudo chown -R 1000:1000 ./logs ./data
# 4. Запусти всё разом
docker compose up -d
# 5. Проверь статус
docker compose logs
🌐 Настройка обратного прокси и доменов
Этот раздел описывает полноценную ручную настройку обратного прокси для двух разных доменов: отдельный домен для вебхуков (
hooks.example.com) и отдельный домен для мини-приложения (miniapp.example.com). Оба прокси-сервера (Caddy или nginx) должны работать в одной Docker-сети с ботом, чтобы обращаться к сервису по внутреннему имениremnawave_botбез проброса портов наружу.
1. Планирование доменов и переменных окружения
- Добавьте в DNS по A/AAAA-записи для обоих доменов на IP сервера, где запущен бот.
- Убедитесь, что входящий трафик на 80/tcp и 443/tcp открыт (брандмауэр, облачный фаервол).
- В
.envпропишите корректные URL, чтобы бот формировал ссылки с HTTPS-доменами:WEBHOOK_URL=https://hooks.example.com WEB_API_ENABLED=true WEB_API_ALLOWED_ORIGINS=https://miniapp.example.com MINIAPP_CUSTOM_URL=https://miniapp.example.com
2. Общая Docker-сеть для бота и прокси
docker-compose.yml бота создаёт сеть bot_network. Чтобы внешний прокси видел сервис remnawave_bot, нужно:
# Убедиться, что сеть существует
docker network ls | grep bot_network || docker network create bot_network
# Подключить прокси (если контейнер уже запущен отдельно)
docker network connect bot_network <proxy_container_name>
Если прокси запускается через собственный docker-compose, в файле нужно объявить ту же сеть как внешнюю:
networks:
bot_network:
external: true
3. Ручная установка Caddy в Docker
-
Создайте каталог для конфигурации:
mkdir -p ~/caddy cd ~/caddy -
Сохраните docker-compose-файл
docker-compose.caddy.yml:services: caddy: image: caddy:2-alpine container_name: remnawave_caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config - /root/remnawave-bedolaga-telegram-bot/miniapp:/miniapp:ro - /root/remnawave-bedolaga-telegram-bot/miniapp/redirect:/miniapp/redirect:ro networks: - bot_network volumes: caddy_data: caddy_config: networks: bot_network: external: true -
Создайте
Caddyfileс двумя виртуальными хостами:webhook.domain.com { handle /tribute-webhook* { reverse_proxy remnawave_bot:8081 } handle /cryptobot-webhook* { reverse_proxy remnawave_bot:8081 } handle /mulenpay-webhook* { reverse_proxy remnawave_bot:8081 } handle /pal24-webhook* { reverse_proxy remnawave_bot:8084 } handle /wata-webhook* { reverse_proxy remnawave_bot:8081 } handle /yookassa-webhook* { reverse_proxy remnawave_bot:8082 } handle /health { reverse_proxy remnawave_bot:8081/health } } miniapp.domain.com { encode gzip zstd root * /miniapp file_server @config path /app-config.json header @config Access-Control-Allow-Origin "*" reverse_proxy /miniapp/* remnawave_bot:8080 { header_up Host {host} header_up X-Real-IP {remote_host} } } -
Запустите прокси:
docker compose -f docker-compose.caddy.yml up -d
4. Ручная настройка nginx в Docker
-
Создайте каталог
/opt/nginx-remnawaveи поместите тудаdocker-compose.nginx.yml:services: nginx: image: nginx:1.25-alpine container_name: remnawave_nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./certs:/etc/ssl/private:ro - ./miniapp:/var/www/remnawave-miniapp:ro networks: - bot_network networks: bot_network: external: true -
Пример
nginx.conf:events {} http { include /etc/nginx/mime.types; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; upstream remnawave_bot_hooks { server remnawave_bot:8081; } upstream remnawave_bot_yookassa { server remnawave_bot:8082; } upstream remnawave_bot_api { server remnawave_bot:8080; } server { listen 80; listen 443 ssl http2; server_name hooks.example.com; ssl_certificate /etc/ssl/private/hooks.fullchain.pem; ssl_certificate_key /etc/ssl/private/hooks.privkey.pem; location = /webhook { proxy_pass http://remnawave_bot_hooks; } location /tribute-webhook { proxy_pass http://remnawave_bot_hooks; } location /cryptobot-webhook { proxy_pass http://remnawave_bot_hooks; } location /mulenpay-webhook { proxy_pass http://remnawave_bot_hooks; } location /wata-webhook { proxy_pass http://remnawave_bot_hooks; } location /pal24-webhook { proxy_pass http://remnawave_bot:8084; } location /yookassa-webhook { proxy_pass http://remnawave_bot_yookassa; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } server { listen 80; listen 443 ssl http2; server_name miniapp.example.com; ssl_certificate /etc/ssl/private/miniapp.fullchain.pem; ssl_certificate_key /etc/ssl/private/miniapp.privkey.pem; root /var/www/remnawave-miniapp; index index.html; location /miniapp/ { proxy_pass http://remnawave_bot_api/miniapp/; proxy_set_header X-API-Key "КЛЮЧ-WEBAPI"; } } }
⚙️ Конфигурация
🔧 Основные параметры
| Настройка | Где взять | Пример |
|---|---|---|
| 🤖 BOT_TOKEN | @BotFather | 1234567890:AABBCCdd... |
| 🔑 REMNAWAVE_API_KEY | Твоя Remnawave панель | eyJhbGciOiJIUzI1... |
| 🌐 REMNAWAVE_API_URL | URL твоей панели | https://panel.example.com |
| 🛡️ REMNAWAVE_SECRET_KEY | Ключ защиты панели | secret_name:secret_value |
| 👑 ADMIN_IDS | Твой Telegram ID | 123456789,987654321 |
🌐 Интеграция веб-админки
Подробное пошаговое руководство по запуску административного веб-API и подключению внешней панели находится в docs/web-admin-integration.md.
📱 Telegram Mini App ЛК
Инструкция по развёртыванию мини-приложения, публикации статической страницы и настройке reverse-proxy доступна в docs/miniapp-setup.md.
📊 Статус серверов в главном меню
| Переменная | Описание | Пример |
|---|---|---|
SERVER_STATUS_MODE |
Режим работы кнопки: disabled, external_link, external_link_miniapp или xray |
xray |
SERVER_STATUS_EXTERNAL_URL |
Прямая ссылка на внешний мониторинг | https://status.example.com |
SERVER_STATUS_METRICS_URL |
URL страницы метрик XrayChecker | https://sub.example.com/metrics |
🛡️ Защита панели Remnawave
Для панелей, защищенных через remnawave-reverse-proxy:
# Для панелей установленных скриптом eGames
REMNAWAVE_SECRET_KEY=XXXXXXX:DDDDDDDD
# Или если ключ и значение одинаковые
REMNAWAVE_SECRET_KEY=secret_key_name
📊 Режимы продажи трафика
Выбираемые пакеты (по умолчанию)
TRAFFIC_SELECTION_MODE=selectable
TRAFFIC_PACKAGES_CONFIG="5:2000:false,10:3500:false,25:7000:false,50:11000:true,100:15000:true,250:17000:false,500:19000:false,1000:19500:true,0:20000:true"
Фиксированный лимит
TRAFFIC_SELECTION_MODE=fixed
FIXED_TRAFFIC_LIMIT_GB=100 # 0 = безлимит
TRAFFIC_PACKAGES_CONFIG="100:15000:true"
💰 Система ценообразования
Цена подписки рассчитывается по формуле: Базовая цена + Стоимость трафика + Доп. устройства + Доп. серверы
Пример расчета для подписки на 180 дней:
- Базовый период: 400₽
- Трафик безлимит: 200₽/мес × 6 мес = 1200₽
- 4 устройства: 50₽/мес × 6 мес = 300₽
- 2 сервера: 100₽/мес × 6 мес = 1200₽
- Итого: 3100₽
📱 Управление устройствами
# Бесплатные устройства в триал подписке
TRIAL_DEVICE_LIMIT=1
# Бесплатные устройства в платной подписке
DEFAULT_DEVICE_LIMIT=3
# Максимум устройств для покупки (0 = без лимита)
MAX_DEVICES_LIMIT=15
👥 Реферальная система
# Включение/выключение реферальной программы
REFERRAL_PROGRAM_ENABLED=true
# Минимальная сумма пополнения для активации бонусов
REFERRAL_MINIMUM_TOPUP_KOPEKS=10000
# Бонус новому пользователю при первом пополнении
REFERRAL_FIRST_TOPUP_BONUS_KOPEKS=10000
# Бонус пригласившему при первом пополнении реферала
REFERRAL_INVITER_BONUS_KOPEKS=10000
# Процент комиссии с последующих пополнений
REFERRAL_COMMISSION_PERCENT=25
🔄 Автосинхронизация Remnawave
# Включение автоматической синхронизации серверов
REMNAWAVE_AUTO_SYNC_ENABLED=true
# Время синхронизации (через запятую, формат HH:MM)
REMNAWAVE_AUTO_SYNC_TIMES=03:00,15:00
🛡️ Мониторинг и техническое обслуживание
# Автоматический режим тех. работ
MAINTENANCE_MODE=false
MAINTENANCE_AUTO_ENABLE=true
MAINTENANCE_CHECK_INTERVAL=30
# Интервал проверки состояния панели (секунды)
MONITORING_INTERVAL=60
🛒 Умная корзина
# Redis для сохранения корзины (требуется)
REDIS_URL=redis://redis:6379/0
🔧 Полная конфигурация .env
# ===============================================
# 🤖 REMNAWAVE BEDOLAGA BOT CONFIGURATION
# ===============================================
# ===== TELEGRAM BOT =====
BOT_TOKEN=
ADMIN_IDS=
SUPPORT_USERNAME=@support
# Уведомления администраторов
ADMIN_NOTIFICATIONS_ENABLED=true
ADMIN_NOTIFICATIONS_CHAT_ID=-1001234567890
ADMIN_NOTIFICATIONS_TOPIC_ID=123
ADMIN_NOTIFICATIONS_TICKET_TOPIC_ID=126
# Автоматические отчеты
ADMIN_REPORTS_ENABLED=false
ADMIN_REPORTS_SEND_TIME=10:00
# Обязательная подписка на канал
CHANNEL_SUB_ID=
CHANNEL_IS_REQUIRED_SUB=false
CHANNEL_LINK=
# ===== DATABASE CONFIGURATION =====
DATABASE_MODE=auto
DATABASE_URL=
# PostgreSQL настройки
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=remnawave_bot
POSTGRES_USER=remnawave_user
POSTGRES_PASSWORD=secure_password_123
# Redis
REDIS_URL=redis://redis:6379/0
# ===== REMNAWAVE API =====
REMNAWAVE_API_URL=https://panel.example.com
REMNAWAVE_API_KEY=your_api_key_here
REMNAWAVE_AUTH_TYPE=api_key
REMNAWAVE_SECRET_KEY=
# Автосинхронизация
REMNAWAVE_AUTO_SYNC_ENABLED=true
REMNAWAVE_AUTO_SYNC_TIMES=03:00,15:00
# Шаблон описания пользователя
REMNAWAVE_USER_DESCRIPTION_TEMPLATE="Bot user: {full_name} {username}"
REMNAWAVE_USER_DELETE_MODE=delete
# ===== ПОДПИСКИ =====
TRIAL_DURATION_DAYS=3
TRIAL_TRAFFIC_LIMIT_GB=10
TRIAL_DEVICE_LIMIT=1
DEFAULT_DEVICE_LIMIT=3
MAX_DEVICES_LIMIT=15
# ===== НАСТРОЙКИ ТРАФИКА =====
TRAFFIC_SELECTION_MODE=selectable
FIXED_TRAFFIC_LIMIT_GB=100
AVAILABLE_SUBSCRIPTION_PERIODS=30,90,180
AVAILABLE_RENEWAL_PERIODS=30,90,180
# ===== ЦЕНЫ (в копейках) =====
BASE_SUBSCRIPTION_PRICE=0
PRICE_14_DAYS=7000
PRICE_30_DAYS=9900
PRICE_60_DAYS=25900
PRICE_90_DAYS=36900
PRICE_180_DAYS=69900
PRICE_360_DAYS=109900
# Скидки для базовых пользователей
BASE_PROMO_GROUP_PERIOD_DISCOUNTS_ENABLED=false
BASE_PROMO_GROUP_PERIOD_DISCOUNTS=60:10,90:20,180:40,360:70
TRAFFIC_PACKAGES_CONFIG="5:2000:false,10:3500:false,25:7000:false,50:11000:true,100:15000:true,0:20000:true"
PRICE_PER_DEVICE=5000
# ===== РЕФЕРАЛЬНАЯ СИСТЕМА =====
REFERRAL_PROGRAM_ENABLED=true
REFERRAL_MINIMUM_TOPUP_KOPEKS=10000
REFERRAL_FIRST_TOPUP_BONUS_KOPEKS=10000
REFERRAL_INVITER_BONUS_KOPEKS=10000
REFERRAL_COMMISSION_PERCENT=25
# ===== АВТОПРОДЛЕНИЕ =====
AUTOPAY_WARNING_DAYS=3,1
DEFAULT_AUTOPAY_ENABLED=true
DEFAULT_AUTOPAY_DAYS_BEFORE=3
MIN_BALANCE_FOR_AUTOPAY_KOPEKS=10000
# ===== ПЛАТЕЖНЫЕ СИСТЕМЫ =====
# Telegram Stars
TELEGRAM_STARS_ENABLED=true
TELEGRAM_STARS_RATE_RUB=1.3
# Tribute
TRIBUTE_ENABLED=false
TRIBUTE_API_KEY=
TRIBUTE_WEBHOOK_PATH=/tribute-webhook
# YooKassa
YOOKASSA_ENABLED=false
YOOKASSA_SHOP_ID=
YOOKASSA_SECRET_KEY=
YOOKASSA_SBP_ENABLED=false
YOOKASSA_WEBHOOK_PATH=/yookassa-webhook
# CryptoBot
CRYPTOBOT_ENABLED=false
CRYPTOBOT_API_TOKEN=
CRYPTOBOT_WEBHOOK_PATH=/cryptobot-webhook
# MulenPay
MULENPAY_ENABLED=false
MULENPAY_API_KEY=
MULENPAY_SECRET_KEY=
MULENPAY_SHOP_ID=
MULENPAY_WEBHOOK_PATH=/mulenpay-webhook
# PayPalych / Pal24
PAL24_ENABLED=false
PAL24_API_TOKEN=
PAL24_SHOP_ID=
PAL24_WEBHOOK_PATH=/pal24-webhook
PAL24_SBP_BUTTON_VISIBLE=true
PAL24_CARD_BUTTON_VISIBLE=true
# WATA
WATA_ENABLED=false
WATA_TOKEN=
WATA_TERMINAL_ID=
WATA_WEBHOOK_PATH=/wata-webhook
WATA_WEBHOOK_HOST=0.0.0.0
WATA_WEBHOOK_PORT=8085
# ===== ИНТЕРФЕЙС И UX =====
ENABLE_LOGO_MODE=true
LOGO_FILE=vpn_logo.png
MAIN_MENU_MODE=default
HIDE_SUBSCRIPTION_LINK=false
CONNECT_BUTTON_MODE=guide
# ===== МОНИТОРИНГ И УВЕДОМЛЕНИЯ =====
MONITORING_INTERVAL=60
ENABLE_NOTIFICATIONS=true
NOTIFICATION_RETRY_ATTEMPTS=3
# ===== СТАТУС СЕРВЕРОВ =====
SERVER_STATUS_MODE=disabled
SERVER_STATUS_EXTERNAL_URL=
SERVER_STATUS_METRICS_URL=
SERVER_STATUS_ITEMS_PER_PAGE=10
# ===== РЕЖИМ ТЕХНИЧЕСКИХ РАБОТ =====
MAINTENANCE_MODE=false
MAINTENANCE_CHECK_INTERVAL=30
MAINTENANCE_AUTO_ENABLE=true
# ===== ЛОКАЛИЗАЦИЯ =====
DEFAULT_LANGUAGE=ru
AVAILABLE_LANGUAGES=ru,en
LANGUAGE_SELECTION_ENABLED=true
# ===== СИСТЕМА БЕКАПОВ =====
BACKUP_AUTO_ENABLED=true
BACKUP_INTERVAL_HOURS=24
BACKUP_TIME=03:00
BACKUP_MAX_KEEP=7
BACKUP_SEND_ENABLED=true
# ===== ПРОВЕРКА ОБНОВЛЕНИЙ БОТА =====
VERSION_CHECK_ENABLED=true
VERSION_CHECK_INTERVAL_HOURS=1
# ===== ЛОГИРОВАНИЕ =====
LOG_LEVEL=INFO
LOG_FILE=logs/bot.log
⭐ Функционал
👤 Для пользователей🧭 Онбординг и доступ
🛒 Умная покупка подписок
🧪 Тестовая подписка
💰 Платежи и баланс
📱 Управление подписками
🛟 Поддержка и самообслуживание
🧩 Бонусы и промо
💎 Промо-группы и скидки
📱 Mini App и гайды
|
⚙️ Для администраторов📊 Аналитика и отчётность
👥 Управление пользователями
🎯 Продажи, маркетинг и удержание
🛟 Поддержка и модерация
🔔 Уведомления и коммуникации
🧰 Обслуживание и DevOps
🗄️ Бекапы и восстановление
💳 Биллинг и настройки
🏗️ REST API для интеграций
|
🤖 Автоматизация и экосистема
- 🔄 Мониторинг Remnawave - регулярная проверка API, автоматическое включение/выключение техработ
- 🔄 Автосинхронизация серверов - фоновая синхронизация по расписанию
- 🛒 Умная корзина - сохранение параметров подписки в Redis при недостатке баланса
- 🛡️ Антифрод - валидация подписки на канал
- 🚫 Защита от блокировок - автоблокировка подозрительных никнеймов и имитации фишинг аккаунтов
- 🧠 Асинхронная архитектура - aiogram 3, PostgreSQL/SQLite, Redis и очереди задач
- 🌐 Мультиязычность - локализации RU/EN, быстрый выбор языка
- 📦 Интеграция с Remnawave API - автоматическое создание пользователей и синхронизация
- 🔄 Миграция сквадов - массовый перенос пользователей между серверами
- 🧾 История операций - хранение всех транзакций и действий для аудита
🌐 Веб-API и мини-приложение
- ⚙️ FastAPI Web API с эндпоинтами для управления всеми аспектами бота
- 🔑 Управление API-ключами - выпуск, отзыв, реактивация токенов
- 🛰️ Mini App - полноценный личный кабинет внутри Telegram
- 💳 Интегрированные платежи в Mini App (Stars, Pal24, YooKassa, WATA)
- 🧭 App Config - централизованная раздача ссылок на клиенты
- 🪝 Платёжные вебхуки - встроенные серверы для всех платёжных систем
- 📡 Мониторинг серверов - REST-эндпоинты для просмотра нод и статистики
🚀 Производительность
| Пользователей | Память | CPU | Диск | Описание |
|---|---|---|---|---|
| 1,000 | 512MB | 1 vCPU | 10GB | ✅ Стартап |
| 10,000 | 2GB | 2 vCPU | 50GB | ✅ Малый бизнес |
| 50,000 | 4GB | 4 vCPU | 100GB | ✅ Средний бизнес |
| 100,000+ | 8GB+ | 8+ vCPU | 200GB+ | 🚀 Enterprise |
🏗️ Технологический стек
💪 Современные технологии
- 🐍 Python 3.13+ с AsyncIO - максимальная производительность
- 🗄️ PostgreSQL 15+ - надежное хранение данных
- ⚡ Redis - быстрое кеширование и сессии (для корзины)
- 🐳 Docker - простое развертывание в любой среде
- 🔗 SQLAlchemy ORM - безопасная работа с БД
- 🚀 aiogram 3 - современная Telegram Bot API
- ⚡ FastAPI - высокопроизводительный REST API
- 📦 Pydantic v2 - валидация данных
🔧 Первичная настройка
После запуска необходимо:
-
📡 Синхронизация серверов (обязательно!)
- Зайди в бот → Админ панель → Подписки → Управление серверами
- Нажми Синхронизация и дождись завершения
- Без этого пользователи не смогут выбирать страны!
-
👥 Синхронизация пользователей (если есть база)
- Админ панель → Remnawave → Синхронизация
- Синхронизировать всех → дождись импорта
-
💳 Настройка платежных систем
- Telegram Stars: Работает автоматически
- Tribute: Настрой webhook на
https://your-domain.com/tribute-webhook - YooKassa: Настрой webhook на
https://your-domain.com/yookassa-webhook - CryptoBot: Настрой webhook на
https://your-domain.com/cryptobot-webhook - MulenPay: Настрой webhook на
https://your-domain.com/mulenpay-webhook - PayPalych: Укажи Result URL
https://your-domain.com/pal24-webhookв кабинете Pal24 - WATA: Настрой webhook на
https://your-domain.com/wata-webhook
-
🔄 Настройка автосинхронизации (опционально)
- В
.envустановиREMNAWAVE_AUTO_SYNC_ENABLED=true - Укажи время синхронизации в
REMNAWAVE_AUTO_SYNC_TIMES=03:00,15:00
- В
🛠️ Настройка уведомлений в топик группы
1. Переменные окружения
Добавьте в файл .env:
# Уведомления администраторов
ADMIN_NOTIFICATIONS_ENABLED=true
ADMIN_NOTIFICATIONS_CHAT_ID=-1001234567890 # ID канала/группы
ADMIN_NOTIFICATIONS_TOPIC_ID=123 # ID топика (опционально)
ADMIN_NOTIFICATIONS_TICKET_TOPIC_ID=126 # ID топика для тикетов
2. Создание канала
- Создайте приватный канал или группу для уведомлений
- Добавьте бота как администратора с правами отправки сообщений
- Получите ID канала:
- Отправьте любое сообщение в канал
- Перешлите его боту @userinfobot
- Скопируйте Chat ID (например:
-1001234567890)
3. Настройка топиков (опционально)
Если используете супергруппу с топиками:
- Включите топики в настройках группы
- Создайте топики для уведомлений (например, "Уведомления", "Тикеты")
- Получите ID топика из URL веб-версии Telegram или используйте бота
🐛 Устранение неполадок
🏥 Health Checks
- Основной:
http://localhost:8081/health - YooKassa:
http://localhost:8082/health - Pal24:
http://localhost:8084/health
🔧 Полезные команды
# Просмотр логов в реальном времени
docker compose logs -f bot
# Статус всех контейнеров
docker compose ps
# Перезапуск только бота
docker compose restart bot
# Проверка базы данных
docker compose exec postgres pg_isready -U remnawave_user
# Подключение к базе данных
docker compose exec postgres psql -U remnawave_user -d remnawave_bot
# Проверка Redis
docker compose exec redis redis-cli ping
# Проверка использования ресурсов
docker stats
# Очистка Docker
docker system prune
🚨 Частые проблемы и решения
| Проблема | Диагностика | Решение |
|---|---|---|
| Бот не отвечает | docker logs remnawave_bot |
Проверь BOT_TOKEN и интернет |
| Ошибки БД | docker compose ps postgres |
Проверь статус PostgreSQL |
| Webhook не работает | Проверь порты 8081/8082/8084 | Настрой прокси-сервер |
| API недоступен | Проверь логи бота | Проверь REMNAWAVE_API_URL |
| Корзина не сохраняется | docker compose ps redis |
Проверь статус Redis |
| Платежи не проходят | Проверь webhook'и | Настрой URL в платежных системах |
💡 Использование
👤 Для пользователей
- 🚀 Старт → Найди бота и нажми
/start - 🌐 Язык → Выбери язык интерфейса (RU/EN)
- 📋 Правила → Прими правила сервиса
- 💰 Баланс → Пополни через любой удобный способ
- 🛒 Подписка → Выбери тариф и параметры
- 📱 Подключение → Получи ссылку или конфиг
- 👥 Партнерка → Поделись ссылкой и получай бонусы
⚙️ Для администраторов
Доступ через "⚙️ Админ панель":
- 📦 Подписки → настройка серверов, цен, синхронизация
- 👥 Пользователи → поиск, редактирование, блокировка
- 💎 Промо-группы → управление скидочными группами и уровнями
- 🎁 Промокоды → создание и статистика
- 🎯 Промо-предложения → персональные акции и скидки
- 📨 Рассылки → уведомления по сегментам
- 📣 Кампании → управление рекламными кампаниями
- 🎫 Тикеты → система поддержки
- 📄 Контент → политика, оферта, FAQ
- 🖥 Remnawave → мониторинг, синхронизация
- 📊 Статистика → детальная аналитика
🛡️ Безопасность
🔐 Защита панели Remnawave
Бот поддерживает интеграцию с системой защиты панели:
# Для защищенных панелей
REMNAWAVE_SECRET_KEY=secret_name:secret_value
# Для панелей eGames скрипта
REMNAWAVE_SECRET_KEY=XXXXXXX:DDDDDDDD
🔒 Дополнительные меры безопасности
- Валидация всех входящих данных
- Rate limiting для защиты от спама
- Шифрование чувствительных данных
- Автоматическое управление сессиями
- Мониторинг подозрительной активности
- Защита от запрещенных никнеймов - автоблокировка имитации официальных аккаунтов
- Защита от обфусцированных доменов в отображаемом имени
🤝 Как помочь проекту
- 🔍 Сообщай о багах с подробным описанием
- 💡 Предлагай идеи для улучшения
- ⭐ Ставь звезды проекту - это мотивирует разработку!
- 📢 Рассказывай друзьям о проекте
- 💝 Поддержи разработку - помоги проекту расти
- 🔧 Отправляй Pull Requests - внеси свой вклад в код
💬 Поддержка и сообщество
📞 Контакты
- 💬 Telegram: @fringg - вопросы по разработке (только по делу!)
- 💬 Telegram Group: Bedolaga Chat - общение, вопросы, предложения
- 🐛 Issues: GitHub Issues - баги и предложения
📚 Полезные ресурсы
- 📖 Remnawave Docs - документация панели
- 🤖 Telegram Bot API - API ботов
- 🐳 Docker Guide - обучение Docker
- 🛡️ Reverse Proxy - защита панели
💝 Благодарности
🌟 Топ спонсоры проекта
| 🏆 Место | 👤 Спонсор | 💰 Сумма | 💬 Благодарность |
|---|---|---|---|
| 🥇 | @SmartSystemCompany | ₽8,500 | За щедрую поддержку и вклад в развитие |
| 🥈 | @pilot_737800 | ₽7,750 | За веру в проект с самого начала |
| 🥈 | @psych0O | $60 | За щедрую поддержку и вклад в развитие |
| 🥉 | @Vldmrmtn | ₽5,000 | За значительную поддержку проекта |
| 4 | @k0tbtc | ₽3,000 | За поддержку и доверие |
| 5 | @Legacyyy777 | ₽2,900 | За ценные предложения и UX улучшения |
| 6 | @sklvg | ₽3,000 | За международную поддержку |
🌟 Особая благодарность контрибьюторам
- @yazhog - легенда проекта! За крутые PR'ы, рефакторинг, автобекапы и навигацию
- @Gy9vin - за модульную архитектуру, быстрое пополнение, админ-функции и тестирование
- @Legacyyy777 - за улучшения рассылки, PayPalych, MulenPay и UX фиксы
- @SantaSpeen - за актуализацию app-config.json и кучу рекомендаций
- @PEDZEO - за SLA поддержки и управление модераторами
🎉 Сообщество
- Remnawave Team - за отличную панель и стабильный API
- Сообщество Bedolaga - за активное тестирование и обратную связь
- Всем пользователям - за доверие и использование бота
📋 Roadmap
🚧 В разработке
- 🌎 Веб-панель - полноценная административная панель
- 📊 Расширенная аналитика - больше метрик и графиков
- 🔄 API для интеграций - подключение внешних сервисов
- 🎨 Темы оформления - кастомизация интерфейса Mini App
✅ Недавно добавлено
- 💳 WATA - оплата банковскими картами
- 🔄 Автосинхронизация Remnawave - фоновая синхронизация серверов
- 🛒 Умная корзина - сохранение параметров подписки
- 🏗️ Модульная архитектура - подписок и платежей
- 🖥️ Полноценный личный кабинет в Mini App
- 💎 Промо-группы и скидочные уровни - система лояльности
- 🎁 Персональные промо-предложения - таргетированные акции
- 📄 Система управления контентом - политика, оферта, FAQ
- 🎫 Система тикетов - поддержка пользователей
- 📊 Мониторинг серверов - интеграция с XrayChecker
- 🛡️ Защита от блокировок - антифрод система
📄 Лицензия
Проект распространяется под лицензией MIT
🚀 Начни уже сегодня!
🧪 Протестируй бота |
💬 Присоединись к сообществу |
⭐ Поставь звезду |
💝 Поддержи проект |
🔄 Быстрые команды
📦 Установка и запуск
# Автоустановка (рекомендуется)
git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot.git
cd remnawave-bedolaga-telegram-bot
chmod +x install_bot.sh
./install_bot.sh
# Ручной запуск
docker compose up -d
docker compose logs -f
🔄 Обновление
# Через install_bot.sh (с автобэкапом)
./install_bot.sh
# Выбрать: 4. 🔄 Обновить проект из Git
# Ручное обновление
git pull
docker compose down
docker compose pull
docker compose up -d
💾 Бэкап и восстановление
# Создать бэкап через install_bot.sh
./install_bot.sh
# Выбрать: 5. 💾 Создать резервную копию
# Восстановить бэкап
./install_bot.sh
# Выбрать: 6. 📦 Восстановить из бэкапа
📊 Мониторинг
# Статус сервисов
docker compose ps
# Логи бота
docker compose logs -f bot
# Проверка здоровья
curl http://localhost:8081/health
# Использование ресурсов
docker stats
📈 Статистика проекта
🎯 Ключевые особенности в цифрах
| Метрика | Значение |
|---|---|
| 💳 Платёжных систем | 7 (Stars, YooKassa, Tribute, CryptoBot, MulenPay, Pal24, WATA) |
| 🌍 Языков интерфейса | 2 (RU, EN) с возможностью расширения |
| 📊 Периодов подписки | 6 (от 14 дней до года) |
| 🎁 Типов промо-акций | 5 (коды, группы, предложения, скидки, кампании) |
| 🔌 REST API эндпоинтов | 50+ для полного управления |
| 📱 Режимов работы | 2 (классический бот + MiniApp focus) |
| 🛡️ Методов авторизации | 4 (API Key, Bearer, Basic Auth, eGames) |
| 🗄️ Способов хранения | 2 (PostgreSQL, SQLite) с автовыбором |
🔥 Почему выбирают Bedolaga?
💼 Для бизнеса
✅ Быстрый запуск - от установки до первых продаж за 10 минут
✅ Полная автоматизация - бот работает 24/7 без вашего участия
✅ Прозрачная аналитика - всегда знаете, сколько зарабатываете
✅ Гибкие тарифы - настройте цены под свою аудиторию
✅ Система лояльности - удерживайте клиентов промо-группами и скидками
✅ Масштабируемость - от 10 до 100,000+ пользователей
🛠️ Для разработчиков
✅ Современный стек - Python 3.13, AsyncIO, PostgreSQL, Redis
✅ Модульная архитектура - легко расширять и модифицировать
✅ Полное API - интегрируйте с любыми сервисами
✅ Docker-ready - разворачивается за минуты
✅ Подробная документация - все описано и понятно
✅ Активное сообщество - помощь в Telegram чате
👥 Для пользователей
✅ Простой интерфейс - интуитивно понятное меню на родном языке
✅ Много способов оплаты - выбирайте удобный вариант
✅ Быстрая поддержка - система тикетов с приоритетами
✅ Прозрачность - всегда видите, за что платите
✅ Бонусы и скидки - реферальная программа и промо-акции
✅ Удобное управление - все в одном месте, в Telegram
💡 Советы по оптимизации
⚡ Повышение производительности
- Используйте Redis для корзины и кэширования
- Настройте автосинхронизацию в ночное время
- Включите автобэкапы с отправкой в Telegram
- Оптимизируйте логирование - LOG_LEVEL=INFO для продакшена
- Используйте PostgreSQL вместо SQLite для больших баз
💰 Увеличение продаж
- Включите реферальную программу - пользователи приведут друзей
- Настройте промо-группы - дайте скидки постоянным клиентам
- Используйте персональные акции - реактивируйте неактивных
- Запускайте кампании - привлекайте новых через deeplink
- Добавьте быстрое пополнение - упростите процесс оплаты
🎯 Улучшение UX
- Включите Mini App режим - современный интерфейс
- Настройте корзину - пользователи не потеряют выбор
- Добавьте FAQ - ответьте на частые вопросы заранее
- Настройте быстрые ответы - ускорьте поддержку
- Используйте уведомления - держите пользователей в курсе
🔐 Безопасность и соответствие
🛡️ Защита данных
- ✅ Шифрование чувствительных данных в БД
- ✅ Безопасное хранение токенов и ключей
- ✅ Валидация всех входящих данных
- ✅ Защита от SQL-инъекций через ORM
- ✅ Rate limiting для предотвращения злоупотреблений
- ✅ Аудит всех административных действий
📋 Юридическое соответствие
- ✅ Политика конфиденциальности (настраивается)
- ✅ Публичная оферта (настраивается)
- ✅ Правила использования (настраивается)
- ✅ История транзакций для аудита
- ✅ Соответствие требованиям платёжных систем
- ✅ GDPR-ready (возможность удаления данных)
📞 Нужна помощь?
🆘 Частые вопросы
Как начать работу?
- Скачайте репозиторий
- Запустите
install_bot.sh - Следуйте инструкциям установщика
- Синхронизируйте серверы в админке
- Готово! 🎉
Какие требования к серверу?
Минимальные:
- 1 vCPU
- 512 MB RAM
- 10 GB диск
- Ubuntu 20.04+ или Debian 11+
- Docker и Docker Compose
Рекомендуемые:
- 2+ vCPU
- 2+ GB RAM
- 50+ GB SSD
- Стабильное интернет-соединение
Как настроить платёжную систему?
- Получите ключи API в личном кабинете платёжной системы
- Добавьте их в
.envфайл - Настройте webhook URL в кабинете провайдера
- Протестируйте через админ-панель бота
- Включите метод для пользователей
Подробнее: docs/payment-setup.md
Как обновить бота?
Через install_bot.sh (рекомендуется):
./install_bot.sh
# Выбрать: 4. 🔄 Обновить проект из Git
Вручную:
git pull
docker compose down
docker compose pull
docker compose up -d
Скрипт автоматически создаст бэкап перед обновлением!
Как сделать бэкап?
Автоматически:
- Настройте в
.env:BACKUP_AUTO_ENABLED=true - Бэкапы создаются по расписанию
Вручную через install_bot.sh:
./install_bot.sh
# Выбрать: 5. 💾 Создать резервную копию
Через админ-панель:
- Админ панель → Настройки → Бэкапы → Создать
Бот не отвечает, что делать?
- Проверьте статус:
docker compose ps - Посмотрите логи:
docker compose logs -f bot - Проверьте BOT_TOKEN в
.env - Убедитесь, что все контейнеры запущены
- Попробуйте перезапустить:
docker compose restart
Если не помогло - пишите в чат поддержки
💬 Куда обратиться?
- 🐛 Баг? → GitHub Issues
- 💡 Идея? → GitHub Discussions
- 🆘 Вопрос? → Bedolaga Chat
- 📧 Личное? → @fringg
Made with ❤️ by @fringg and amazing contributors
Версия: v2.5.2 | Последнее обновление: 2024