30 KiB
🤖 Remnawave Bedolaga Bot
Современный Telegram-бот для управления VPN подписками через Remnawave API
Полнофункциональное решение с управлением пользователями, платежами и администрированием
✨ Основные возможности
👤 Для пользователей
|
⚙️ Для администраторов
|
🚀 Автоматическая установка
Быстрая установка одной командой
curl -fsSL https://raw.githubusercontent.com/your-repo/main/bedolaga.sh | sudo bash
Или скачайте и запустите:
wget https://raw.githubusercontent.com/your-repo/main/bedolaga.sh
chmod +x bedolaga.sh
sudo ./bedolaga.sh
📋 Типы установки
Скрипт поддерживает 5 различных конфигураций установки:
1. 🔧 Только бот (внешняя панель)
Подходит когда панель Remnawave находится на другом сервере.
Особенности:
- Отдельная PostgreSQL для бота
- Прямое подключение к внешней панели
- Независимая сетевая конфигурация
2. 🔗 Панель + бот на одном сервере
Рекомендуемый вариант для большинства случаев.
Особенности:
- Использует существующую сеть
remnawave-network - Внутреннее подключение между контейнерами
- Оптимальная производительность
3. 📦 Расширенная конфигурация
Включает дополнительные сервисы для высоконагруженных установок.
Включает:
- Redis для кэширования
- Nginx для статических файлов
- Расширенная сетевая конфигурация
4. 🌐 Бот с webhook через Caddy
Автоматическая настройка webhook с Caddy reverse proxy.
Возможности:
- Автоматический SSL (Let's Encrypt)
- Встроенный или внешний Caddy
- Health check endpoints
- Защита от DDoS
5. ⚡ Бот с webhook через Nginx
Webhook с Nginx для максимальной производительности.
Возможности:
- Продвинутая конфигурация Nginx
- Rate limiting
- SSL/TLS настройки
- Security headers
🔧 Процесс установки
Шаг 1: Выбор типа установки
Выберите конфигурацию установки:
1) Только бот (панель RemnaWave на другом сервере)
2) Панель + бот на одном сервере (рекомендуется)
3) Расширенная - с Redis и Nginx
4) Бот с webhook через Caddy
5) Бот с webhook через Nginx
Ваш выбор (1-5): 4
Шаг 2: Настройка домена (для webhook)
Введите домен для webhook (например: bot.example.com): your-bot.domain.com
У вас уже установлен Caddy? (y/n): n
Шаг 3: Базовая конфигурация
Введите BOT_TOKEN: 1234567890:AAAA...
Введите BOT_USERNAME (без @): your_bot
Введите ADMIN_IDS (через запятую): 123456789,987654321
Шаг 4: Настройки Remnawave
Введите REMNAWAVE_URL: https://your-panel.com
Введите REMNAWAVE_TOKEN: your_api_token
Введите SUBSCRIPTION_BASE_URL: https://sub.your-domain.com
Шаг 5: Дополнительные настройки
- Настройка триал-периода
- Реферальная система
- Оплата Telegram Stars
- Мониторинг и автоудаление
🎛️ Управление ботом
После установки доступно интерактивное меню управления:
sudo ./bedolaga.sh
Доступные действия:
🚀 Управление
- Запуск/остановка/перезапуск бота
- Обновление до последней версии
- Просмотр логов в реальном времени
💾 База данных
- Создание резервных копий БД
- Восстановление из резервной копии
- Диагностика состояния БД
- Экстренное исправление проблем
⚙️ Конфигурация
- Редактирование .env файла
- Просмотр конфигурации webhook
- Проверка статуса всех сервисов
🗑️ Очистка
- Удаление базы данных
- Полное удаление бота
🌐 Webhook конфигурация
Автоматически создаваемые endpoints:
| Endpoint | Описание |
|---|---|
https://domain.com/webhook |
Основной webhook для Telegram |
https://domain.com/health |
Health check для мониторинга |
Автоматическая генерация:
- Webhook Secret - случайный 64-символьный ключ
- SSL сертификаты через Let's Encrypt
- Security headers для защиты
- Rate limiting против злоупотреблений
📊 Мониторинг и логи
Просмотр статуса:
# Статус всех контейнеров
docker compose ps
# Логи бота в реальном времени
docker compose logs -f bot
# Проверка webhook
curl https://your-domain.com/health
Системная служба:
# Управление через systemctl
sudo systemctl start bedolaga-bot
sudo systemctl stop bedolaga-bot
sudo systemctl status bedolaga-bot
🔒 Безопасность
Встроенная защита:
- Rate limiting - защита от спама
- Security headers - защита от XSS/CSRF
- SSL/TLS - шифрование трафика
- Firewall ready - готов к настройке UFW
Рекомендуемые настройки UFW:
# Базовая защита
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Разрешить SSH
sudo ufw allow ssh
# Разрешить HTTP/HTTPS для webhook
sudo ufw allow 80
sudo ufw allow 443
# Включить firewall
sudo ufw enable
🔧 Устранение неполадок
Распространенные проблемы:
Бот не запускается
# Проверить логи
docker compose logs bot
# Проверить конфигурацию
cat /opt/bedolaga-bot/.env
Webhook недоступен
# Проверить DNS
nslookup your-domain.com
# Проверить порты
netstat -tlnp | grep :443
# Проверить SSL
openssl s_client -connect your-domain.com:443
Проблемы с базой данных
# Запустить диагностику
sudo ./bedolaga.sh
# Выбрать пункт "Диагностика базы данных"
# Или экстренное исправление
# Выбрать пункт "Экстренное исправление БД"
📁 Структура файлов
/opt/bedolaga-bot/
├── docker-compose.yml # Конфигурация Docker
├── .env # Переменные окружения
├── Caddyfile # Конфигурация Caddy (если используется)
├── nginx.conf # Конфигурация Nginx (если используется)
├── logs/ # Логи бота
├── data/ # Данные приложения
└── backup_*.sql # Резервные копии БД
🔄 Обновление
Автоматическое обновление через меню:
sudo ./bedolaga.sh
# Выбрать "Обновить бота"
Или вручную:
cd /opt/bedolaga-bot
docker compose pull bot
docker compose up -d
💡 Полезные команды
# Быстрый перезапуск
docker compose restart bot
# Очистка логов
docker compose logs --tail=100 bot
# Проверка использования ресурсов
docker stats
# Резервная копия одной командой
docker compose exec postgres pg_dump -U remnawave_user remnawave_bot > backup.sql
<details>
<summary>🎁 Реферальная программа</summary>
| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `REFERRAL_FIRST_REWARD` | Награда за первого реферала | `100.0` |
| `REFERRAL_REFERRED_BONUS` | Бонус приглашенному | `100.0` |
| `REFERRAL_THRESHOLD` | Порог активации (руб.) | `200.0` |
| `REFERRAL_PERCENTAGE` | % с последующих платежей | `0.2` (20%) |
</details>
<details>
<summary>⭐ Telegram Stars</summary>
| Переменная | Описание | Пример |
|------------|----------|---------|
| `STARS_ENABLED` | Включить оплату звездами | `true` |
| `STARS_100_RATE` | Курс 100 звезд → рублей | `110` |
| `STARS_250_RATE` | Курс 250 звезд → рублей | `280` |
| `STARS_500_RATE` | Курс 500 звезд → рублей | `550` |
</details>
<details>
<summary>⭐ Telegram Tribute</summary>
| Переменная | Описание | Пример |
|------------|----------|---------|
| `TRIBUTE_ENABLED` | Включить оплату с помощью доната на Tribute | `false` |
| `TRIBUTE_API_KEY` | API ключ из настроек Tribute | `XXXXXXXXXXX` |
| `TRIBUTE_WEBHOOK_PORT` | Порт | `8081` |
| `TRIBUTE_WEBHOOK_PATH` | URL Webhook Path | `/tribute-webhook` |
| `TRIBUTE_DONATE_LINK` | Ссылка на ваш донат из Tribute | `https://t.me/tribute/app?startapp=XXXXXXXXXXXXX` |
</details>
<details>
<summary>🔍 Мониторинг подписок</summary>
| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `MONITOR_ENABLED` | Включить мониторинг | `true` |
| `MONITOR_CHECK_INTERVAL` | Интервал проверки (сек) | `1800` (30 мин) |
| `MONITOR_WARNING_DAYS` | За сколько дней предупреждать | `3` |
| `AUTO_DELETE_ENABLED` | Автоудаление истекших | `true` |
</details>
<details>
<summary> Триал</summary>
| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `TRIAL_ENABLED` | Включить триал | `true` |
| `TRIAL_DURATION_DAYS` | Дней триала | `3` |
| `TRIAL_SQUAD_UUID` | Сквад триальной подписки | `` |
| `TRIAL_NOTIFICATION_ENABLED` | Уведомление об истечении триал подписки | `true` |
| `TRIAL_NOTIFICATION_HOURS_AFTER` | Через сколько отсылать сообщение | `1` |
| `TRIAL_NOTIFICATION_HOURS_WINDOW` | Через сколько выслать повторно | `` |
</details>
<details>
<summary>⚙️ Настройка Telegram Tribute</summary>
0) Обновляемся до версии 1.4.0
1) Регистрируемся и проходим верификацию в Tribute
2) Создаем донат ссылку, копируем вставляем в .env бота, конфигурируем остальные параметры из .env.example для работы Tribute
3) Настраиваем обратное прокси на /tribute-webhook
3.1 Пример для докера Caddy
https://test.example.com {
# Tribute webhook endpoint
handle /tribute-webhook* {
reverse_proxy localhost:8081 {
header_up Host {host}
header_up X-Real-IP {remote_host}
}
}
# Health check для webhook сервиса
handle /webhook-health {
reverse_proxy localhost:8081/health {
header_up Host {host}
header_up X-Real-IP {remote_host}
}
}
3.2 Пример для докера с Nginx
server {
listen 80;
server_name yourdomain.com;
location /tribute-webhook {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
client_max_body_size 10M;
}
location /webhook-health {
proxy_pass http://127.0.0.1:8081/health;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3.3 Рестартим Бота, рестратим Caddy/Nginx
4) Указываем ссылку на наш хук в настройках Tribute: https://test.example.com/tribute-webhook
5) Делаем тест - если успешно, значит все настроили правильно. Не успешный тест - проверяй доступность хука, где-то ты что-то не так настроил
6) Тестируем пополнение через бота
</details>
🐳 Docker Compose примеры
<details>
<summary>🏠 Для локальной установки (панель + бот)</summary>
```yaml
services:
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
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- remnawave-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U remnawave_user -d 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
ports:
- "8081:8081"
networks:
- remnawave-network
volumes:
postgres_data:
networks:
bot_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
🌐 Для удаленной установки
services:
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
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- bot_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U remnawave_user -d 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
ports:
- "8081:8081"
networks:
- bot_network
volumes:
postgres_data:
networks:
bot_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
🎯 Использование
👤 Для пользователей
- Запуск → Найдите бота и нажмите
/start - Язык → Выберите русский или английский
- Баланс → "💰 Баланс" → "💳 Пополнить" → Telegram Stars
- Подписка → "🛒 Купить подписку" → выбор тарифа → оплата
- Управление → "📋 Мои подписки" → выбор → получение ссылки
- Рефералы → "👥 Рефералы" → поделиться ссылкой
⚙️ Для администраторов
Доступ через кнопку "⚙️ Админ панель":
- 📦 Управление подписками → создание и настройка тарифов
- 👥 Управление пользователями → поиск, редактирование балансов
- 💰 Управление платежами → одобрение Telegram Stars платежей
- 🎁 Промокоды → создание денежных бонусов
- 📨 Рассылки → уведомления пользователям
- 🖥 Система Remnawave → мониторинг нод, синхронизация
- 📊 Статистика → подробная аналитика
📊 Производительность
💪 Рекомендуемые ресурсы
| Пользователей | RAM | CPU | Диск | Описание |
|---|---|---|---|---|
| До 500 | 1GB | 1 vCPU | 10GB | Начальная конфигурация |
| До 1,000 | 2GB | 1 vCPU | 20GB | Малый бизнес |
| До 10,000 | 4GB | 2 vCPU | 50GB | Средний бизнес |
| До 50,000 | 8GB | 4 vCPU | 100GB | Крупный бизнес |
⚡ Оптимизация
- Redis → включите для кэширования (
--profile with-redis) - PostgreSQL → настройте для production нагрузок
- Nginx → используйте как reverse proxy (
--profile with-nginx) - Мониторинг → отслеживайте через
docker stats
🔧 Управление
📋 Основные команды
# Переход в директорию
cd /opt/bedolaga-bot
# Управление через Docker Compose
docker compose up -d # Запуск
docker compose down # Остановка
docker compose restart bot # Перезапуск бота
docker compose logs -f bot # Логи в реальном времени
# Управление через systemd (если настроено)
sudo systemctl start bedolaga-bot
sudo systemctl stop bedolaga-bot
sudo systemctl restart bedolaga-bot
🔄 Обновление
# Автоматическое через меню
sudo ./bedolaga.sh
# Ручное обновление
docker compose down
docker compose pull bot
docker compose up -d
💾 Резервное копирование
# Создание 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
🐛 Устранение неполадок
❓ Частые проблемы
🤖 Бот не отвечает
Проверьте:
- ✅ Правильность
BOT_TOKEN - ✅ Интернет соединение
- ✅ Логи:
docker compose logs bot
Решение:
# Перезапуск бота
docker compose restart bot
# Проверка токена
docker exec remnawave_bot env | grep BOT_TOKEN
🗄️ Ошибки базы данных
Симптомы:
- SQL ошибки в логах
- Бот не сохраняет данные
Решение:
# Проверка PostgreSQL
docker compose logs postgres
# Подключение к БД
docker exec -it remnawave_bot_db psql -U remnawave_user remnawave_bot
# Экстренное восстановление через меню
sudo ./bedolaga.sh → "10) Экстренное исправление БД"
🔌 Проблемы с Remnawave API
Проверьте:
- ✅ Доступность
REMNAWAVE_URL - ✅ Валидность
REMNAWAVE_TOKEN - ✅ Сетевое подключение
Диагностика:
# Проверка URL
curl -I https://your-panel.com
# Тест API из контейнера
docker exec remnawave_bot curl -I http://remnawave:3000
⚠️ Проблема обновления 1.3.3 → 1.3.4
Симптом: SQL ошибки после обновления связанные с автоплатежами
Решение через меню:
sudo ./bedolaga.sh
# Выберите: "10) Экстренное исправление БД (Python)"
# Или: "11) Экстренное исправление БД (SQL)"
Ручное решение:
- Скачайте
emergency_fix.py - Добавьте в
docker-compose.yml:
emergency-fix:
image: fr1ngg/remnawave-bedolaga-telegram-bot:latest
volumes:
- ./emergency_fix.py:/app/emergency_fix.py
environment:
- DATABASE_URL=postgresql+asyncpg://remnawave_user:secure_password_123@postgres:5432/remnawave_bot
networks:
- bot_network
profiles:
- emergency
command: python emergency_fix.py
- Запустите:
docker compose run --rm emergency-fix
🗺️ Roadmap
✅ Реализовано
- ✅ Мониторинг подписок - автоуведомления и контроль
- ✅ Telegram Stars - пополнение баланса звездами
- ✅ Синхронизация Remnawave - импорт пользователей и статистика
- ✅ Реферальная система - полнофункциональная программа
- ✅ Игра удачи - ежедневные розыгрыши бонусов
- ✅ Управление промокодами - создание, редактирование, статистика
- ✅ Правила сервиса - настройка через админ-панель
- ✅ Автоплатежи - настраиваемое автопродление подписок
- ✅ Просмотр подписок пользователей - детальная статистика
-
- ✅ Автоматическое пополнение лк с помощью доната Tribute
🎯 В планах
| Версия | Функция | Приоритет | Описание |
|---|---|---|---|
| v1.4.5 | Юкасса интеграция | 🔴 High | Автоматические платежи |
| v1.4.5 | Веб-панель управления | 🟡 Medium | Полный веб-интерфейс |
| v1.4.5 | Безопасное удаление | 🟡 Medium | Архивирование вместо удаления |
| v1.5.0 | Дополнительные платежи | 🟡 Medium | Сбербанк, Tinkoff, Crypto |
| v1.5.0 | Уведомления | 🟡 Medium | Webhook, Email, другие чаты |
| v1.6.0 | Система блокировок | 🟢 Low | Бан/разбан пользователей |
💡 Хотите добавить функцию?
🤝 Вклад в проект
💪 Как помочь
🔧 Разработчикам:
- Fork репозитория
- Создайте feature branch:
git checkout -b feature/amazing-feature - Внесите изменения и сделайте commit:
git commit -m 'Add amazing feature' - Push в branch:
git push origin feature/amazing-feature - Создайте Pull Request
🐞 Пользователям:
- Сообщайте о багах в Issues
- Предлагайте идеи в Discussions
- Ставьте ⭐ проекту
- Рассказывайте друзьям
💰 Спонсорам:
- Поддержите разработку
- Закажите приоритетные функции
- Получите корпоративную поддержку
💬 Поддержка
📞 Контакты
-
Telegram: @fringg - Писать исключительно по делу, я бы конечно был рад всем помочь настроить remnawave, ваши ноды, настроить вам бота, настроить вебхуки, но ребят я один и бота пилю тоже в соло, помощь вам занимает крайне много времени, поэтому если надумаете просить помочь что-то настроить, готовьтесь дарить мне шпагу подарком в тг)(
-
Issues: GitHub Issues
-
Discussions: GitHub Discussions
📚 Полезные ссылки
📄 Лицензия
Проект распространяется под лицензией MIT. Подробности в файле LICENSE.
🌟 Понравился проект? Поставьте звезду!
💝 Создано с любовью для Remnawave сообщества
Автор не является профессиональным разработчиком, но прикладывает все усилия для создания удобного бота для ваших сервисов 💪