docs: update docs
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# Настройка окружения
|
||||
|
||||
Конфигурация читается из `.env`. За основу удобно взять `.env.example` и заполнить значения под свою панель, домены и платежные провайдеры.
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
nano .env
|
||||
```
|
||||
|
||||
## Основные настройки
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `BOT_TOKEN` | Токен Telegram-бота. |
|
||||
| `ADMIN_IDS` | Telegram ID администраторов через запятую. |
|
||||
| `DEFAULT_LANGUAGE` | Язык по умолчанию для пользователей: `ru` или `en`. |
|
||||
| `SUPPORT_LINK` | Ссылка на поддержку. |
|
||||
| `PRIVACY_POLICY_URL` | Ссылка на политику конфиденциальности в Web App. |
|
||||
| `USER_AGREEMENT_URL` | Ссылка на пользовательское соглашение в Web App. |
|
||||
| `REQUIRED_CHANNEL_ID` | ID канала, на который пользователь должен подписаться перед использованием. |
|
||||
| `REQUIRED_CHANNEL_LINK` | Ссылка на канал для кнопки проверки подписки. |
|
||||
|
||||
Если используется проверка подписки на канал, добавьте бота администратором в этот канал. После первой успешной проверки пользователь продолжает работу без повторной блокировки действий.
|
||||
|
||||
## Remnawave
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `PANEL_API_URL` | URL API панели Remnawave, например `https://panel.domain.com/api`. |
|
||||
| `PANEL_API_KEY` | API-ключ панели. |
|
||||
| `PANEL_WEBHOOK_SECRET` | Секрет для проверки вебхуков Remnawave. |
|
||||
| `USER_SQUAD_UUIDS` | Internal Squads, в которые добавляются пользователи. |
|
||||
| `USER_EXTERNAL_SQUAD_UUID` | External Squad для пользователей, если он используется. |
|
||||
| `USER_TRAFFIC_LIMIT_GB` | Лимит трафика для режима без JSON-каталога тарифов. `0` означает безлимит. |
|
||||
| `USER_TRAFFIC_STRATEGY` | Стратегия лимита трафика для режима без JSON-каталога тарифов. |
|
||||
| `USER_HWID_DEVICE_LIMIT` | Лимит HWID-устройств для пользователей. `0` означает безлимит. |
|
||||
|
||||
При включенном каталоге тарифов значения `squad_uuids`, `monthly_gb`, `traffic_packages` и `hwid_device_limit` берутся из выбранного тарифа. Подробно это описано в [tariffs.md](tariffs.md).
|
||||
|
||||
## Платежи
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `PAYMENT_METHODS_ORDER` | Порядок кнопок оплаты через запятую: `severpay`, `freekassa`, `platega`, `yookassa`, `stars`, `cryptopay`. |
|
||||
| `YOOKASSA_ENABLED` | Включает YooKassa. |
|
||||
| `YOOKASSA_SHOP_ID` / `YOOKASSA_SECRET_KEY` | Данные магазина YooKassa. |
|
||||
| `YOOKASSA_AUTOPAYMENTS_ENABLED` | Включает автопродление через сохраненные способы оплаты YooKassa. |
|
||||
| `YOOKASSA_AUTOPAYMENTS_REQUIRE_CARD_BINDING` | Управляет обязательной привязкой карты при оплате. |
|
||||
| `FREEKASSA_ENABLED` | Включает FreeKassa. |
|
||||
| `FREEKASSA_MERCHANT_ID` / `FREEKASSA_API_KEY` / `FREEKASSA_SECOND_SECRET` | Данные FreeKassa и секрет уведомлений. |
|
||||
| `FREEKASSA_PAYMENT_IP` | Внешний IP сервера для запроса оплаты FreeKassa. |
|
||||
| `FREEKASSA_PAYMENT_METHOD_ID` | ID метода оплаты FreeKassa. |
|
||||
| `PLATEGA_ENABLED` | Включает Platega. |
|
||||
| `PLATEGA_MERCHANT_ID` / `PLATEGA_SECRET` | Данные Platega. |
|
||||
| `PLATEGA_PAYMENT_METHOD` | ID способа оплаты Platega. |
|
||||
| `PLATEGA_RETURN_URL` / `PLATEGA_FAILED_URL` | URL возврата после оплаты или ошибки. |
|
||||
| `SEVERPAY_ENABLED` | Включает SeverPay. |
|
||||
| `SEVERPAY_MID` / `SEVERPAY_TOKEN` | Данные SeverPay. |
|
||||
| `SEVERPAY_BASE_URL` | Базовый URL API SeverPay. |
|
||||
| `SEVERPAY_RETURN_URL` | URL возврата после оплаты. |
|
||||
| `SEVERPAY_LIFETIME_MINUTES` | Время жизни платежной ссылки. |
|
||||
| `CRYPTOPAY_ENABLED` | Включает CryptoPay. |
|
||||
| `CRYPTOPAY_TOKEN` | Токен CryptoPay App. |
|
||||
| `STARS_ENABLED` | Включает Telegram Stars. |
|
||||
|
||||
Вебхуки платежных систем должны проксироваться на порт `WEB_SERVER_PORT`. Примеры маршрутов есть в [deployment.md](deployment.md).
|
||||
|
||||
## Тарифы
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `TARIFFS_CONFIG_PATH` | Путь к JSON-каталогу тарифов. По умолчанию `config/tariffs.json`. |
|
||||
| `TARIFF_TRAFFIC_WARNING_LEVELS` | Проценты предупреждений по трафику, например `85,90,95`. |
|
||||
| `RUB_PRICE_1_MONTH`, `RUB_PRICE_3_MONTHS`, `RUB_PRICE_6_MONTHS`, `RUB_PRICE_12_MONTHS` | Цены подписок в рублях для режима без JSON-каталога. |
|
||||
| `STARS_PRICE_1_MONTH`, `STARS_PRICE_3_MONTHS`, `STARS_PRICE_6_MONTHS`, `STARS_PRICE_12_MONTHS` | Цены подписок в Telegram Stars для режима без JSON-каталога. |
|
||||
| `1_MONTH_ENABLED`, `3_MONTHS_ENABLED`, `6_MONTHS_ENABLED`, `12_MONTHS_ENABLED` | Доступность периодов подписки для режима без JSON-каталога. |
|
||||
| `TRAFFIC_PACKAGES` | Пакеты трафика в рублях для режима без JSON-каталога, например `10:199,50:799`. |
|
||||
| `STARS_TRAFFIC_PACKAGES` | Пакеты трафика в Telegram Stars для режима без JSON-каталога. |
|
||||
|
||||
Если файл из `TARIFFS_CONFIG_PATH` существует, бот использует каталог тарифов. Если файла нет, применяется конфигурация из переменных `.env`.
|
||||
|
||||
## Web App и email-вход
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `WEBAPP_ENABLED` | Включает Web App в том же контейнере. |
|
||||
| `WEBAPP_SERVER_HOST` / `WEBAPP_SERVER_PORT` | Хост и порт Web App. По умолчанию порт `8081`. |
|
||||
| `SUBSCRIPTION_MINI_APP_URL` | Публичный URL Web App. |
|
||||
| `WEBAPP_TITLE` | Заголовок Web App. |
|
||||
| `WEBAPP_PRIMARY_COLOR` | Основной цвет интерфейса. |
|
||||
| `WEBAPP_LOGO_URL` | URL логотипа Web App. |
|
||||
| `WEBAPP_SESSION_SECRET` | HMAC-секрет сессий Web App. |
|
||||
| `TELEGRAM_OAUTH_CLIENT_ID` / `TELEGRAM_OAUTH_CLIENT_SECRET` | Данные Telegram OAuth / OpenID Connect из BotFather. |
|
||||
| `TELEGRAM_OAUTH_REQUEST_ACCESS` | Дополнительные разрешения Telegram Login, например `write`. |
|
||||
| `SMTP_HOST`, `SMTP_PORT`, `SMTP_FALLBACK_PORTS` | SMTP-подключение для email-кодов. |
|
||||
| `SMTP_USERNAME` / `SMTP_PASSWORD` | Логин и пароль или SMTP key. |
|
||||
| `SMTP_FROM_EMAIL` / `SMTP_FROM_NAME` | Отправитель писем с кодом. |
|
||||
| `EMAIL_CODE_TTL_SECONDS` | Срок действия email-кода. |
|
||||
| `EMAIL_CODE_RESEND_SECONDS` | Пауза перед повторной отправкой кода. |
|
||||
| `EMAIL_CODE_MAX_ATTEMPTS` | Максимум попыток ввода одного кода. |
|
||||
| `BRUTE_FORCE_MAX_FAILURES` | Количество неудачных попыток до временной блокировки. |
|
||||
| `BRUTE_FORCE_WINDOW_SECONDS` | Окно учета неудачных попыток. |
|
||||
| `BRUTE_FORCE_LOCK_SECONDS` | Длительность временной блокировки. |
|
||||
| `MY_DEVICES_SECTION_ENABLED` | Показывает раздел "Мои устройства" и включает API устройств. |
|
||||
|
||||
Настройка домена, BotFather и callback URL описана в [webapp.md](webapp.md).
|
||||
|
||||
## Пробный период
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `TRIAL_ENABLED` | Включает пробный период. |
|
||||
| `TRIAL_DURATION_DAYS` | Длительность пробного периода в днях. |
|
||||
| `TRIAL_TRAFFIC_LIMIT_GB` | Лимит трафика пробного периода. `0` означает безлимит. |
|
||||
| `TRIAL_TRAFFIC_STRATEGY` | Стратегия лимита трафика пробного периода. |
|
||||
|
||||
## Реферальная программа
|
||||
|
||||
| Переменная | Назначение |
|
||||
| --- | --- |
|
||||
| `REFERRAL_WELCOME_BONUS_DAYS` | Бонус пользователю, который пришел по реферальной ссылке. |
|
||||
| `REFERRAL_ONE_BONUS_PER_REFEREE` | Ограничивает бонусы одним успешным платежом приглашенного пользователя. |
|
||||
| `REFERRAL_BONUS_DAYS_*` | Бонусные дни пригласившему по периодам подписки. |
|
||||
| `REFEREE_BONUS_DAYS_*` | Бонусные дни приглашенному по периодам подписки. |
|
||||
| `LEGACY_REFS` | Разрешает ссылки формата `ref_<telegram_id>`. |
|
||||
|
||||
В режиме продажи трафика без JSON-каталога бонусы по периодам не отображаются, потому что покупка не привязана к сроку подписки.
|
||||
|
||||
## Секреты
|
||||
|
||||
`WEBAPP_SESSION_SECRET` и `WEBHOOK_SECRET_TOKEN` могут генерироваться при старте, но для рабочего окружения их лучше задать явно. Иначе после рестарта сессии Web App станут невалидными, а Telegram webhook будет установлен с другим secret token.
|
||||
|
||||
```bash
|
||||
openssl rand -hex 32
|
||||
```
|
||||
Reference in New Issue
Block a user