На странице
  1. База знаний
  2. Панели

Env-переменные

Дословные .env по периодам: бот, кабинет, панель, платёжки.

Пруфов: 299Обновлено 17.09.2026Исходник 16 мин чтения

Период 23.08–07.09.2025 — Bedolaga v2.0.x–2.2.x, Remnawave 2.1.x

  • Минимальный v2.6.x пруф: BOT_TOKEN=, ADMIN_IDS=, BOT_RUN_MODE=webhook, WEBHOOK_URL=https://hooks.domain.com, WEBHOOK_SECRET_TOKEN=, WEB_API_ENABLED=true, WEB_API_ALLOWED_ORIGINS=https://miniapp.example.com.
  • БД/инфра: POSTGRES_DB/USER/PASSWORD, DATABASE_URL=postgresql+asyncpg://remnawave_user:...@postgres:5432/remnawave_bot, DATABASE_MODE=auto, REDIS_URL=redis://redis:6379/0, TZ=Europe/Moscow, LOCALES_PATH=./locales, WEB_API_HOST/PORT/DEFAULT_TOKEN/ALLOWED_ORIGINS/REQUEST_LOGGING.
  • Remnawave: REMNAWAVE_API_URL=http://remnawave:3000, REMNAWAVE_SECRET_KEY=mykey:myvalue пруф, REMNAWAVE_AUTH_TYPE=api_key|basic_auth пруф, REMNAWAVE_USER_DESCRIPTION_TEMPLATE, REMNAWAVE_USER_USERNAME_TEMPLATE=user_{telegram_id} пруф, REMNAWAVE_AUTO_SYNC_ENABLED/TIMES пруф.
  • Подписка/цены: TRAFFIC_SELECTION_MODE, FIXED_TRAFFIC_LIMIT_GB, PRICE_PER_DEVICE, BASE_SUBSCRIPTION_PRICE, PRICE_14/30/60/90/180/360_DAYS, AVAILABLE_SUBSCRIPTION_PERIODS/RENEWAL_PERIODS, DEFAULT_TRAFFIC_RESET_STRATEGY/LIMIT_GB/DEVICE_LIMIT, MAX_DEVICES_LIMIT, TRAFFIC_PACKAGES_CONFIG, TRIAL_DURATION_DAYS/TRIAL_TRAFFIC_LIMIT_GB/TRIAL_DEVICE_LIMIT/TRIAL_SQUAD_UUID (с 2.6.1 флаг в списке серверов пруф), SIMPLE_SUBSCRIPTION_ENABLED/PERIOD_DAYS/DEVICE_LIMIT/TRAFFIC_GB/SQUAD_UUID пруф, DEVICES_SELECTION_ENABLED/DISABLED_AMOUNT пруф, AUTO_PURCHASE_AFTER_TOPUP_ENABLED пруф, DEFAULT_AUTOPAY_ENABLED пруф.
  • Оплаты: YooKassa YOOKASSA_ENABLED/SHOP_ID/SECRET_KEY/RETURN_URL/DEFAULT_RECEIPT_EMAIL/SBP_ENABLED/VAT_CODE/PAYMENT_MODE/PAYMENT_SUBJECT/MIN/MAX/WEBHOOK_PATH/WEBHOOK_SECRET(empty)/WEBHOOK_HOST/QUICK_AMOUNT_SELECTION_ENABLED пруф; CryptoBot пруф; Pal24 PAL24_ENABLED/API_KEY/SBP/CARD_BUTTON_VISIBLE; Mulen MULENPAY_ENABLED/SHOP_ID/API_KEY/DISPLAY_NAME; WATA пруф; Heleket пруф; Platega пруф; Stars TELEGRAM_STARS_RATE_RUB=1.3 пруф.
  • Рефералка/промо: REFERRAL_* пруф, REFERRAL_PROGRAM_ENABLED пруф, DISPLAY_NAME_BANNED_KEYWORDS пруф, ADMIN_NOTIFICATIONS_*, VERSION_CHECK_*, BACKUP_*, SKIP_*, HIDE_SUBSCRIPTION_LINK, CHANNEL_*, SERVER_STATUS_*, PAYMENT_VERIFICATION_*, MINIAPP_*, CONNECT_BUTTON_MODE=guide|miniapp_subscription|miniapp_custom|link|happ_cryptolink пруф, HAPP_CRYPTOLINK_REDIRECT_TEMPLATE пруф, MAIN_MENU_MODE пруф.

Период 12.11.2025–01.01.2026 — Bedolaga v2.7–2.9.4, Remnawave 2.3–2.4

Минимальный .env бота (2.9.x канонический)

BOT_TOKEN=1234567890:AABBCCdd...
ADMIN_IDS=123456789,987654321
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=remnawave_bot
POSTGRES_USER=САМ_ГЕНЕРИРУЙ
POSTGRES_PASSWORD=САМ_ГЕНЕРИРУЙ
REDIS_URL=redis://redis:6379/0
REMNAWAVE_API_URL=https://example.com
REMNAWAVE_API_KEY=
REMNAWAVE_AUTH_TYPE=api_key
REMNAWAVE_USER_DESCRIPTION_TEMPLATE="Bot user: {full_name} {username}"
REMNAWAVE_USER_USERNAME_TEMPLATE="user_{telegram_id}"
REMNAWAVE_USER_DELETE_MODE=disable
BOT_RUN_MODE=webhook
WEBHOOK_URL=https://example.com
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
WEB_API_ENABLED=true
WEB_API_HOST=0.0.0.0
WEB_API_PORT=8080
WEB_API_ALLOWED_ORIGINS=*
WEB_API_DOCS_ENABLED=false
WEB_API_DEFAULT_TOKEN=САМ_ГЕНЕРИРУЙ
AUTO_PURCHASE_AFTER_TOPUP_ENABLED=true
PAYMENT_VERIFICATION_AUTO_CHECK_ENABLED=true
PAYMENT_VERIFICATION_AUTO_CHECK_INTERVAL_MINUTES=2

пруф Для webhook — BOT_TOKEN, ADMIN_IDS, BOT_RUN_MODE=webhook, WEBHOOK_URL, WEBHOOK_PATH, WEBHOOK_SECRET_TOKEN (openssl rand -hex 32 пруф), WEB_API_*, REMNAWAVE_API_URL/KEY пруф. Для панелей eGames доп.: REMNAWAVE_SECRET_KEY=XXXXXXX:DDDDDDDD (куки aEmFnBcC=WbYWpixX) пруф. TZ → TIMEZONE в 2.9.4 пруф.

Приоритет env над БД — всё что в .env важнее админки; для правки через бота — закомментировать #PRICE_30_DAYS= пруф; пустая PRICE_360_DAYS= → ребут, комментировать целиком пруф; sed -i 's|^PRICE_30_DAYS=|#PRICE_30_DAYS=|' .env && docker compose restart bot пруф; inline # коммент после значения → Input should be a valid integer пруф.

Webhook-блок дословно пруф:

DEBUG=false
WEBHOOK_URL=https://bot.test.ru
WEBHOOK_PATH=/webhook
WEBHOOK_SECRET_TOKEN=<32-hex, openssl rand -hex 16>
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=webhook

Генерация: openssl rand -hex 32 пруф.

Платежки (env дословно)

YooKassa пруф:

YOOKASSA_ENABLED=true
YOOKASSA_SHOP_ID=112****
YOOKASSA_SECRET_KEY=live_SSO5***************
YOOKASSA_RETURN_URL=https://***.ru/payment_success
YOOKASSA_DEFAULT_RECEIPT_EMAIL=***@yandex.ru

Чек: description «Интернет-сервис - Пополнение баланса», vat_code 1, payment_mode full_payment, payment_subject service. Сети: 185.71.76.0/27, 185.71.77.0/27, 77.75.153.0/25, 77.75.154.128/25, 77.75.156.11/32, 77.75.156.35/32, 2a02:5180::/32 пруф; фикса: YOOKASSA_TRUSTED_PROXY_NETWORKS=172.20.0.0/16 пруф или is_yookassa_ip_allowed→return True + rebuild пруф.

Platega пруф:

PLATEGA_ENABLED=true
PLATEGA_MERCHANT_ID=немногосимволов
PLATEGA_SECRET=многасимволов
PLATEGA_BASE_URL=https://app.platega.io
PLATEGA_RETURN_URL=https://t.me/мойбот
PLATEGA_FAILED_URL=https://t.me/мойбот
PLATEGA_CURRENCY=RUB
PLATEGA_ACTIVE_METHODS=2
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

RETURN_URL — https://your-domain.com/payments/success пруф; после смены env — make reload пруф.

WATA пруф:

WATA_ACCESS_TOKEN=
WATA_BASE_URL=https://api.wata.pro/api/h2h
WATA_ENABLED=false
WATA_FAIL_REDIRECT_URL=
WATA_LINK_TTL_MINUTES=
WATA_MAX_AMOUNT_KOPEKS=100000000
WATA_MIN_AMOUNT_KOPEKS=10000
WATA_PAYMENT_DESCRIPTION=Пополнение баланса
WATA_PAYMENT_TYPE=OneTime
WATA_PUBLIC_KEY_CACHE_SECONDS=3600
WATA_PUBLIC_KEY_URL=
WATA_REQUEST_TIMEOUT=30
WATA_SUCCESS_REDIRECT_URL=
WATA_TERMINAL_PUBLIC_ID=
WATA_WEBHOOK_HOST=0.0.0.0
WATA_WEBHOOK_PATH=/wata-webhook
WATA_WEBHOOK_PORT=8085

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_DESCRIPTION="Пополнение баланса"
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

Tribute пруф:

TRIBUTE_ENABLED=
TRIBUTE_API_KEY=
TRIBUTE_DONATE_LINK=
TRIBUTE_WEBHOOK_PATH=/tribute-webhook
TRIBUTE_WEBHOOK_HOST=0.0.0.0

CloudPayments 2.9.4 пруф: /orders/create, HMAC-SHA256 webhook.

НалогоГО 2.9.2+ пруф:

NALOGO_ENABLED=false
NALOGO_INN=
NALOGO_PASSWORD=
NALOGO_DEVICE_ID=
NALOGO_STORAGE_PATH=./nalogo_tokens.json
NALOGO_QUEUE_CHECK_INTERVAL=300
NALOGO_QUEUE_RECEIPT_DELAY=3
NALOGO_QUEUE_MAX_ATTEMPTS=10
ADMIN_NOTIFICATIONS_NALOG_TOPIC_ID=

NALOGO_DEVICE_ID — openssl rand -hex 32.

Прочие 2.9.x пруф:

BLACKLIST_CHECK_ENABLED=false
BLACKLIST_GITHUB_URL=https://raw.githubusercontent.com/.../blacklist.txt
BLACKLIST_UPDATE_INTERVAL_HOURS=1
BLACKLIST_IGNORE_ADMINS=true
TRAFFIC_MONITORING_ENABLED=false
TRAFFIC_THRESHOLD_GB_PER_DAY=50
TRAFFIC_MONITORING_INTERVAL_HOURS=6
SUSPICIOUS_NOTIFICATIONS_TOPIC_ID=0
SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKS=20000
MENU_LAYOUT_ENABLED=false
CONTESTS_ENABLED=false
CONTESTS_BUTTON_VISIBLE=false
ENABLE_AUTOPAY=false
TIMEZONE=Europe/Moscow
REMNAWAVE_AUTH_TYPE=caddy
REMNAWAVE_CADDY_TOKEN=YWRtaW46cGFzc3dvcmQ=
BUY_TRAFFIC_BUTTON_VISIBLE=true
TRAFFIC_SELECTION_MODE=fixed
BACKUP_ARCHIVE_PASSWORD=
ADMIN_NOTIFICATIONS_ENABLED=true
ADMIN_NOTIFICATIONS_CHAT_ID=-1001234567890
ADMIN_NOTIFICATIONS_TOPIC_ID=123
ADMIN_NOTIFICATIONS_TICKET_TOPIC_ID=126
ADMIN_NOTIFICATIONS_NALOG_TOPIC_ID=133
ADMIN_REPORTS_ENABLED=false
ADMIN_REPORTS_CHAT_ID=
ADMIN_REPORTS_TOPIC_ID=
ADMIN_REPORTS_SEND_TIME=10:00
WEB_API_ALLOWED_ORIGINS=https://miniapp.domain.com
HAPP_CRYPTOLINK_REDIRECT_TEMPLATE=https://miniapp.domain.com/redirect/?redirect_to=
TRIAL_DURATION_DAYS=3
TRIAL_TRAFFIC_LIMIT_GB=10
TRIAL_DEVICE_LIMIT=1
TRIAL_PAYMENT_ENABLED=false
DISPLAY_NAME_BANNED_KEYWORDS=telegram.me, t.me/, @, support, admin, ...
HWID_DEVICE_LIMIT_ENABLED=true
HWID_FALLBACK_DEVICE_LIMIT=10
HWID_MAX_DEVICES_ANNOUNCE="Max devices reached"
BASE_SUBSCRIPTION_PRICE=0
SIMPLE_SUBSCRIPTION_SQUAD_UUID=<uuid>
MAIN_MENU_MODE=default|text
SUPPORT_USERNAME=
CHANNEL_IS_REQUIRED_SUB=False
DEFAULT_LANGUAGE=ru
AVAILABLE_LANGUAGES=ru
LANGUAGE_SELECTION_ENABLED=false

пруф

Nginx/Caddy для хуков и панели

Caddy Valerii (30.11) — хуки+панель+сабка+miniapp пруф:

apibot.домен {
  encode gzip zstd
  handle /yookassa-webhook { reverse_proxy remnawave_bot:8080 { header_up Host {host}; header_up X-Real-IP {remote_host}; transport http { read_buffer 0 } } }
  handle /platega-webhook { reverse_proxy remnawave_bot:8080 { header_up Host {host}; header_up X-Real-IP {remote_host}; transport http { read_buffer 0 } } }
  # аналогично: /cryptobot-webhook /wata-webhook /heleket-webhook /tribute-webhook /pal24-webhook /mulenpay-webhook
  handle /app-config.json { header Access-Control-Allow-Origin "*"; reverse_proxy remnawave_bot:8080 }
  handle { reverse_proxy remnawave_bot:8080 { header_up Host {host}; header_up X-Real-IP {remote_host} } }
}
miniapp.домен {
  encode gzip zstd
  handle /miniapp/* { reverse_proxy remnawave_bot:8080 }
  handle /app-config.json { header Access-Control-Allow-Origin "*"; reverse_proxy remnawave_bot:8080 }
  root * /var/www/remnawave-miniapp
  try_files {path} /index.html
  file_server
}
remna.домен { reverse_proxy * http://remnawave:3000 }
sub.домен { reverse_proxy http://remnawave-subscription-page:3010 { header_up X-Forwarded-Proto https; header_up X-Forwarded-Host {host} } }

Caddy hook/miniapp пруф:

hook.my.store {
    encode gzip zstd
    @config path /app-config.json
    header @config Access-Control-Allow-Origin "*"
    reverse_proxy localhost:8080 { header_up Host {host}; header_up X-Real-IP {remote_host}; header_up X-Forwarded-Proto {scheme}; transport http { read_buffer 0 } }
}
miniapp.my.store {
    encode gzip zstd
    root * /miniapp; file_server
    @config path /app-config.json; header @config Access-Control-Allow-Origin "*"
    reverse_proxy /miniapp/* 127.0.0.1:8080 { header_up Host {host}; header_up X-Real-IP {remote_host} }
}

Nginx хуки+miniapp (06.12) дословно пруф:

server {
    listen 80; listen 443 ssl http2;
    server_name hooks.domain.com;
    ssl_certificate /etc/ssl/private/hooks.fullchain.pem;
    ssl_certificate_key /etc/ssl/private/hooks.privkey.pem;
    client_max_body_size 32m;
    location = /yookassa-webhook { proxy_pass http://remnawave_bot_unified; 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_read_timeout 120s; proxy_send_timeout 120s; proxy_buffering off; proxy_request_buffering off; }
    # аналогично: /platega-webhook /cryptobot-webhook /wata-webhook /heleket-webhook /tribute-webhook /pal24-webhook /mulenpay-webhook
    location = /app-config.json { add_header Access-Control-Allow-Origin "*"; proxy_pass http://remnawave_bot_unified; }
    location / { proxy_pass http://remnawave_bot_unified; 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; }
}
server {
    listen 80; listen 443 ssl http2;
    server_name miniapp.domain.com;
    ssl_certificate /etc/ssl/private/miniapp.fullchain.pem;
    ssl_certificate_key /etc/ssl/private/miniapp.privkey.pem;
    client_max_body_size 32m;
    location /miniapp/ { proxy_pass http://remnawave_bot_unified; 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; }
    location = /app-config.json { add_header Access-Control-Allow-Origin "*"; proxy_pass http://remnawave_bot_unified; }
    location / { root /var/www/remnawave-miniapp; try_files $uri $uri/ /index.html; expires 1h; add_header Cache-Control "public, immutable"; }
}
server { listen 443 ssl default_server; listen [::]:443 ssl default_server; server_name _; ssl_reject_handshake on; }

Основной nginx пруф:

user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
events { worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream; upstream remnawave_bot { server 127.0.0.1:8080; } include /etc/nginx/conf.d/*.conf; }

Для host-режима бот 127.0.0.1:8080, путь /miniapp:/miniapp:ro пруф; после правки docker container restart remnawave-nginx пруф; server_names_hash_bucket_size 64; в http при could not build server_names_hash пруф. Проверка хуков: curl https://домен/health/unified пруф; curl -X POST http://localhost:8080/yookassa-webhook -H "X-Forwarded-For: 77.75.153.78" -d '{ "event": "payment.succeeded" }' пруф; curl -s -o /dev/null -w "%{http_code}" https://api.telegram.org 302=норм пруф.

Период 09.02–13.03.2026 — Bedolaga v3.9–3.32, Remnawave 2.6.x, Remnawave-admin 2.x

Remnawave webhook панель:

WEBHOOK_ENABLED=true
WEBHOOK_URL=https://hooks.domain.ru/remnawave-webhook
WEBHOOK_SECRET_HEADER=<64-значный a-z0-9A-Z>

пруф

Bedolaga webhook:

REMNAWAVE_WEBHOOK_ENABLED=true
REMNAWAVE_WEBHOOK_PATH=/remnawave-webhook
REMNAWAVE_WEBHOOK_SECRET=<openssl rand -hex 32>

пруф

12 уведомлений:

WEBHOOK_NOTIFY_USER_ENABLED=true
WEBHOOK_NOTIFY_SUB_STATUS=true
WEBHOOK_NOTIFY_SUB_EXPIRED=true
WEBHOOK_NOTIFY_SUB_EXPIRING=true
WEBHOOK_NOTIFY_SUB_LIMITED=true
WEBHOOK_NOTIFY_SUB_DELETED=true
WEBHOOK_NOTIFY_SUB_REVOKED=true
WEBHOOK_NOTIFY_TRAFFIC_RESET=true
WEBHOOK_NOTIFY_BANDWIDTH_THRESHOLD=true
WEBHOOK_NOTIFY_FIRST_CONNECTED=true
WEBHOOK_NOTIFY_NOT_CONNECTED=true
WEBHOOK_NOTIFY_DEVICES=true

пруф

Кабинет режим полный:

MAIN_MENU_MODE=cabinet
CABINET_BUTTON_STYLE=primary
MENU_LAYOUT_ENABLED=false
CONNECT_BUTTON_MODE=miniapp_custom
MINIAPP_CUSTOM_URL=https://cabinet.example.com
CABINET_ENABLED=true
CABINET_URL=https://cabinet.example.com
CABINET_JWT_SECRET=<secret>
CABINET_ALLOWED_ORIGINS=https://cabinet.example.com

пруф

Приоритет: .env > админка пруф. VITE_* — build-time пруф.

Период 16.03–06.04.2026 — Remnawave 2.7.x (breaking), Bedolaga v3.33–3.45

  • Приоритет .env > БД пруф; для изменения из кабинета — удалить из .env пруф; минимальный .env пруф; ADMIN_REPORTS_TOPIC_ID приоритет env пруф; CABINET_URL обязателен пруф.
  • Мультиподписка: SALES_MODE=tariffs; MULTI_TARIFF_ENABLED=true; MAX_ACTIVE_SUBSCRIPTIONS=10 пруф; дока multi-tariff пруф.
  • Только Stars: TELEGRAM_STARS_ENABLED=true; TELEGRAM_STARS_RATE_RUB=1.79 пруф.
  • Логи: LOG_DIR/LOG_INFO_FILE/WARNING/ERROR/PAYMENTS пруф.
  • Меню: MAIN_MENU_MODE default|cabinet (+MINIAPP_CUSTOM_URL), CABINET_BUTTON_STYLE, MENU_LAYOUT_ENABLED пруф; MENU_LAYOUT_ENABLED=true для БД пруф vs false для кастомных кнопок пруф.
  • Прокси: PROXY_URL, NALOGO_PROXY_URL fallback пруф; дока proxy-setup пруф.
  • Кабина/API: WEB_API_DEFAULT_TOKEN, CABINET_JWT_SECRET пруф; Webhook_url/Web_api_allowed_origins пруф.
  • Фронт: VITE_API_URL=/api, VITE_TELEGRAM_BOT_USERNAME без @, VITE_APP_NAME/LOGO только вариант Б пруф.
  • OIDC: TELEGRAM_OIDC_ENABLED/CLIENT_ID/SECRET пруф.
  • Remnawave: REMNAWAVE_USER_USERNAME_TEMPLATE, REMNAWAVE_AUTH_TYPE=caddy+CADDY_TOKEN пруф; DEFAULT_TRAFFIC_RESET_STRATEGY=DAY; NALOGO_STORAGE_PATH пруф.
  • Платежи: PLATEGA_MIN_AMOUNT_KOPEKS, PLATEGA_RETURN_URL/FAILED_URL, WATA_FAIL/SUCCESS_REDIRECT_URL пруф; PLATEGA_SECRET/DISPLAY_NAME пруф; WATA_PAYMENT_TYPE пруф; YOOKASSA_SBP/RECURRENT пруф.
  • BOT_RUN_MODE webhook→polling пруф; INACTIVE_USER_DELETE_MONTHS 3 пруф; SIMPLE_SUBSCRIPTION_ENABLED, CONNECT_BUTTON_MODE, HAPP_CRYPTOLINK_REDIRECT_TEMPLATE пруф.
  • Пуши RWA: WEBHOOK_ENABLED, WEBHOOK_URL (запятая), WEBHOOK_SECRET_HEADER не менять + restart панели пруф.
  • Пустые env ломают старт: ADMIN_REPORTS_TOPIC_ID, MULENPAY_SHOP_ID, FREEKASSA_*, KASSA_AI_SHOP_ID, LOG_ROTATION_TOPIC_ID пруф.
  • SMTP: SMTP_FROM_EMAIL=SMTP_USER, порт 587 mail.ru пруф.

Период 06–25.04.2026 — Bedolaga v3.45–3.52, Remnawave-admin 2.9–2.11

Бот + панель (один сервер, webhook) пруф

REMNAWAVE_API_URL=http://remnawave:3000
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://hooks.domain.com/remnawave-webhook
WEBHOOK_SECRET_HEADER=secret_key  (либо REMNAWAVE_WEBHOOK_SECRET=secret)

Overpay v3.51.0 (16 переменных) 23.04.26

OVERPAY_ENABLED=false
OVERPAY_USERNAME=
OVERPAY_PASSWORD=
OVERPAY_PROJECT_ID=
OVERPAY_P12_PATH=/app/certs/client.p12
OVERPAY_P12_PASSPHRASE=
OVERPAY_API_URL=https://api.overpay.io
OVERPAY_PAYMENT_METHODS=card,fps
OVERPAY_DISPLAY_NAME=Overpay
OVERPAY_CURRENCY=RUB
OVERPAY_MIN_AMOUNT_KOPEKS=10000
OVERPAY_MAX_AMOUNT_KOPEKS=100000
OVERPAY_WEBHOOK_PATH=/overpay-webhook
OVERPAY_RETURN_URL=свой_юрл
OVERPAY_LIFETIME_MINUTES=1440

RollyPay 24.04.26

ROLLYPAY_ENABLED=false
ROLLYPAY_API_KEY=
ROLLYPAY_SIGNING_SECRET=
ROLLYPAY_DISPLAY_NAME=RollyPay
ROLLYPAY_CURRENCY=RUB
ROLLYPAY_MIN_AMOUNT_KOPEKS=10000
ROLLYPAY_MAX_AMOUNT_KOPEKS=10000000
ROLLYPAY_WEBHOOK_PATH=/rollypay-webhook

Пример env подписок 21.04.26

SALES_MODE=classic
AVAILABLE_SUBSCRIPTION_PERIODS=30,90,180
AVAILABLE_RENEWAL_PERIODS=30,90,180
PRICE_30_DAYS=20000  # 200₽ = 20000 копеек
PRICE_90_DAYS=60000
PRICE_180_DAYS=120000
TRAFFIC_SELECTION_MODE=fixed
FIXED_TRAFFIC_LIMIT_GB=100
TRAFFIC_TOPUP_ENABLED=true
BUY_TRAFFIC_BUTTON_VISIBLE=true
DEFAULT_DEVICE_LIMIT=1
TRIAL_DURATION_DAYS=1
TRIAL_TRAFFIC_LIMIT_GB=10
TRIAL_DEVICE_LIMIT=1

Кнопки кабины 25.04.26

MINIAPP_CUSTOM_URL=https://cabinet.<домен>
MINIAPP_STATIC_PATH=miniapp
MINIAPP_SERVICE_NAME_EN=
MINIAPP_SERVICE_NAME_RU=
MAIN_MENU_MODE=cabinet
CABINET_BUTTON_STYLE=success
MENU_LAYOUT_ENABLED=false

Прочие env (дословно из чата)

WEB_API_TOKEN_HMAC_SECRET  # None→plain sha256, set→HMAC-SHA256; openssl rand -hex 16 [id=333799,335936](https://t.me/c/2941121338/333799)
REDIS_URL=redis://redis:6379/0  # фикс MissingGreenlet [id=338750](https://t.me/c/2941121338/338750)
PRICE_PER_DEVICE=3000
DEVICES_SELECTION_ENABLED=true
PROXY_URL=socks5://user:pass@45.1.1.1:8000  # ТГ API с ру-хостов [id=347156](https://t.me/c/2941121338/347156)
HWID_DEVICE_LIMIT_ENABLED=true  # панель Remnawave [id=356134](https://t.me/c/2941121338/356134)
MAX_DEVICES_LIMIT  # бот [id=356134](https://t.me/c/2941121338/356134)
AUTO_PURCHASE_AFTER_TOPUP_ENABLED=true  [id=358287](https://t.me/c/2941121338/358287)
CHANNEL_IS_REQUIRED_SUB=true  [id=373394](https://t.me/c/2941121338/373394)
BLACKLIST_CHECK_ENABLED=true
BLACKLIST_GITHUB_URL=https://github.com/BEDOLAGA-DEV/VPN-BLACKLIST/blob/main/blacklist.txt  [id=371253](https://t.me/c/2941121338/371253)
ADMIN_NOTIFICATIONS_CHAT_ID  # chat not found если пусто [id=386585](https://t.me/c/2941121338/386585)
NALOGO_INN / NALOGO_PASSWORD / NALOGO_DEVICE_ID  [id=390199](https://t.me/c/2941121338/390199)
CABINET_EMAIL_AUTH_ENABLED=true / TEST_EMAIL / TEST_EMAIL_PASSWORD  [id=388772](https://t.me/c/2941121338/388772)
DEFAULT_TRAFFIC_RESET_STRATEGY  # месяц/ежедневно/не сбрасывать [id=391238](https://t.me/c/2941121338/391238)
REMNAWAVE_USER_USERNAME_TEMPLATE="{username}"  # "{full_name}"→too_small 3 [id=389121](https://t.me/c/2941121338/389121)
CABINET_URL=  # для yookassa return_url [id=341428](https://t.me/c/2941121338/341428)
YOOKASSA_RETURN_URL=https://t.me/name_bot/subscription  [id=341157](https://t.me/c/2941121338/341157)
WEB_API_DEFAULT_TOKEN  # мини-апп=кабина [id=344273,398709](https://t.me/c/2941121338/344273)
CABINET_ENABLED=true  # false внизу перебивает true вверху [id=380347](https://t.me/c/2941121338/380347)
VITE_API_URL / VITE_TELEGRAM_BOT_USERNAME  # без @ [id=380619,372877](https://t.me/c/2941121338/380619)
REMNAWAVE_SECRET_KEY=XXXXXXX:DDDDDDDD  # eGames-панели [id=393391](https://t.me/c/2941121338/393391)
  • Что менять через UI — убрать из .env пруф.

Период 25.04–15.05.2026 — Bedolaga v3.49–3.55, Cabinet 1.49–1.52

Интерфейс и UX (дословно) пруф

# ===== ИНТЕРФЕЙС И UX =====
ENABLE_LOGO_MODE=true
LOGO_FILE=vpn_logo.png
MAIN_MENU_MODE=cabinet        # default | cabinet (требует MINIAPP_CUSTOM_URL; алиасы: text, text_only, minimal)
CABINET_BUTTON_STYLE=primary  # primary|success|danger|'' (Bot API 9.4)
MENU_LAYOUT_ENABLED=false     # управление меню через API
HIDE_SUBSCRIPTION_LINK=false  # влияет и на кнопку copyButton в кабинете (id=402241 Sayonara)
CONNECT_BUTTON_MODE=miniapp_custom
# guide | miniapp_subscription | miniapp_custom | link | happ_cryptolink
MINIAPP_CUSTOM_URL=https://miniapp.example.com
MINIAPP_STATIC_PATH=miniapp
# MINIAPP_PURCHASE_URL=
MINIAPP_SERVICE_NAME_EN=... / MINIAPP_SERVICE_NAME_RU=...
MINIAPP_SERVICE_DESCRIPTION_EN=... / _RU=...
CONNECT_BUTTON_HAPP_DOWNLOAD_ENABLED=false
HAPP_DOWNLOAD_LINK_IOS= HAPP_DOWNLOAD_LINK_ANDROID= HAPP_DOWNLOAD_LINK_MACOS= HAPP_DOWNLOAD_LINK_WINDOWS=
HAPP_DOWNLOAD_LINK_PC=
HAPP_CRYPTOLINK_REDIRECT_TEMPLATE=   # happ:// ссылки ТГ не поддерживает — нужен редирект-шаблон
SKIP_RULES_ACCEPT=false
SKIP_REFERRAL_CODE=false
  • Переключение бота в режим кабинета не работает без MENU_LAYOUT_ENABLED=false («надо false поставить, не спрашивай почему»), иначе кнопки остаются в боте пруф. Менять цвет кнопок — через MENU_LAYOUT false пруф.
  • LANGUAGE_SELECTION_ENABLED и SKIP_RULES_ACCEPT отключают выбор языка и правила пруф.
  • Новая miniapp (как у ZeroPing) появляется только при установленном кабинете; из .env одного не достаточно пруф.
  • Кастомные кнопки бота работают только в режиме меню «Кабинет» (иначе править app/localization/locales/ru.json) пруф.
  • Режим кабинета: где выставить — в BotFather (menu button) или в env (MAIN_MENU_MODE) пруф.
  • CONNECT_BUTTON_MODE=miniapp_subscription → link — фикс кнопки «Подключиться» в TG-миниапп (не открывает happ://) пруф.

WEBHOOK пруф

WEBHOOK_URL=https://...
WEBHOOK_SECRET_HEADER=
WEBHOOK_IP=х.х.х.х          # с 3.50

«Бот, запущенный в поллинг-шаблоне, вебхуки принимать физически не может; для вебхуков изначально нужно брать шаблон для вебхуков» пруф. При этом «у меня все на пулинге и вебхуки (от платежек) приходят» пруф.

SMTP (классический пример) пруф

SMTP_HOST=smtp.yandex.ru
SMTP_PORT=587
SMTP_USER=noreply@yourdomain.com
SMTP_PASSWORD=app_password_here
SMTP_FROM_EMAIL=noreply@yourdomain.com
SMTP_FROM_NAME=My VPN Service
SMTP_USE_TLS=true

Кабинет / авторизация пруф

TELEGRAM_OIDC_CLIENT_ID=           # добавить самому в .env бота
TELEGRAM_OIDC_ENABLED=false        # отключить вход через Telegram в ЛК (применять docker compose down/up)
CABINET_ALLOWED_ORIGINS=           # можно добавить dns имя cdn
PROXY_URL=socks5://...
  • Домен для веблогина правится в .env бота (не в панели) пруф.
  • Trusted Origins в BotFather — добавить ссылку на кабину; без него redirect_uri required пруф; виджет deprecated → OpenID Connect Login; Redirect URI https://cabinet.example.com/auth/telegram/callback.
  • Правильные колбэки кабинета пруф: https://кабина.домен.top/auth/telegram/callback и https://кабина.домен.top/login/; после правки — make reload-follow у бота пруф.
  • Кабинет на отдельном домене + бот в обычном режиме — совместимо: «Можно. У тебя и кабинет будет и бот обычный» пруф.
  • Запрет регистрации по email (оставить привязку/логин) — env кабины пруф.

Платёжные переменные и webhook-пути (это настройка бота — включено)

ROLLYPAY_ENABLED=true                                        # [id=457569](https://t.me/c/2941121338/457569)
PLATEGA_WEBHOOK_PATH=/platega-webhook                        # просто путь [id=417306](https://t.me/c/2941121338/417306)
YOOKASSA_DEFAULT_RECEIPT_EMAIL=                              # [id=418134](https://t.me/c/2941121338/418134) нарушает 54-ФЗ: чек должен идти на email покупателя
MULENPAY_SHOP_ID=           # 0 или закомментировать [id=491327, 470047](https://t.me/c/2941121338/491327)
FREEKASSA_SHOP_ID=          # обязательны к заполнению/комментарию [id=470047](https://t.me/c/2941121338/470047)
FREEKASSA_PAYMENT_SYSTEM_ID=# [id=470047](https://t.me/c/2941121338/470047)
KASSA_AI_SHOP_ID=           # [id=470047](https://t.me/c/2941121338/470047)
SEVERPAY_MID=               # [id=470047](https://t.me/c/2941121338/470047)
ADMIN_REPORTS_TOPIC_ID=     # fast-start требует заполнения либо комментирования [id=470047](https://t.me/c/2941121338/470047)
LOG_ROTATION_TOPIC_ID=      # [id=470047](https://t.me/c/2941121338/470047)
CRYPTOBOT_WEBHOOK_SECRET=   # сам назначаешь надёжную секретную строку, валидишь хук по хедеру [id=461498, 461932, 461944](https://t.me/c/2941121338/461498)
LAVA_BASE_URL=https://api.lava.ru    # в lava_service.py указан несуществующий gate.lava.ru [id=497090, 497809](https://t.me/c/2941121338/497090)
REMNAWAVE_WEBHOOK_PATH=/... # тот же путь, что и в панели; это HTTP-путь вебхука на сервере бота, папка не создаётся [id=497500](https://t.me/c/2941121338/497500)

Webhook-эндпоинты/пути: порт общий 8080 для всех вебхуков пруф; «8082 устаревший порт, все вебхуки сидят на 8080 теперь, не отдельно» пруф; порт брать из локалки контейнера, наружу открывать не нужно пруф; обычно заводят отдельный поддомен hooks.domain.com, у каждой платёжки свой суффикс hooks.domain.com/platega-webhook пруф; схема: поддомен pay.domain.com → сервер, в Caddy прокси на бедолагу на порт 8080 пруф; проверка вебхука в браузере должна отдавать {"status":"ok","service":"platega_webhook","enabled":true} пруф; RollyPay webhook: https://hooks.domain.com/rollypay-webhook настраивается при создании кассы (terminal) пруф; интеграция встроена: Platega, YooKassa, Lava, Wata, PayPalych, Heleket, Triton; крипта — CryptoBot, CryptoCloud пруф.

Blacklist / триалы / лимиты пруф

BLACKLIST_CHECK_ENABLED=true
BLACKLIST_GITHUB_URL=https://raw.githubusercontent.com/Blin4ickUSE/ban-vpn/refs/heads/main/blacklist.txt
BLACKLIST_UPDATE_INTERVAL_HOURS=24
BLACKLIST_IGNORE_ADMINS=true
SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKS=20000
TRIAL_TRAFFIC_LIMIT_GB=0        # даёт 100ГБ, а НЕ безлимит [id=402475, 402435](https://t.me/c/2941121338/402475)
TARIFF_SWITCH_UPGRADE_ENABLED=false    # [id=495618](https://t.me/c/2941121338/495618) игнорируется при включённой мультиподписке [id=402486](https://t.me/c/2941121338/402486)
TARIFF_SWITCH_DOWNGRADE_ENABLED=false  # [id=495618](https://t.me/c/2941121338/495618)
INACTIVE_USER_DELETE_MONTHS=3   # crud/user.py:1213 ставит DELETED; предложить поднять до 12 [id=508499](https://t.me/c/2941121338/508499)
DEVICES_SELECTION_DISABLED_AMOUNT=0    # [id=475512](https://t.me/c/2941121338/475512) влиять на все тарифы, шлёт в ремну после синхры при DEVICES_SELECTION_ENABLED=false
DEVICE_SELECTION_ENABLE=               # включить — пропадает MissingGreenlet [id=451538](https://t.me/c/2941121338/451538)
REFERRAL_PROGRAM_ENABLED=true          # [id=469723](https://t.me/c/2941121338/469723) баг: в кабинете не включается, в боте говорит «включено», кнопки у юзеров нет
MENU_LAYOUT_ENABLED=false
LOCALES=ru,en                          # [id=498871](https://t.me/c/2941121338/498871) nano .env из папки бота; если .env пуст — cp .env.example .env

Связка с панелью пруф

REMNAWAVE_API_URL=https://panel.example.com   # без /api; «пробовал также /api» → API Error 404
REMNAWAVE_API_KEY=your_api_key_here
WEB_API_DEFAULT_TOKEN=                        # генерировать в панели [id=436536](https://t.me/c/2941121338/436536); health-check ≠ валидный токен [id=469546](https://t.me/c/2941121338/469546)

«Бот не видит ремень. Проверяй апи ключ» пруф.

ENV → БД миграция приоритета (канон)

  • .env переопределяет настройки из БД/кабины: «Из кабины невозможно перезаписать переменные, которые указаны в .env» пруф; «если .env полный (на миллион строк) — настройки можно менять только через енв; при минимальном .env настройки хранятся в БД и меняются через бота/кабину когда угодно» пруф; «.env > настройки из БД» пруф; «В документации есть минимальный .env — используй его, потому что настройки из env приоритетнее» пруф; «Если не меняется из UI — меняется в .env (правило для всех настроек)» пруф; «параметры, заданные в env, НЕ переопределяются из админки бота (кнопки работают только там, где не задано в env)» пруф; «+у енв приоритет, а если надо новую платёжку подключить, то мне не надо редачить енв» пруф; «Автоматом применение новых переменных, читаем ченджлоги» пруф.
  • Практика: «У тебя куча полей в .env которые не заполнены» → «Я закомментировал все ненужные мне» пруф; «просто енв удали и заново заполни» пруф; «не чисти ничего, переименуй старый большой енв, создай новый минимальный, задай нужные значения и рестартуй down → up с билдом» пруф.
  • Был прецедент несостыковки: «при включении rollypay и перезапуске бота значение меняется на enabled, но превью кнопки платёжных систем горит красным» пруф.

Локализация / файлы

  • LOCALES=ru,en в .env пруф; тексты, доступные пользователю — bedolaga/app/localization/locales/ru.json пруф; кастомные кнопки вне режима кабинета — дрочить локали пруф.
  • Логотип: vpn_logo.jpg/vpn_logo.png в корне проекта бота пруф; LOGO_FILE=vpn_logo.png + ENABLE_LOGO_MODE=true.
  • Кастомные (премиум) emoji — тег <tg-emoji emoji-id="5287571024500498635">☁️</tg-emoji>, экранировать кавычки, вставлять в json локализации; ID искать через @FIND_STICKER_ID_BOT / @Emoji_ID_Extractor_bot пруф.

Период 16.05–05.06.2026 — Bedolaga v3.56–3.58, Remnawave-admin 2.14

  • Минимальный .env Bedolaga пруф:
BOT_TOKEN=
ADMIN_IDS=

POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=remnawave_bot
POSTGRES_USER=
POSTGRES_PASSWORD=

REDIS_URL=redis://redis:6379/0

REMNAWAVE_API_URL=
REMNAWAVE_API_KEY=
REMNAWAVE_AUTH_TYPE=api_key
REMNAWAVE_USER_DESCRIPTION_TEMPLATE="Bot user: {full_name} {username}"
REMNAWAVE_USER_USERNAME_TEMPLATE="user_{telegram_id}"
REMNAWAVE_USER_DELETE_MODE=disable

BOT_RUN_MODE=webhook
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

WEB_API_ENABLED=true
WEB_API_HOST=0.0.0.0
WEB_API_PORT=8080
WEB_API_ALLOWED_ORIGINS=
WEB_API_DOCS_ENABLED=false
WEB_API_DEFAULT_TOKEN=

AUTO_PURCHASE_AFTER_TOPUP_ENABLED=true
PAYMENT_VERIFICATION_AUTO_CHECK_ENABLED=true
PAYMENT_VERIFICATION_AUTO_CHECK_INTERVAL_MINUTES=2

CABINET_ENABLED=true
CABINET_URL=
CABINET_JWT_SECRET=
CABINET_ALLOWED_ORIGINS=

Совет: ставить чистый минимальный env + добавить кабину, остальное в веб-админке пруф пруф.

CABINET_ALLOWED_ORIGINS=https://cabinet.example.com
WEBHOOK_URL=https://hooks.domain.com
WEB_API_ALLOWED_ORIGINS=https://miniapp.domain.com
MINIAPP_CUSTOM_URL=https://cabinet.example.com
  • Режим кабинета кнопок пруф:
LAYOUT_MENU_MODE=cabinet
MAIN_MENU_MODE=cabinet
CABINET_BUTTON_STYLE=primary
MENU_LAYOUT_ENABLED=true
CONNECT_BUTTON_MODE=link

Откат MENU_LAYOUT_ENABLED=false пруф; CABINET_ENABLED=true пруф.

  • Платежные webhook env: PLATEGA_WEBHOOK_PATH=/platega-webhook, PLATEGA_WEBHOOK_HOST=0.0.0.0, PLATEGA_WEBHOOK_PORT=8080, PLATEGA_ACTIVE_METHODS=2 пруф; YOOKASSA_WEBHOOK_PATH=/yookassa-webhook, YOOKASSA_WEBHOOK_HOST=0.0.0.0, YOOKASSA_WEBHOOK_PORT=8082, YOOKASSA_TRUSTED_PROXY_NETWORKS=185.71.76.0/24,185.71.77.0/24 пруф; Lava LAVA_BASE_URL=https://api.lava.ru пруф; VITE_TELEGRAM_BOT_USERNAME= в кабине пруф.
  • Webhook проверка: curl -X POST https://поддомен_кабинета/вебхук → success пруф пруф.
  • WEB_API_DEFAULT_TOKEN генерировать openssl rand -hex 32 пруф; .env приоритет выше БД пруф.

Период 07–26.06.2026 — Bedolaga 3.60–3.61, Subscription-page 7.2.5/7.2.6

Platega 19.06.26

PLATEGA_ENABLED=true
PLATEGA_MERCHANT_ID=...
PLATEGA_SECRET=...
PLATEGA_BASE_URL=https://app.platega.io
PLATEGA_DISPLAY_NAME=Platega
PLATEGA_RETURN_URL=https://<ссылка на кабинет>
PLATEGA_FAILED_URL=https://<ссылка на кабинет>
PLATEGA_CURRENCY=RUB
PLATEGA_ACTIVE_METHODS=2,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

Antilopay пруф

ANTILOPAY_ENABLED=true
ANTILOPAY_SECRET_ID=your_secret_id
ANTILOPAY_PRIVATE_KEY=base64_encoded_rsa_private_key
ANTILOPAY_PUBLIC_KEY=base64_encoded_rsa_public_key
ANTILOPAY_PROJECT_ID=your_project_id

MiniApp

MINIAPP_CUSTOM_URL=https://cabinet.my.domain.com/

пруф

Топики пруф

ADMIN_NOTIFICATIONS_PURCHASES_TOPIC_ID=...
ADMIN_NOTIFICATIONS_RENEWALS_TOPIC_ID=...
ADMIN_NOTIFICATIONS_TRIALS_TOPIC_ID=...
ADMIN_NOTIFICATIONS_BALANCE_TOPIC_ID=...
ADMIN_NOTIFICATIONS_ADDONS_TOPIC_ID=...
ADMIN_NOTIFICATIONS_INFRASTRUCTURE_TOPIC_ID=...
ADMIN_NOTIFICATIONS_ERRORS_TOPIC_ID=...
ADMIN_NOTIFICATIONS_PROMO_TOPIC_ID=...
ADMIN_NOTIFICATIONS_PARTNERS_TOPIC_ID=...

Прочее

MENU_LAYOUT_ENABLED=true
SIMPLE_SUBSCRIPTION_ENABLED=false
TRIAL_DURATION_DAYS=1
TRIAL_TRAFFIC_LIMIT_GB=10
TRIAL_DEVICE_LIMIT=2
RESET_DEVICES_ON_RENEWAL=false

пруф пруф пруф пруф

Период 26.06–08.07.2026 — Remnawave 2.8.0, Bedolaga v3.61–3.62, Cabinet 1.59

  • Бот (.env):

    • SIMPLE_SUBSCRIPTION_SQUAD_UUID= — UUID сквада для подписки (пусто = дефолт сквады) пруф пруф
    • REMNAWAVE_API_URL — http://remnawave:3000 если в одной docker-сети, иначе https-ссылка пруф
    • ENABLE_LOGO_MODE=true — не работает если в .env, надо убрать из env чтобы включалась через админку пруф пруф пруф пруф
    • RESET_DEVICES_ON_RENEWAL=false — реально работает с 3.62.0 пруф
    • Уведомления: старые user.expires_in_72/48/24_hours и user.expired_24_hours_ago удалены → user.expiration пруф
    • Параметры бота через UI не меняются если в .env тот же параметр — удалить из env пруф
    • SKIP_REFERAL_CODE=true — отключить реферальный код пруф
    • TELEGRAM_OIDC_ENABLED — false для проблем авторизации через ТГ пруф пруф
  • Кабинет:

    • CABINET_ALLOWED_ORIGINS=https://cabinet.my.domain.com пруф
    • MINIAPP_CUSTOM_URL=https://cabinet.my.domain.com/ пруф
    • CABINET_FOOTER_ENABLED — флаг легального футера пруф
    • Кабинет не открывается из РФ за Cloudflare оранжевым облаком и на hetzner/ovh/aws — убирать CF прокси (DNS only) или проксировать через RU VPS nginx proxy_pass пруф пруф
  • Панель Remnawave:

    • HWID лимит: включить, перезагрузить, массовые действия «use fallback limit» пруф пруф
  • Платежки:

    • LAVA webhook: webhook.доменбота.com/lava-webhook пруф
    • Оплата через кабинет и бота включается отдельно в .env/кабине пруф

Период 08–20.07.2026 — Remnawave 2.8.1, Bedolaga v3.62–3.64, Cabinet 1.61

Bedolaga Bot — выдержка из .env (дословно) 09.07.26

SALES_MODE=classic  # или tariffs (тарифы создаются в кабинете: Админ → Тарифы)
TARIFF_SWITCH_UPGRADE_ENABLED=true
TARIFF_SWITCH_DOWNGRADE_ENABLED=true
TARIFF_SWITCH_RESET_FREE_DAYS=true   # не переносить остаток дней с бесплатного тарифа на платный
RESET_DEVICES_ON_RENEWAL=false
TRIAL_DURATION_DAYS=2
TRIAL_TRAFFIC_LIMIT_GB=10
TRIAL_DEVICE_LIMIT=1
TRIAL_TARIFF_ID=0
TRIAL_PAYMENT_ENABLED=false
TRIAL_ACTIVATION_PRICE=0
DEFAULT_DEVICE_LIMIT=1
MAX_DEVICES_LIMIT=20
DEFAULT_TRAFFIC_LIMIT_GB=0
TRIAL_ADD_REMAINING_DAYS_TO_PAID=false

Bedolaga Bot — прочие env-переменные (дословно из заметок)

  • Подарки/гифт: CABINET_GIFT_ENABLED, GIFT_SUBSCRIPTIONS_ENABLED — расположение в UI: Админка → Система → Настройки → вниз → «опции интерфейса» пруф.
  • Rich-меню и лог действий (добавлены в 3.64.0, применяются на лету) 13.07.26:
    MAIN_MENU_RICH_ENABLED
    MAIN_MENU_RICH_EFFECT_ID
    MAIN_MENU_RICH_LOGO_URL
    MAIN_MENU_RICH_SUBSCRIPTIONS_COLLAPSIBLE
    USER_ACTION_LOG_ENABLED
    USER_ACTION_LOG_RETENTION_DAYS
    MAIN_MENU_RICH_LOGO_URL=none — пусто = авто-режим, а не «без логотипа»; rich не включается без логотипа (либо дефолтный, либо ждёт свой); если ссылка не картинка — бот выглядит как «не рич» 19.07.26.
  • Кнопка кабинета в боте: CABINET_ENABLED=true 13.07.26.
  • Бэкапы: BACKUP_AUTO_ENABLED=false|true [id=847895|11.07.2026; пруф.
  • Логотип на главной в боте отключается настройкой ENABLE LOGO MODE 14.07.26.
  • Уведомления о старте («уведы о старте») настраиваются в .env 15.07.26.
  • Язык/конверсия цен: цены на подписки зависят от языка интерфейса кабинета; при EN оплата в USD и кривой курс конвертации (оплата 8$ → зачисление 7.9). Отключение: настройка кабинета (выбор языка) или фикс в .env; можно задать язык вручную в кабинете 11.07.26.

Remnawave панель

  • Временные рамки webhook'ов после обновления до 2.8.0 выставляются в .env панели 15.07.26.

Кабинет (CABINET_*)

  • CABINET_URL — используется в return-URL платёжных шлюзов (см. фикс Lava): settings.CABINET_URL 15.07.26.

Период 20–31.07.2026 — Bedolaga v3.66/3.67 + Cabinet 1.64 (рекурренты Platega/Lava)

Бот Bedolaga (дословные имена)

  • PLATEGA_RECURRENT_ENABLED — гейт СБП-рекуррентов Platega, по умолчанию false; у мерчанта Platega должен быть включён метод «Подписки» 25.07.26.
  • AUTO_PURCHASE_AFTER_TOPUP_ENABLED — автопокупка после пополнения 21.07.26.
  • LAVA_SBP_DISPLAY_NAME / LAVA_DISPLAY_NAME — баг: для lava_sbp и lava_card использовалась одна переменная; фикс — разделить; правка в app/utils/payment_utils.py и app/keyboards/inline.py 26.07.26.
  • ALLOW_DEVICES_BELOW_TARIFF_LIMIT=true — возвращает старое поведение 30.07.26.
  • CABINET_REQUIRE_LEGAL_CONSENT=false — отключает согласие с офертой пруф; CABINET_LEGAL_CONSENT_PRECHECKED пруф.
  • MENU_BUTTON_WEBAPP_ENABLED / MENU_BUTTON_WEBAPP_TEXT / MENU_BUTTON_WEBAPP_URL — кнопка «Меню» открывает кабинет; по умолчанию выключено пруф.
  • BACKUP_TIME — время бэкапа базы бота 30.07.26; бэкап по расписанию — в env пруф.
  • При продлении подписки трафик не сбрасывается — «в env бедолаги есть строка, поменять значение» 29.07.26.
  • Webpage access is not allowed by Remnawave's SRR — «домен надо точно прописать, в env ищи» 30.07.26.

Панель Remnawave

  • Можно указать несколько доменов subpage в env панели 25.07.26.
  • Смена домена: после перезагрузки бота включить синхронизацию из панели; в настройках бота сменить URL и пересобрать 25.07.26.
  • Синхронизация Remna→Bedolaga: только через POST-запросы 21.07.26.

Кабинет

  • CABINET_REQUIRE_LEGAL_CONSENT, CABINET_LEGAL_CONSENT_PRECHECKED пруф; логотип в кабине грузится битым — «проблема в прокси была» пруф.

Период 31.07–09.08.2026 — Remnawave 3.0.0 (ломающий), Bedolaga v4.0.0, Cabinet 1.65

Remnawave Panel

  • APP_SECRET=change_me — JWT AUTH SECRET (ранее JWT_API_TOKENS_SECRET) пруф
  • REMNAWAVE_AUTH_TYPE=caddy — обязательная переменная для связки бот+кабина на разных серверах пруф
  • REMNAWAVE_API_URL=https://sub2.example2.tld — URL API панели для бота; при 401 в логах бот — не ошибка бота, это /api/system/stats → HTTP 401 (нужен токен) пруф
  • REMNAWAVE_USER_DELETE_MODE=delete — при удалении юзера через панель удаляет (а не отключает) пруф
  • MENU_LAYOUT_ENABLED=true — по умолчанию в доке; может ломать редактор меню пруф
  • TRAFFIC_EXCLUDED_USER_UUIDS → переименовано в TRAFFIC_EXCLUDED_USER_IDS (числовые id) пруф

Bedolaga Bot

  • GRACE_ACCESS_MODE — режимы: false / observe / true / drain пруф
  • GRACE_ACCESS_EXPIRED_TRAFFIC_GB=1 — старые переменные больше не используются пруф
  • GRACE_ACCESS_LIMITED_TRAFFIC_GB=1 — старые переменные больше не используются пруф
  • INACTIVE_USER_DELETE_MONTHS=1200 — отключение неактивных юзеров; не ставить 0 — «могут попасть под очистку все пользователи» пруф
  • YOOKASSA_TEST_MODE=true — тестовый режим (10 ₽ для проверки баланса); после теста вернуть WEBHOOK_URL=https://hooks.domain.net/payment-success + YOOKASSA_WEBHOOK_PATH=/yookassa-webhook пруф
  • ENABLE_LOGO_MODE=false — скрыть логотип в боте пруф
  • MAIN_MENU_RICH_LOGO_URL=none — скрыть логотип в боте пруф
  • MAIN_MENU_MODE=default — при cabinet → из веб-интерфейса; при default → кнопки главного меню редактируются пруф
  • WEBHOOK_URL=https://hooks.domain.net/payment-success пруф
  • YOOKASSA_WEBHOOK_PATH=/yookassa-webhook пруф

Bedolaga Cabinet (CABINET_, VITE_)

  • Вебхук-роуты монтируются только по env-флагу *_ENABLED, а не по DB-конфигу: если включаешь через админку is_enabled=true, но .env-флага нет — GET вебхук-эндпоинта отдаёт 404 → «Пропущенный колбек = висящий платёж» пруф

Период 09–20.08.2026 — Remnawave 3.2.3/3.3.0, Bedolaga v4.1.0 (GeoCheck)

Период 20–23.08.2026 — совместимость 2.8.x/3.2.2, GHCR, пин-борда

  • .env панели: при мажорном апгрейде версия меняется с 2 на 3 пруф.
  • .env бота Bedolaga — дословно упомянутая переменная:
    ADMIN_IDS=111222333
    пруф — при этом бот не реагировал (контейнер проброшен, токен верный, логи чистые, сервер не в РФ); решение в чанке не дано пруф.
  • При фиксе кабины отдельно требуется обновить .env бота (вместе с обновлением бота/кабинета/панели до ласт + прописыванием скрипта из поста) пруф.
  • Панельный вебхук бота — путь и сигнатура (из логов):
    RemnaWave webhook: invalid signature http_method=POST http_path=/remnawave-webhook
    пруф — из-за этого сообщения об обновлении бота не приходят (инфа при этом есть в кабинете); чинить подпись вебхука/токен пруф.
  • Стратегии сброса трафика в Remnawave, фигурирующие в настройках подписок: NO_RESET, MONTH_ROLLING пруф.