Env-переменные
Дословные .env по периодам: бот, кабинет, панель, платёжки.
Период 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 пруф; Pal24PAL24_ENABLED/API_KEY/SBP/CARD_BUTTON_VISIBLE; MulenMULENPAY_ENABLED/SHOP_ID/API_KEY/DISPLAY_NAME; WATA пруф; Heleket пруф; Platega пруф; StarsTELEGRAM_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=8086RETURN_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=8085MulenPay пруф:
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=10000000Tribute пруф:
TRIBUTE_ENABLED=
TRIBUTE_API_KEY=
TRIBUTE_DONATE_LINK=
TRIBUTE_WEBHOOK_PATH=/tribute-webhook
TRIBUTE_WEBHOOK_HOST=0.0.0.0CloudPayments 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=falseNginx/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=1440RollyPay 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 URIhttps://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пруф; LavaLAVA_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=8086Antilopay пруф
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_idMiniApp
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:
Платежки:
Период 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=falseBedolaga 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_DAYSMAIN_MENU_RICH_LOGO_URL=none— пусто = авто-режим, а не «без логотипа»; rich не включается без логотипа (либо дефолтный, либо ждёт свой); если ссылка не картинка — бот выглядит как «не рич» 19.07.26. - Кнопка кабинета в боте:
CABINET_ENABLED=true13.07.26. - Бэкапы:
BACKUP_AUTO_ENABLED=false|true[id=847895|11.07.2026; пруф. - Логотип на главной в боте отключается настройкой
ENABLE LOGO MODE14.07.26. - Уведомления о старте («уведы о старте») настраиваются в
.env15.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_URL15.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.py26.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)
- APP_SECRET (ex JWT_*) пруф пруф; ForceIP ex UseIP пруф; trafic_excluded пруф
- Main_menu_mode=cabinet пруф; MAIN_MENU_RICH_ENABLED пруф; REMNAWAVE_AUTO_SYNC_TIMES UTC пруф; SMTP_REPLY_TO пруф; BAN_MSG_* пруф
- CABINET_REQUIRE_LEGAL_CONSENT пруф; auth_date 30 суток пруф
- Webhook URL в платёжке пруф; 405 реверс-прокси пруф
Период 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пруф.