2025-08-09 07:33:26 +03:00
2025-08-05 07:30:52 +03:00
2025-08-09 06:32:47 +03:00
2025-08-09 07:02:43 +03:00
2025-08-09 07:02:00 +03:00
2025-08-09 07:01:35 +03:00
2025-08-05 05:30:01 +03:00
2025-08-05 05:32:03 +03:00
2025-08-09 06:58:00 +03:00
2025-08-09 07:00:27 +03:00
2025-08-04 16:41:11 +03:00
2025-08-09 07:04:20 +03:00
2025-08-09 07:00:10 +03:00
2025-08-05 05:31:27 +03:00
2025-08-09 06:59:52 +03:00
2025-08-09 07:33:26 +03:00
2025-08-09 07:03:30 +03:00
2025-08-09 06:59:36 +03:00
2025-08-05 05:30:43 +03:00
2025-08-05 04:23:26 +03:00
2025-08-09 06:58:45 +03:00
2025-08-09 06:58:22 +03:00

🤖 RemnaWave Telegram Bot

Docker Image Python PostgreSQL License

Современный Telegram бот для управления VPN подписками через RemnaWave API с полным функционалом управления пользователями, платежами и администрированием.

🚀 Особенности

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

  • 💰 Управление балансом - пополнение через поддержку
  • 🛒 Покупка подписок - различные тарифные планы c возможностью индивидуальной настройки сквада у плана
  • 📱 Управление подписками - просмотр, продление, получение ссылок
  • 🎁 Система промокодов - денежные коды
  • 👥 Реферальная программа - зарабатывай с друзей
  • 🎰 Игра удачи - выигрывай бонусы каждые 24 часа
  • 🆓 Тестовая подписка - бесплатная пробная версия с детальной конфигурацией
  • 🌐 Мультиязычность - русский и английский

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

  • 📊 Полная статистика - пользователи, платежи, подписки
  • 👥 Управление пользователями - поиск, редактирование, баланс
  • 💳 Управление платежами - одобрение, отклонение, история
  • 🎫 Управление промокодами - создание, редактирование, статистика
  • 🖥 Мониторинг системы - состояние нод, пользователей RemnaWave
  • 🔄 Синхронизация данных - импорт из RemnaWave
  • 📨 Рассылки - уведомления пользователям
  • 🔍 Мониторинг подписок - автоматические уведомления об истечении

📋 Требования

Системные требования

  • Docker и Docker Compose
  • 1+ GB RAM
  • 10+ GB свободного места

Внешние сервисы

  • Telegram Bot Token - создайте бота через @BotFather
  • RemnaWave API - доступ к панели RemnaWave
  • PostgreSQL - автоматически разворачивается через Docker

🛠 Установка и запуск

1. Клонирование репозитория

git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot.git
cd remnawave-bedolaga-telegram-bot

2. Настройка переменных окружения

Создайте файл .env на основе примера:

cp .env.example .env
nano .env

3. Конфигурация

📋 Основные настройки

Переменная Описание Пример
BOT_TOKEN Токен Telegram бота 123456:ABC-DEF1234ghIkl-zyx
BOT_USERNAME Username бота (без @) your_bot_username
REMNAWAVE_URL URL панели RemnaWave https://panel.example.com
REMNAWAVE_MODE Тип подключения remote/local
REMNAWAVE_TOKEN API токен RemnaWave your_api_token
ADMIN_IDS ID администраторов (через запятую) 123456789,987654321

🎁 Реферальная программа

Переменная Описание По умолчанию
REFERRAL_FIRST_REWARD Награда за первого реферала 100.0
REFERRAL_REFERRED_BONUS Бонус приглашенному 100.0
REFERRAL_THRESHOLD Порог активации (руб.) 200.0
REFERRAL_PERCENTAGE Процент со второго и послед. платежей 0.2 (20%)

🎰 Игра удачи

Переменная Описание По умолчанию
LUCKY_GAME_ENABLED Включить игру true
LUCKY_GAME_REWARD Награда за выигрыш 50.0
LUCKY_GAME_NUMBERS Всего чисел 30
LUCKY_GAME_WINNING_COUNT Выигрышных чисел 3

🆓 Тестовая подписка

Переменная Описание По умолчанию
TRIAL_ENABLED Включить тестовую подписку true/false
TRIAL_DURATION_DAYS Длительность (дни) 3
TRIAL_TRAFFIC_GB Лимит трафика (ГБ) 2
TRIAL_SQUAD_UUID UUID squad для тестовых uuid-here

💬 Сервис мониторинга сообщений

Переменная Описание По умолчанию
MONITOR_ENABLED Включить сервис подписку true/false
TRIAL_DURATION_DAYS Длительность (дни) 3
TRIAL_TRAFFIC_GB Лимит трафика (ГБ) 2
TRIAL_SQUAD_UUID UUID squad для тестовых uuid-here

4. Docker Compose конфигурация

🚀 Минимальная конфигурация (рекомендуется)

Создайте файл docker-compose.yml для базового запуска:

services:
  # PostgreSQL Database
  postgres:
    image: postgres:15-alpine
    container_name: remnawave_bot_db
    restart: unless-stopped
    environment:
      POSTGRES_DB: remnawave_bot
      POSTGRES_USER: remnawave_user
      POSTGRES_PASSWORD: secure_password_123
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - bot_network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U remnawave_user -d remnawave_bot"]
      interval: 15s
      timeout: 10s
      retries: 5
      start_period: 30s

  # RemnaWave Bot
  bot:
    image: fr1ngg/remnawave-bedolaga-telegram-bot:latest
    container_name: remnawave_bot
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    env_file:
      - .env
    environment:
      DATABASE_URL: postgresql+asyncpg://remnawave_user:secure_password_123@postgres:5432/remnawave_bot
    volumes:
      - ./logs:/app/logs
      - ./data:/app/data
    networks:
      - bot_network
    healthcheck:
      test: ["CMD-SHELL", "python -c 'print(\"Bot is running\")'"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 30s

volumes:
  postgres_data:
    driver: local

networks:
  bot_network:
    driver: bridge

Полная конфигурация (с дополнительными сервисами)

Для расширенной настройки с Redis и Nginx создайте docker-compose.full.yml:

services:
  # PostgreSQL Database
  postgres:
    image: postgres:15-alpine
    container_name: remnawave_bot_db
    restart: unless-stopped
    environment:
      POSTGRES_DB: remnawave_bot
      POSTGRES_USER: remnawave_user
      POSTGRES_PASSWORD: secure_password_123
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    networks:
      - bot_network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U remnawave_user -d remnawave_bot"]
      interval: 15s
      timeout: 10s
      retries: 5
      start_period: 30s

  # RemnaWave Bot
  bot:
    image: fr1ngg/remnawave-bedolaga-telegram-bot:latest
    container_name: remnawave_bot
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    env_file:
      - .env
    environment:
      DATABASE_URL: postgresql+asyncpg://remnawave_user:secure_password_123@postgres:5432/remnawave_bot
    volumes:
      - ./logs:/app/logs
      - ./data:/app/data
    networks:
      - bot_network
    healthcheck:
      test: ["CMD-SHELL", "python -c 'print(\"Bot is running\")'"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 30s

  # Redis (для кэширования и улучшения производительности)
  redis:
    image: redis:7-alpine
    container_name: remnawave_bot_redis
    restart: unless-stopped
    command: redis-server --appendonly yes --requirepass redis_password_123
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"
    networks:
      - bot_network
    healthcheck:
      test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5
    profiles:
      - with-redis

  # Nginx (для статических файлов или веб-интерфейса)
  nginx:
    image: nginx:alpine
    container_name: remnawave_bot_nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./ssl:/etc/nginx/ssl:ro
      - ./static:/usr/share/nginx/html:ro
    networks:
      - bot_network
    depends_on:
      - bot
    profiles:
      - with-nginx

volumes:
  postgres_data:
    driver: local
  redis_data:
    driver: local

networks:
  bot_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

5. Варианты запуска

🚀 Быстрый старт (минимальная конфигурация)

# Запуск только бота и базы данных
docker-compose up -d

# Просмотр логов
docker-compose logs -f bot

Расширенный запуск

# Запуск с Redis для улучшения производительности
docker-compose --profile with-redis up -d

# Запуск с Nginx для веб-интерфейса
docker-compose --profile with-nginx up -d

# Запуск со всеми сервисами
docker-compose --profile with-redis --profile with-nginx up -d

# Или используйте полную конфигурацию
docker-compose -f docker-compose.full.yml up -d

🛑 Управление сервисами

# Остановка всех сервисов
docker-compose down

# Остановка с удалением volumes (ВНИМАНИЕ: удалит все данные!)
docker-compose down -v

# Перезапуск конкретного сервиса
docker-compose restart bot

# Просмотр статуса
docker-compose ps

📋 Варианты конфигураций

Конфигурация Команда Описание
Минимальная docker-compose up -d Только бот + PostgreSQL
С Redis docker-compose --profile with-redis up -d + кэширование
С Nginx docker-compose --profile with-nginx up -d + веб-сервер
Полная docker-compose --profile with-redis --profile with-nginx up -d Все сервисы

📊 Мониторинг и управление

Просмотр логов

# Логи бота
docker-compose logs -f bot

# Логи базы данных
docker-compose logs -f postgres

# Все логи
docker-compose logs -f

Проверка состояния

# Статус контейнеров
docker-compose ps

# Использование ресурсов
docker stats

Backup базы данных

# Создание backup
docker exec remnawave_bot_db pg_dump -U remnawave_user remnawave_bot > backup.sql

# Восстановление
docker exec -i remnawave_bot_db psql -U remnawave_user remnawave_bot < backup.sql

🔧 Обновление

Обновление Docker образа

# Остановить сервисы
docker-compose down

# Обновить образ
docker-compose pull bot

# Запустить снова
docker-compose up -d

# Проверить логи
docker-compose logs -f bot

Ручная сборка образа

# Клонировать репозиторий
git clone https://github.com/your-repo/remnawave-telegram-bot.git
cd remnawave-telegram-bot

# Собрать образ
docker build -t remnawave-bot .

# Изменить docker-compose.yml
# bot:
#   image: remnawave-bot  # вместо fr1ngg/remnawave-bedolaga-telegram-bot

🎯 Использование

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

  1. Запуск бота - найдите бота по username и нажмите /start
  2. Выбор языка - выберите русский или английский
  3. Пополнение баланса - через меню "💰 Баланс" → "💳 Пополнить"
  4. Покупка подписки - "🛒 Купить подписку" → выбор тарифа → оплата
  5. Управление подписками - "📋 Мои подписки" → выбор подписки
  6. Реферальная программа - "👥 Рефералы" → поделиться ссылкой

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

Администратор видит дополнительную кнопку "⚙️ Админ панель" с возможностями:

  • 📦 Управление подписками - создание тарифов
  • 👥 Управление пользователями - поиск, редактирование
  • 💰 Управление балансом - пополнение балансов
  • 🎁 Управление промокодами - создание скидок
  • 📨 Рассылки - отправка сообщений
  • 🖥 Система RemnaWave - мониторинг нод и синхронизация

🔒 Безопасность

Рекомендации

  • Измените пароли PostgreSQL в docker-compose.yml
  • Не публикуйте файл .env в репозитории
  • Используйте HTTPS для RemnaWave API
  • Регулярно создавайте backup базы данных
  • Ограничьте доступ к серверу через firewall

Переменные безопасности

# Генерация безопасных паролей
openssl rand -base64 32  # для PostgreSQL
openssl rand -hex 16     # для Redis

🐛 Устранение неполадок

Частые проблемы

Проблема Решение
Бот не отвечает Проверьте BOT_TOKEN и интернет
Ошибка подключения к БД Проверьте статус PostgreSQL контейнера
Ошибки RemnaWave API Проверьте REMNAWAVE_URL и REMNAWAVE_TOKEN
Игра удачи не работает Проверьте LUCKY_GAME_ENABLED=true

Диагностика

# Проверка переменных окружения
docker exec remnawave_bot env | grep BOT_

# Подключение к базе данных
docker exec -it remnawave_bot_db psql -U remnawave_user remnawave_bot

# Перезапуск бота
docker-compose restart bot

Логи и отладка

# Детальные логи
docker-compose logs -f --tail 100 bot

# Ошибки базы данных
docker-compose logs postgres | grep ERROR

# Проверка health checks
docker-compose ps

📈 Производительность

Рекомендуемые ресурсы

Пользователей RAM CPU Диск
До 500 1GB 1 CPU 10GB
До 1,000 2GB 1 CPU 20GB
До 10,000 4GB 2 CPU 50GB
До 50,000 8GB 4 CPU 100GB

Оптимизация

  • Включите Redis для кэширования (профиль with-redis)
  • Настройте PostgreSQL для production
  • Используйте nginx как reverse proxy
  • Мониторьте ресурсы через docker stats

🤝 Поддержка

Получить помощь

  • 💬 Telegram: @fringg

Вклад в проект

  1. Fork репозитория
  2. Создайте feature branch
  3. Внесите изменения
  4. Создайте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

🗺 Roadmap & TODO

📋 Общий план развития

Задача Статус Версия Приоритет Описание
1 Мониторинг подписок Done v1.1.0 🔴 High Служба оповещения об истечении срока и автоконтроль
2 Платежные шлюзы 🎯 Planned v1.4.0+ 🔴 High ЮKassa, Сбербанк, Tinkoff, Crypto, Звезды
3 Синхронизация RemnaWave Done v1.1.0 🟡 Medium Импорт пользователей по Telegram ID
4 Веб-панель управления 🎯 Planned v1.4.0+ 🟡 Medium Полнофункциональный веб-интерфейс
5 Управление промокодами Done v1.3.0 🟢 Low Удаление, редактирование
6 Безопасное удаление подписок 🚧 In Progress v1.4.0 🟡 Medium Архивирование вместо удаления
7 Уведомления в другие чаты 🎯 Planned v1.5.0 🟡 Medium Webhook, Email
8 Реферальная система Done v1.2.0 🟢 Low Полнофункциональная программа с подробной статистикой
9 Рулетка Done v1.3.0 🟢 Low Лудочка

🚀 Хотите помочь?

Разработчикам:

  • 🐛 Найдите и исправьте баги
  • Предложите новые функции
  • 📝 Улучшите документацию
  • 🧪 Напишите тесты

Пользователям:

  • 💭 Поделитесь идеями в Issues
  • 🐞 Сообщите о найденных проблемах
  • Поставьте звезду проекту
  • 📢 Расскажите друзьям

Спонсорам:

  • 💰 Поддержите разработку
  • 🎯 Закажите приоритетные функции
  • 🏢 Корпоративная поддержка

⚠️ Важные замечания от автора:

🗑 Осторожно с удалением подписок! Сейчас удаление плана подписки скроет эту подписку у всех пользователей, которые ее купили. Используйте деактивацию вместо удаления. Эта проблема будет исправлена в v1.4.0.


Если проект был полезен, поставьте звездочку на GitHub!


Создано с ❤️ для RemnaWave сообщества

Description
No description provided
Readme MIT 42 MiB
Languages
Python 89.5%
HTML 10.5%