# =============================================== # 🤖 REMNAWAVE BEDOLAGA BOT CONFIGURATION # =============================================== # ===== TELEGRAM BOT ===== # Токен бота от @BotFather # ВАЖНО: Также используется для авторизации виджета личного кабинета (Cabinet WebApp) # через Telegram.WebApp.initData BOT_TOKEN= ADMIN_IDS= # Ссылка на поддержку: Telegram username (например, @support) или полный URL SUPPORT_USERNAME=@support # Имя пользователя бота (опционально, автоопределяется) # BOT_USERNAME= # ===== СИСТЕМА ПОДДЕРЖКИ ===== # Включить меню поддержки в интерфейсе SUPPORT_MENU_ENABLED=true # Режим системы поддержки: tickets (тикеты), contact (контакт), both (оба) SUPPORT_SYSTEM_MODE=both # SLA для тикетов поддержки SUPPORT_TICKET_SLA_ENABLED=false SUPPORT_TICKET_SLA_MINUTES=60 SUPPORT_TICKET_SLA_CHECK_INTERVAL_SECONDS=300 SUPPORT_TICKET_SLA_REMINDER_COOLDOWN_MINUTES=30 # ===== ЛИЧНЫЙ КАБИНЕТ (CABINET) ===== # Включить личный кабинет пользователя (веб-интерфейс для управления подпиской) CABINET_ENABLED=false # Секретный ключ для JWT токенов (если не указан, используется BOT_TOKEN) CABINET_JWT_SECRET= # Время жизни access token в минутах (по умолчанию 15) CABINET_ACCESS_TOKEN_EXPIRE_MINUTES=15 # Время жизни refresh token в днях (по умолчанию 7) CABINET_REFRESH_TOKEN_EXPIRE_DAYS=7 # Разрешенные origins для CORS (через запятую, например: https://cabinet.example.com) CABINET_ALLOWED_ORIGINS= # Включить верификацию email (требует настройки SMTP) CABINET_EMAIL_VERIFICATION_ENABLED=false # Время жизни токена верификации email в часах CABINET_EMAIL_VERIFICATION_EXPIRE_HOURS=24 # Время жизни токена сброса пароля в часах CABINET_PASSWORD_RESET_EXPIRE_HOURS=1 # ===== SMTP НАСТРОЙКИ (для email в личном кабинете) ===== # SMTP сервер (например: smtp.gmail.com, smtp.yandex.ru) SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= # Email отправителя (если не указан, используется SMTP_USER) SMTP_FROM_EMAIL= SMTP_FROM_NAME=VPN Service # Использовать TLS шифрование SMTP_USE_TLS=true # Уведомления администраторов ADMIN_NOTIFICATIONS_ENABLED=true ADMIN_NOTIFICATIONS_CHAT_ID=-1001234567890 # Замени на ID твоего канала (-100) - ПРЕФИКС ЗАКРЫТОГО КАНАЛА! ВСТАВИТЬ СВОЙ ID СРАЗУ ПОСЛЕ (-100) БЕЗ ПРОБЕЛОВ! ADMIN_NOTIFICATIONS_TOPIC_ID=123 # Опционально: ID топика ADMIN_NOTIFICATIONS_TICKET_TOPIC_ID=126 # Опционально: ID топика для тикетов ADMIN_NOTIFICATIONS_NALOG_TOPIC_ID=133 # Опционально: ID топика для уведомлений о чеках NaloGO # Автоматические отчеты ADMIN_REPORTS_ENABLED=false ADMIN_REPORTS_CHAT_ID= # Опционально: чат для отчетов (по умолчанию ADMIN_NOTIFICATIONS_CHAT_ID) ADMIN_REPORTS_TOPIC_ID= # ID топика для отчетов ADMIN_REPORTS_SEND_TIME=10:00 # Время отправки (по МСК) ежедневного отчета # ===== МОНИТОРИНГ ТРАФИКА ===== # Логика: при запуске бота создаётся snapshot трафика всех пользователей. # Через указанный интервал проверяется дельта (разница) трафика. # Если дельта превышает порог — отправляется уведомление админам. # Быстрая проверка (дельта трафика за интервал) TRAFFIC_FAST_CHECK_ENABLED=false # Включить быструю проверку TRAFFIC_FAST_CHECK_INTERVAL_MINUTES=10 # Интервал проверки в минутах TRAFFIC_FAST_CHECK_THRESHOLD_GB=5.0 # Порог дельты в ГБ (сколько потрачено за интервал) # Суточная проверка (трафик за 24 часа через bandwidth API) TRAFFIC_DAILY_CHECK_ENABLED=false # Включить суточную проверку TRAFFIC_DAILY_CHECK_TIME=00:00 # Время суточной проверки (HH:MM по UTC) TRAFFIC_DAILY_THRESHOLD_GB=50.0 # Порог суточного трафика в ГБ # Куда отправлять уведомления SUSPICIOUS_NOTIFICATIONS_TOPIC_ID=14 # ID топика для уведомлений о подозрительной активности # Фильтрация по серверам (UUID нод через запятую) TRAFFIC_MONITORED_NODES= # Только эти ноды (пусто = все) TRAFFIC_IGNORED_NODES= # Исключить эти ноды # Исключить пользователей (UUID через запятую) TRAFFIC_EXCLUDED_USER_UUIDS= # Служебные/тунельные пользователи # Производительность TRAFFIC_CHECK_BATCH_SIZE=1000 # Размер батча для получения пользователей TRAFFIC_CHECK_CONCURRENCY=10 # Параллельных запросов к API TRAFFIC_NOTIFICATION_COOLDOWN_MINUTES=60 # Кулдаун уведомлений на пользователя (минуты) TRAFFIC_SNAPSHOT_TTL_HOURS=24 # TTL snapshot трафика в Redis (часы, сохраняется при рестарте) # Черный список BLACKLIST_CHECK_ENABLED=false # Включить проверку пользователей по черному списку BLACKLIST_GITHUB_URL=https://raw.githubusercontent.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot/refs/heads/main/blacklist.txt # URL к файлу черного списка на GitHub BLACKLIST_UPDATE_INTERVAL_HOURS=24 # Интервал обновления черного списка с GitHub (в часах) BLACKLIST_IGNORE_ADMINS=true # Игнорировать администраторов (из ADMIN_IDS) при проверке черного списка SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKS=20000 # Порог баланса (в копейках) для фильтра «готовы к продлению» # Обязательная подписка на канал CHANNEL_SUB_ID= # Опционально ID твоего канала (-100) CHANNEL_IS_REQUIRED_SUB=false # Обязательна ли подписка на канал CHANNEL_LINK= # Опционально ссылка на канал CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE=true # Отключать триальные подписки при отписке от канала CHANNEL_REQUIRED_FOR_ALL=false # Требовать подписку на канал для ВСЕХ пользователей (платных и триальных) # ===== DATABASE CONFIGURATION ===== # Режим базы данных: "auto", "postgresql", "sqlite" DATABASE_MODE=auto # Основной URL (можно оставить пустым для автоматического выбора) DATABASE_URL= # PostgreSQL настройки (для Docker и кастомных установок) POSTGRES_HOST=postgres POSTGRES_PORT=5432 POSTGRES_DB=remnawave_bot POSTGRES_USER=remnawave_user POSTGRES_PASSWORD=secure_password_123 # SQLite настройки (для локального запуска) SQLITE_PATH=./data/bot.db LOCALES_PATH=./locales # Redis REDIS_URL=redis://redis:6379/0 # Время жизни корзины пользователя в Redis (секунды, по умолчанию 1 час) CART_TTL_SECONDS=3600 # ===== REMNAWAVE API ===== REMNAWAVE_API_URL=https://panel.example.com REMNAWAVE_API_KEY=your_api_key_here # Тип авторизации: "api_key", "basic_auth", "caddy" REMNAWAVE_AUTH_TYPE=api_key REMNAWAVE_CADDY_TOKEN=YWRtaW46cGFzc3dvcmQ= # Для панелей с Basic Auth (опционально) REMNAWAVE_USERNAME= REMNAWAVE_PASSWORD= # Для панелей установленных скриптом eGames прописывать ключ в формате XXXXXXX:DDDDDDDD REMNAWAVE_SECRET_KEY= # Шаблон описания пользователя в панели Remnawave # Доступные плейсхолдеры: # {full_name} — Имя, Фамилия из Telegram # {username} — @логин из Telegram (c @) # {username_clean} — логин из Telegram (без @) # {telegram_id} — ID Telegram REMNAWAVE_USER_DESCRIPTION_TEMPLATE="Bot user: {full_name} {username}" # Шаблон имени пользователя в панели Remnawave # Доступные плейсхолдеры аналогичны описанию выше # {full_name} — Имя, Фамилия из Telegram # {username} — @логин из Telegram (c @) # {username_clean} — логин из Telegram (без @) # {telegram_id} — ID Telegram REMNAWAVE_USER_USERNAME_TEMPLATE="user_{telegram_id}" # Режим удаления пользователей из панели RemnaWave # delete - полностью удалить пользователя из панели # disable - только деактивировать пользователя REMNAWAVE_USER_DELETE_MODE=delete # Автоматическая синхронизация пользователей с панелью Remnawave REMNAWAVE_AUTO_SYNC_ENABLED=false # Времена синхронизации (через запятую, формат HH:MM по МСК) REMNAWAVE_AUTO_SYNC_TIMES=03:00 # Теги пользователей в Remnawave (A-Z, 0-9, _, макс. 16 символов) # Тег для пробных пользователей (опционально) # TRIAL_USER_TAG=TRIAL # Тег для платных пользователей (опционально) # PAID_SUBSCRIPTION_USER_TAG=PAID # ========= ПОДПИСКИ ========= # ===== РЕЖИМ ПРОДАЖ ===== # Режим продаж подписок (можно переключить в кабинете: Настройки → Подписки): # "classic" - классический режим: # - Пользователь выбирает период, серверы, трафик, устройства отдельно # - Цены периодов берутся из PERIOD_PRICES ниже # - Подходит для гибкой настройки под каждого пользователя # "tariffs" - режим тарифов: # - Пользователь выбирает готовый тариф (Premium, Basic и т.д.) # - Тарифы создаются в кабинете: Админ → Тарифы # - Каждый тариф имеет свои серверы, трафик, устройства и цены за периоды # - Подходит для продажи готовых пакетов услуг SALES_MODE=tariffs # ===== ТРИАЛ ПОДПИСКА ===== TRIAL_DURATION_DAYS=3 TRIAL_TRAFFIC_LIMIT_GB=10 TRIAL_DEVICE_LIMIT=1 # ID тарифа для триала в режиме тарифов (0 = использовать стандартные настройки триала) # Если указан ID тарифа, параметры триала берутся из тарифа (traffic_limit_gb, device_limit, allowed_squads) # Длительность триала всё равно берётся из TRIAL_DURATION_DAYS TRIAL_TARIFF_ID=0 # Платный триал: если TRIAL_ACTIVATION_PRICE > 0, триал становится платным # Цена в копейках (1000 = 10 рублей). Пользователь может оплатить триал любым методом оплаты. # TRIAL_PAYMENT_ENABLED опционален (для обратной совместимости) TRIAL_PAYMENT_ENABLED=false TRIAL_ACTIVATION_PRICE=0 # ===== ПЛАТНАЯ ПОДПИСКА ===== # Сколько устройств доступно по дефолту при покупке платной подписки DEFAULT_DEVICE_LIMIT=3 # Максимум устройств доступных к покупке (0 = Нет лимита) MAX_DEVICES_LIMIT=15 # Дефолт параметры для подписок выданных через админку DEFAULT_TRAFFIC_LIMIT_GB=100 # Плюсовать дни триала при покупке платной подписке TRIAL_ADD_REMAINING_DAYS_TO_PAID=false # ===== ГЛОБАЛЬНЫЙ ПАРАМЕТР ДЛЯ ВСЕХ ПОДПИСОК ===== DEFAULT_TRAFFIC_RESET_STRATEGY=MONTH # Сбрасывать трафик при каждой оплате подписки RESET_TRAFFIC_ON_PAYMENT=false # ===== НАСТРОЙКИ ТРАФИКА ===== # Режим выбора трафика: # "selectable" - пользователи выбирают пакеты трафика (по умолчанию) # "fixed" - фиксированный лимит трафика для всех подписок TRAFFIC_SELECTION_MODE=selectable # Фиксированный лимит трафика в ГБ (используется только в режиме "fixed") # 0 = безлимит FIXED_TRAFFIC_LIMIT_GB=100 # ===== ДОКУПКА ТРАФИКА ===== # Включить/выключить функцию докупки трафика к существующей подписке TRAFFIC_TOPUP_ENABLED=true # Показывать кнопку "Докупить трафик" в меню BUY_TRAFFIC_BUTTON_VISIBLE=true # Пакеты для докупки трафика (формат: "гб:цена_в_копейках:enabled") # Пустая строка = использовать TRAFFIC_PACKAGES_CONFIG # Пример: "10:5000:true,25:10000:true,50:15000:true,100:25000:true" TRAFFIC_TOPUP_PACKAGES_CONFIG= # ===== СБРОС ТРАФИКА ===== # Режим расчета цены сброса трафика: # "period" - фиксированная цена = стоимость периода 30 дней (старое поведение, может быть абьюзом!) # "traffic" - цена = стоимость текущего пакета трафика подписки # "traffic_with_purchased" - цена = стоимость базового + докупленного трафика (рекомендуется) TRAFFIC_RESET_PRICE_MODE=traffic_with_purchased # Базовая цена сброса в копейках (0 = использовать PERIOD_PRICES[30]) # Используется как минимальная цена или фиксированная в режиме "period" TRAFFIC_RESET_BASE_PRICE=0 # ===== ПЕРИОДЫ ПОДПИСКИ ===== # Доступные периоды подписки (через запятую) # Возможные значения: 14,30,60,90,180,360 AVAILABLE_SUBSCRIPTION_PERIODS=30,90,180 AVAILABLE_RENEWAL_PERIODS=30,90,180 # ===== ПРОСТАЯ ПОКУПКА ПОДПИСКИ ===== SIMPLE_SUBSCRIPTION_ENABLED=true # Стандартный период (должен совпадать с одним из AVAILABLE_SUBSCRIPTION_PERIODS) SIMPLE_SUBSCRIPTION_PERIOD_DAYS=30 # Сколько устройств выдаётся в рамках простой подписки SIMPLE_SUBSCRIPTION_DEVICE_LIMIT=1 # Лимит трафика в ГБ (0 — безлимит) SIMPLE_SUBSCRIPTION_TRAFFIC_GB=0 # UUID сквада (оставьте пустым, чтобы использовать сквады по умолчанию) # SIMPLE_SUBSCRIPTION_SQUAD_UUID= # ===== ЦЕНЫ (в копейках) ===== BASE_SUBSCRIPTION_PRICE=0 # Цены за периоды PRICE_14_DAYS=7000 PRICE_30_DAYS=1000 PRICE_60_DAYS=25900 PRICE_90_DAYS=36900 PRICE_180_DAYS=69900 PRICE_360_DAYS=109900 # Скидка для Базовых Юзеров (Для других Промогрупп не работает!) BASE_PROMO_GROUP_PERIOD_DISCOUNTS_ENABLED=false # 60:10 = скидка 10% на все доп услуги. 90:20 = 20% за 90 дней и тд 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,250:17000:false,500:19000:false,1000:19500:true,0:0:true" # Цена за безлимитный трафик (в копейках) PRICE_TRAFFIC_UNLIMITED=20000 # Цена за дополнительное устройство (DEFAULT_DEVICE_LIMIT идет бесплатно!) PRICE_PER_DEVICE=10000 # Включить выбор количества устройств при покупке и продлении DEVICES_SELECTION_ENABLED=true # Единое количество устройств для режима без выбора (0 — не назначать устройства) DEVICES_SELECTION_DISABLED_AMOUNT=0 # ===== МОДЕМ ===== # Включить функционал подключения модема MODEM_ENABLED=false # Цена модема в копейках за месяц (добавляется к ежемесячному платежу) MODEM_PRICE_PER_MONTH=10000 # Скидки на модем за длительный срок: "месяцев:процент,месяцев:процент" # Пример: 3 мес = 15%, 6 мес = 20%, 12 мес = 25% MODEM_PERIOD_DISCOUNTS=3:15,6:20,12:25 # Отключение превью ссылок в сообщениях бота DISABLE_WEB_PAGE_PREVIEW=false # ===== РЕФЕРАЛЬНАЯ СИСТЕМА ===== REFERRAL_PROGRAM_ENABLED=true REFERRAL_MINIMUM_TOPUP_KOPEKS=10000 REFERRAL_FIRST_TOPUP_BONUS_KOPEKS=10000 REFERRAL_INVITER_BONUS_KOPEKS=10000 REFERRAL_COMMISSION_PERCENT=25 # Уведомления REFERRAL_NOTIFICATIONS_ENABLED=true REFERRAL_NOTIFICATION_RETRY_ATTEMPTS=3 # ===== ВЫВОД РЕФЕРАЛЬНОГО БАЛАНСА ===== # Включить функцию вывода реферального баланса REFERRAL_WITHDRAWAL_ENABLED=false # Минимальная сумма вывода в копейках (по умолчанию 50000 = 500₽) REFERRAL_WITHDRAWAL_MIN_AMOUNT_KOPEKS=50000 # Интервал между запросами на вывод (дни) REFERRAL_WITHDRAWAL_COOLDOWN_DAYS=30 # Выводить только реферальный баланс (true) или весь баланс (false) REFERRAL_WITHDRAWAL_ONLY_REFERRAL_BALANCE=true # ID топика для уведомлений о заявках на вывод (0 = основной чат) REFERRAL_WITHDRAWAL_NOTIFICATIONS_TOPIC_ID=0 # Тестовый режим (позволяет админам тестировать функционал) REFERRAL_WITHDRAWAL_TEST_MODE=false # Настройки анализа на подозрительную активность # Минимальная сумма депозита от реферала для анализа (в копейках) REFERRAL_WITHDRAWAL_SUSPICIOUS_MIN_DEPOSIT_KOPEKS=100000 # Максимум пополнений от одного реферала в месяц REFERRAL_WITHDRAWAL_SUSPICIOUS_MAX_DEPOSITS_PER_MONTH=10 # Коэффициент подозрительности (пополнено в X раз больше, чем потрачено) REFERRAL_WITHDRAWAL_SUSPICIOUS_NO_PURCHASES_RATIO=3 # ===== АВТОПРОДЛЕНИЕ ===== # Глобально включить/выключить функцию автопродления (false = функция скрыта) ENABLE_AUTOPAY=false # Дни до окончания подписки, когда отправлять предупреждение (через запятую) 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=false TELEGRAM_STARS_RATE_RUB=1.79 # Tribute (https://tribute.app) TRIBUTE_ENABLED=false TRIBUTE_API_KEY= TRIBUTE_DONATE_LINK= TRIBUTE_WEBHOOK_PATH=/tribute-webhook TRIBUTE_WEBHOOK_HOST=0.0.0.0 # Примечание: индивидуальные *_WEBHOOK_PORT используются только для старой схемы запуска. # В режиме единого FastAPI сервера оставьте эти значения по умолчанию. TRIBUTE_WEBHOOK_PORT=8081 # YooKassa (https://yookassa.ru) YOOKASSA_ENABLED=false YOOKASSA_SHOP_ID= YOOKASSA_SECRET_KEY= YOOKASSA_RETURN_URL= YOOKASSA_DEFAULT_RECEIPT_EMAIL=receipts@yourdomain.com # Включить оплату через СБП (Систему быстрых платежей) YOOKASSA_SBP_ENABLED=false # Настройки чеков для налоговой YOOKASSA_VAT_CODE=1 # Коды НДС: # 1 - НДС не облагается # 2 - НДС 0% # 3 - НДС 10% # 4 - НДС 20% # 5 - НДС 10/110 # 6 - НДС 20/120 # 7 - НДС 5% # 8 - НДС 7% # 9 - НДС 5/105 # 10 - НДС 7/107 # 11 - НДС 22% # 12 - НДС 22/122 YOOKASSA_PAYMENT_MODE=full_payment # Способы расчета: # full_payment - полная оплата # partial_payment - частичная оплата # advance - аванс # full_prepayment - полная предоплата # partial_prepayment - частичная предоплата # credit - передача в кредит # credit_payment - оплата кредита YOOKASSA_PAYMENT_SUBJECT=service # Предметы расчета: # commodity - товар # excise - подакцизный товар # job - работа # service - услуга # gambling_bet - ставка в азартной игре # gambling_prize - выигрыш в азартной игре # lottery - лотерейный билет # lottery_prize - выигрыш в лотерее # intellectual_activity - результат интеллектуальной деятельности # payment - платеж # agent_commission - агентское вознаграждение # composite - составной предмет расчета # another - другое # Webhook настройки YOOKASSA_WEBHOOK_PATH=/yookassa-webhook YOOKASSA_WEBHOOK_HOST=0.0.0.0 YOOKASSA_WEBHOOK_PORT=8082 # Доверенные сети для webhook (IP-адреса YooKassa, через запятую) # YOOKASSA_TRUSTED_PROXY_NETWORKS=185.71.76.0/24,185.71.77.0/24 # Лимиты сумм пополнения через YooKassa (в копейках) YOOKASSA_MIN_AMOUNT_KOPEKS=5000 YOOKASSA_MAX_AMOUNT_KOPEKS=1000000 # Быстрый выбор суммы пополнения через YooKassa YOOKASSA_QUICK_AMOUNT_SELECTION_ENABLED=true # Отключить отображение кнопок выбора суммы пополнения (оставить только ввод вручную) DISABLE_TOPUP_BUTTONS=false # Отключить пополнение баланса через поддержку SUPPORT_TOPUP_ENABLED=true # Автоматическая проверка зависших пополнений и повторные обращения к провайдерам PAYMENT_VERIFICATION_AUTO_CHECK_ENABLED=false # Интервал (в минутах) между автоматическими проверками пополнений PAYMENT_VERIFICATION_AUTO_CHECK_INTERVAL_MINUTES=10 # ===== НАЛОГОВАЯ СЛУЖБА (NaloGO) ===== # Автоматическая отправка чеков в налоговую при пополнении баланса NALOGO_ENABLED=false NALOGO_INN= # ИНН самозанятого NALOGO_PASSWORD= # Пароль от личного кабинета налоговой NALOGO_DEVICE_ID= # Опционально: ID устройства для авторизации NALOGO_STORAGE_PATH=./nalogo_tokens.json # Путь к файлу с токенами NALOGO_QUEUE_CHECK_INTERVAL=300 # Интервал проверки очереди чеков (секунды) NALOGO_QUEUE_RECEIPT_DELAY=3 # Задержка между отправкой чеков (секунды) NALOGO_QUEUE_MAX_ATTEMPTS=10 # Максимум попыток отправки одного чека # ===== НАСТРОЙКИ ОПИСАНИЙ ПЛАТЕЖЕЙ ===== # Эти настройки позволяют изменить описания платежей, # чтобы избежать блокировок платежных систем PAYMENT_SERVICE_NAME=Интернет-сервис PAYMENT_BALANCE_DESCRIPTION=Пополнение баланса PAYMENT_SUBSCRIPTION_DESCRIPTION=Оплата подписки PAYMENT_BALANCE_TEMPLATE={service_name} - {description} PAYMENT_SUBSCRIPTION_TEMPLATE={service_name} - {description} # CRYPTOBOT CRYPTOBOT_ENABLED=false CRYPTOBOT_API_TOKEN=123456789:AAzQcZWQqQAbsfgPnOLr4FHC8Doa4L7KryC CRYPTOBOT_WEBHOOK_SECRET=your_webhook_secret_here CRYPTOBOT_BASE_URL=https://pay.crypt.bot CRYPTOBOT_TESTNET=false CRYPTOBOT_WEBHOOK_PATH=/cryptobot-webhook # Эти порты используются только при ручном запуске старого aiohttp сервера. # В новой конфигурации все вебхуки обрабатываются через порт 8080. CRYPTOBOT_WEBHOOK_PORT=8081 CRYPTOBOT_DEFAULT_ASSET=USDT CRYPTOBOT_ASSETS=USDT,TON,BTC,ETH,LTC,BNB,TRX,USDC CRYPTOBOT_INVOICE_EXPIRES_HOURS=24 # HELEKET HELEKET_ENABLED=false HELEKET_MERCHANT_ID= HELEKET_API_KEY= HELEKET_BASE_URL=https://api.heleket.com/v1 HELEKET_DEFAULT_CURRENCY=USDT HELEKET_DEFAULT_NETWORK= HELEKET_INVOICE_LIFETIME=3600 HELEKET_MARKUP_PERCENT=0 HELEKET_WEBHOOK_PATH=/heleket-webhook HELEKET_WEBHOOK_HOST=0.0.0.0 HELEKET_WEBHOOK_PORT=8086 HELEKET_CALLBACK_URL= HELEKET_RETURN_URL= HELEKET_SUCCESS_URL= # MULENPAY MULENPAY_ENABLED=false MULENPAY_API_KEY= MULENPAY_SECRET_KEY= MULENPAY_SHOP_ID= # необязательно, есть дефолтные значения MULENPAY_BASE_URL=https://mulenpay.ru/api MULENPAY_WEBHOOK_PATH=/mulenpay-webhook # Название кнопки в интерфейсе MULENPAY_DISPLAY_NAME=Mulen Pay MULENPAY_DESCRIPTION="Пополнение баланса" # Запрещённые ключевые слова в display_name (КАЗИНО, СТАВКИ и т.п. — блокируются Mulenpay) # DISPLAY_NAME_BANNED_KEYWORDS=КАЗИНО,СТАВКИ,CASINO,BET,1XBET MULENPAY_LANGUAGE=ru MULENPAY_VAT_CODE=0 MULENPAY_PAYMENT_SUBJECT=4 MULENPAY_PAYMENT_MODE=4 MULENPAY_MIN_AMOUNT_KOPEKS=10000 MULENPAY_MAX_AMOUNT_KOPEKS=10000000 # Ожидаемый origin для iframe (опционально, для безопасности) # MULENPAY_IFRAME_EXPECTED_ORIGIN=https://mulenpay.ru # PAYPALYCH / PAL24 PAL24_ENABLED=false PAL24_API_TOKEN= PAL24_SHOP_ID= PAL24_SIGNATURE_TOKEN= PAL24_BASE_URL=https://pal24.pro/api/v1/ PAL24_WEBHOOK_PATH=/pal24-webhook PAL24_WEBHOOK_PORT=8084 PAL24_PAYMENT_DESCRIPTION="Пополнение баланса" PAL24_MIN_AMOUNT_KOPEKS=10000 PAL24_MAX_AMOUNT_KOPEKS=100000000 PAL24_REQUEST_TIMEOUT=30 # Отображать кнопку СБП в PayPalych (true - отображать, false - скрывать) PAL24_SBP_BUTTON_VISIBLE=true # Отображать кнопку оплаты картой в PayPalych (true - отображать, false - скрывать) PAL24_CARD_BUTTON_VISIBLE=true # PLATEGA PLATEGA_ENABLED=false PLATEGA_MERCHANT_ID= PLATEGA_SECRET= PLATEGA_BASE_URL=https://app.platega.io # Название кнопки в интерфейсе PLATEGA_DISPLAY_NAME=Platega PLATEGA_RETURN_URL= PLATEGA_FAILED_URL= PLATEGA_CURRENCY=RUB # Список ID активных методов из кабинета Platega (через запятую) PLATEGA_ACTIVE_METHODS=2,10,11,12,13 PLATEGA_MIN_AMOUNT_KOPEKS=100 PLATEGA_MAX_AMOUNT_KOPEKS=100000000 PLATEGA_WEBHOOK_PATH=/platega-webhook PLATEGA_WEBHOOK_HOST=0.0.0.0 PLATEGA_WEBHOOK_PORT=8086 # ===== FREEKASSA ===== FREEKASSA_ENABLED=false FREEKASSA_SHOP_ID= FREEKASSA_API_KEY= # Секретное слово 1 (для формы оплаты) FREEKASSA_SECRET_WORD_1= # Секретное слово 2 (для webhook) FREEKASSA_SECRET_WORD_2= FREEKASSA_DISPLAY_NAME=Freekassa FREEKASSA_CURRENCY=RUB FREEKASSA_MIN_AMOUNT_KOPEKS=10000 FREEKASSA_MAX_AMOUNT_KOPEKS=100000000 FREEKASSA_PAYMENT_TIMEOUT_SECONDS=3600 FREEKASSA_WEBHOOK_PATH=/freekassa-webhook FREEKASSA_WEBHOOK_HOST=0.0.0.0 FREEKASSA_WEBHOOK_PORT=8088 # Способ оплаты: пусто = форма выбора, 42 = обычный СБП, 44 = NSPK СБП FREEKASSA_PAYMENT_SYSTEM_ID= # Использовать API для создания заказов (обязательно для NSPK СБП) FREEKASSA_USE_API=false # ===== WATA ===== WATA_ENABLED=false WATA_BASE_URL=https://api.wata.pro WATA_ACCESS_TOKEN= WATA_TERMINAL_PUBLIC_ID= WATA_PAYMENT_DESCRIPTION=Пополнение баланса # Тип платежа: card, sbp, all WATA_PAYMENT_TYPE=all WATA_SUCCESS_REDIRECT_URL= WATA_FAIL_REDIRECT_URL= WATA_LINK_TTL_MINUTES=60 WATA_MIN_AMOUNT_KOPEKS=10000 WATA_MAX_AMOUNT_KOPEKS=10000000 WATA_REQUEST_TIMEOUT=30 WATA_WEBHOOK_PATH=/wata-webhook WATA_WEBHOOK_HOST=0.0.0.0 WATA_WEBHOOK_PORT=8087 # Кэширование публичного ключа WATA (секунды) WATA_PUBLIC_KEY_CACHE_SECONDS=3600 # URL для получения публичного ключа (опционально) # WATA_PUBLIC_KEY_URL= # ===== CLOUDPAYMENTS ===== CLOUDPAYMENTS_ENABLED=false CLOUDPAYMENTS_PUBLIC_ID= CLOUDPAYMENTS_API_SECRET= # URL API CloudPayments CLOUDPAYMENTS_API_URL=https://api.cloudpayments.ru # URL виджета оплаты CLOUDPAYMENTS_WIDGET_URL=https://widget.cloudpayments.ru/show CLOUDPAYMENTS_DESCRIPTION=Пополнение баланса CLOUDPAYMENTS_CURRENCY=RUB CLOUDPAYMENTS_MIN_AMOUNT_KOPEKS=10000 CLOUDPAYMENTS_MAX_AMOUNT_KOPEKS=10000000 CLOUDPAYMENTS_WEBHOOK_PATH=/cloudpayments-webhook CLOUDPAYMENTS_WEBHOOK_HOST=0.0.0.0 CLOUDPAYMENTS_WEBHOOK_PORT=8089 # URL для возврата после оплаты (опционально) # CLOUDPAYMENTS_RETURN_URL= # Скин виджета: mini, classic, modern CLOUDPAYMENTS_SKIN=mini CLOUDPAYMENTS_REQUIRE_EMAIL=false CLOUDPAYMENTS_TEST_MODE=false # ===== ИНТЕРФЕЙС И UX ===== # Включить логотип для всех сообщений (true - с изображением, false - только текст) ENABLE_LOGO_MODE=true LOGO_FILE=vpn_logo.png # Режим главного меню (default - классический режим работы бота, text - режим работы с активным ЛК MiniApp, отключает покупку/управление подпиской в меню, заменяет все кнопками открытия в MiniApp ЛК) MAIN_MENU_MODE=default # Включить управление меню через API (позволяет динамически менять структуру кнопок) MENU_LAYOUT_ENABLED=false # Скрыть блок с ссылкой подключения в разделе с информацией о подписке HIDE_SUBSCRIPTION_LINK=false # Режим работы кнопки "Подключиться" # guide - открывает гайд подключения (режим 1) # miniapp_subscription - открывает ссылку подписки в мини-приложении (режим 2) # miniapp_custom - открывает заданную ссылку в мини-приложении (режим 3) # link - Открывает ссылку напрямую в браузере (режим 4) # happ_cryptolink - Вывод cryptoLink ссылки на подписку Happ (режим 5) CONNECT_BUTTON_MODE=guide # URL для режима miniapp_custom (обязателен при CONNECT_BUTTON_MODE=miniapp_custom) MINIAPP_CUSTOM_URL= MINIAPP_STATIC_PATH=miniapp # URL для редиректа на страницу покупки в мини-приложении (опционально) # MINIAPP_PURCHASE_URL= MINIAPP_SERVICE_NAME_EN=Bedolaga VPN MINIAPP_SERVICE_NAME_RU=Bedolaga VPN MINIAPP_SERVICE_DESCRIPTION_EN=Secure & Fast Connection MINIAPP_SERVICE_DESCRIPTION_RU=Безопасное и быстрое подключение # Параметры режима happ_cryptolink CONNECT_BUTTON_HAPP_DOWNLOAD_ENABLED=false HAPP_DOWNLOAD_LINK_IOS= HAPP_DOWNLOAD_LINK_ANDROID= HAPP_DOWNLOAD_LINK_MACOS= HAPP_DOWNLOAD_LINK_WINDOWS= # Универсальная ссылка для ПК (если MACOS и WINDOWS не заданы отдельно) HAPP_DOWNLOAD_LINK_PC= # Кнопка (Подключится) с редиректом (тк ссылки с happ:// тг не поддерживает) - Без установленной ссылки на редирект кнопки (подключится) не будет! Пример: https://sub.domain.sub/redirect-page/?redirect_to= HAPP_CRYPTOLINK_REDIRECT_TEMPLATE= # Пропустить принятие правил использования бота SKIP_RULES_ACCEPT=false # Пропустить запрос реферального кода SKIP_REFERRAL_CODE=false # ===== МОНИТОРИНГ И УВЕДОМЛЕНИЯ ===== MONITORING_INTERVAL=60 INACTIVE_USER_DELETE_MONTHS=3 # Уведомления TRIAL_WARNING_HOURS=2 ENABLE_NOTIFICATIONS=true NOTIFICATION_RETRY_ATTEMPTS=3 MONITORING_LOGS_RETENTION_DAYS=30 NOTIFICATION_CACHE_HOURS=24 # ===== СТАТУС СЕРВЕРОВ ===== # Режимы: disabled, external_link, external_link_miniapp, xray SERVER_STATUS_MODE=disabled # Ссылка на внешний мониторинг (для режимов external_link и external_link_miniapp) SERVER_STATUS_EXTERNAL_URL= # URL метрик XrayChecker (для режима xray) SERVER_STATUS_METRICS_URL= # Данные Basic Auth (опционально) SERVER_STATUS_METRICS_USERNAME= SERVER_STATUS_METRICS_PASSWORD= # Проверять SSL сертификат при запросе метрик SERVER_STATUS_METRICS_VERIFY_SSL=true # Таймаут запроса к метрикам (в секундах) SERVER_STATUS_REQUEST_TIMEOUT=10 # Количество серверов на странице в режиме интеграции SERVER_STATUS_ITEMS_PER_PAGE=10 # ===== РЕЖИМ ТЕХНИЧЕСКИХ РАБОТ ===== MAINTENANCE_MODE=false MAINTENANCE_CHECK_INTERVAL=30 MAINTENANCE_AUTO_ENABLE=true MAINTENANCE_MONITORING_ENABLED=true MAINTENANCE_RETRY_ATTEMPTS=1 MAINTENANCE_MESSAGE=Ведутся технические работы. Сервис временно недоступен. Попробуйте позже. # ===== ЛОКАЛИЗАЦИЯ ===== # Укажите язык из AVAILABLE_LANGUAGES. При некорректном значении используется ru. DEFAULT_LANGUAGE=ru AVAILABLE_LANGUAGES=ru,en,ua,zh # Включить выбор языка при старте и отображение кнопки в меню LANGUAGE_SELECTION_ENABLED=true # Округление цен при отображении (≤50 коп вниз, >50 коп вверх) # true: 14.78₽ → 15₽, 14.12₽ → 14₽ # false: показывать точные суммы с копейками PRICE_ROUNDING_ENABLED=true # Часовой пояс TZ=Europe/Moscow # или UTC, America/New_York и т.д. # ===== ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ ===== # Конфигурация приложений для гайда подключения APP_CONFIG_PATH=app-config.json ENABLE_DEEP_LINKS=true APP_CONFIG_CACHE_TTL=3600 # ===== BAN SYSTEM INTEGRATION (BedolagaBan) ===== # Интеграция с системой мониторинга банов BedolagaBan # Включить интеграцию с Ban системой BAN_SYSTEM_ENABLED=false # URL API сервера Ban системы (например: http://ban-server:8000) BAN_SYSTEM_API_URL= # API токен для авторизации в Ban системе BAN_SYSTEM_API_TOKEN= # Таймаут запросов к API (секунды) BAN_SYSTEM_REQUEST_TIMEOUT=30 # ===== СИСТЕМА БЕКАПОВ ===== BACKUP_AUTO_ENABLED=true BACKUP_INTERVAL_HOURS=24 BACKUP_TIME=03:00 # Первый запуск автобекапа выполняется в ближайшее время BACKUP_TIME после старта бота, # далее копии создаются каждые BACKUP_INTERVAL_HOURS. BACKUP_MAX_KEEP=7 BACKUP_COMPRESSION=true BACKUP_INCLUDE_LOGS=false BACKUP_LOCATION=/app/data/backups # Отправка бэкапов в телеграм BACKUP_SEND_ENABLED=true BACKUP_SEND_CHAT_ID=-100123456789 # Замени на ID твоего канала (-100) - ПРЕФИКС ЗАКРЫТОГО КАНАЛА! # ВСТАВИТЬ СВОЙ ID СРАЗУ ПОСЛЕ (-100) БЕЗ ПРОБЕЛОВ! BACKUP_SEND_TOPIC_ID=123 # Опционально: ID топика # Пароль для архива бекапа (опционально). Если задан - бекап отправляется в зашифрованном ZIP с AES BACKUP_ARCHIVE_PASSWORD= # ===== ПРОВЕРКА ОБНОВЛЕНИЙ БОТА ===== VERSION_CHECK_ENABLED=true VERSION_CHECK_REPO=fr1ngg/remnawave-bedolaga-telegram-bot VERSION_CHECK_INTERVAL_HOURS=1 # ===== ЛОГИРОВАНИЕ ===== LOG_LEVEL=INFO LOG_FILE=logs/bot.log # === Ротация логов === # Включить новую систему ротации (по умолчанию старое поведение) LOG_ROTATION_ENABLED=false # Время ротации (HH:MM) LOG_ROTATION_TIME=00:00 # Хранить архивы N дней LOG_ROTATION_KEEP_DAYS=7 # Сжимать архивы gzip LOG_ROTATION_COMPRESS=true # Отправлять архивы в Telegram-канал LOG_ROTATION_SEND_TO_TELEGRAM=false # Канал для логов (если не задан, используется BACKUP_SEND_CHAT_ID) LOG_ROTATION_CHAT_ID= # Топик в канале (если не задан, используется BACKUP_SEND_TOPIC_ID) LOG_ROTATION_TOPIC_ID= # Пути к лог-файлам (при LOG_ROTATION_ENABLED=true) LOG_DIR=logs LOG_INFO_FILE=info.log LOG_WARNING_FILE=warning.log LOG_ERROR_FILE=error.log LOG_PAYMENTS_FILE=payments.log # ===== РАЗРАБОТКА ===== DEBUG=false WEBHOOK_URL= WEBHOOK_PATH=/webhook WEBHOOK_SECRET_TOKEN= WEBHOOK_DROP_PENDING_UPDATES=true WEBHOOK_MAX_QUEUE_SIZE=1024 WEBHOOK_WORKERS=4 WEBHOOK_ENQUEUE_TIMEOUT=0.1 WEBHOOK_WORKER_SHUTDOWN_TIMEOUT=30.0 BOT_RUN_MODE=polling # polling, webhook или both # ===== КОНКУРСНАЯ СИСТЕМА ===== CONTESTS_ENABLED=false CONTESTS_BUTTON_VISIBLE=false # Реферальные конкурсы (турниры среди рефералов) REFERRAL_CONTESTS_ENABLED=false # ===== АВТОАКТИВАЦИЯ ПОСЛЕ ПОПОЛНЕНИЯ ===== # Автоматическая покупка из сохранённой корзины после пополнения баланса AUTO_PURCHASE_AFTER_TOPUP_ENABLED=false # Умная автоактивация: система сама решает — продлить или создать подписку # Работает даже без сохранённой корзины. Выбирает максимальный период <= баланса AUTO_ACTIVATE_AFTER_TOPUP_ENABLED=false # Показывать предупреждение об активации подписки после пополнения баланса # Если true - после пополнения показывает сообщение с кнопками: "Активировать", "Продлить", "Добавить устройства" SHOW_ACTIVATION_PROMPT_AFTER_TOPUP=false # ===== КНОПКА АКТИВАЦИИ ===== ACTIVATE_BUTTON_VISIBLE=false # ACTIVATE_BUTTON_TEXT=активировать # ===== ЕДИНЫЙ ВЕБ-СЕРВЕР ===== WEB_API_ENABLED=false WEB_API_HOST=0.0.0.0 WEB_API_PORT=8080 # Количество воркеров (для продакшена рекомендуется 2-4) WEB_API_WORKERS=1 WEB_API_ALLOWED_ORIGINS=* WEB_API_DOCS_ENABLED=false # Название и версия API (для документации) WEB_API_TITLE=Remnawave Bot Admin API WEB_API_VERSION=1.0.0 # Токен по умолчанию для начальной настройки WEB_API_DEFAULT_TOKEN= WEB_API_DEFAULT_TOKEN_NAME=Bootstrap Token # Алгоритм хеширования токенов WEB_API_TOKEN_HASH_ALGORITHM=sha256 # Логирование запросов WEB_API_REQUEST_LOGGING=true # Внешний админ-токен (для интеграции с другими ботами/системами) # Токен для доступа через API другого бота # EXTERNAL_ADMIN_TOKEN= # ID бота, от которого принимается токен # EXTERNAL_ADMIN_TOKEN_BOT_ID= MINIAPP_STATIC_PATH=miniapp