Files
docs/content/iptvc/config/env.md
T
2026-07-13 12:30:05 +08:00

117 lines
7.5 KiB
Markdown

---
icon: simple/dotenv
tags: ["iptvc", "переменные окружения"]
---
# :simple-dotenv: Переменные окружения
Переменные окружения переопределяют значения из [`config.yml`](config.md).
Файл `.env` загружается автоматически при запуске.
Приоритет: **defaults → config.yml → env → CLI-флаги**.
## Приложение
| Имя | Тип | Умолчание | Назначение |
| ---------------- | ------ | ----------------------- | ----------------------------------------- |
| `APP_DEBUG` | bool | `false` | Режим отладки |
| `APP_LOG_LEVEL` | string | `info` | Уровень логирования (`debug`, `info`, `warn`, `error`) |
| `APP_TIMEZONE` | string | `GMT` | Часовой пояс |
| `APP_PLAYLISTS` | string | `./playlists.ini` | Путь к `playlists.ini` |
| `APP_TAGS` | string | `./channels.json` | Путь к `channels.json` |
## Веб-сервер и сайт
| Имя | Тип | Умолчание | Назначение |
| ---------------- | ------ | ----------------------------- | ----------------------------------- |
| `WEB_PORT` | uint | `8080` | Порт веб-сервера |
| `WEB_HOST` | string | (пусто) | Хост для привязки |
| `APP_URL` | string | `http://localhost:8080` | Базовый URL для ссылок |
| `PAGE_SIZE` | uint | `0` | Размер страницы (0 — без пагинации) |
| `REPO_URL` | string | `https://git.axenov.dev/IPTV` | Ссылка на репозиторий |
| `SITE_FAVICON` | string | (пусто) | Путь к иконке сайта |
| `APP_TITLE` | string | `IPTV Checker` | Заголовок сайта |
## Проверка
| Имя | Тип | Умолчание | Назначение |
| ----------------------- | --- | --------- | ------------------------------------------------------- |
| `CHECK_START_ON_SERVE` | bool | `false` | Запустить фоновую проверку при `serve` без флага `--check` |
### `check.playlists`
| Имя | Тип | Умолчание | Назначение |
| --- | --- | --- | --- |
| `CHECK_PLAYLISTS_TIMEOUT` | int | `10000` | Таймаут запроса плейлиста (мс) |
| `CHECK_PLAYLISTS_ALL_COOLDOWN` | int | `0` | Задержка после всех плейлистов (мс, скаляр) |
| `CHECK_PLAYLISTS_ALL_COOLDOWN_MIN` | int | `0` | Минимум задержки после всех плейлистов (мс) |
| `CHECK_PLAYLISTS_ALL_COOLDOWN_MAX` | int | `0` | Максимум задержки после всех плейлистов (мс) |
| `CHECK_PLAYLISTS_ONE_COOLDOWN` | int | `0` | Задержка после каждого плейлиста (мс, скаляр) |
| `CHECK_PLAYLISTS_ONE_COOLDOWN_MIN` | int | `0` | Минимум задержки после каждого плейлиста (мс) |
| `CHECK_PLAYLISTS_ONE_COOLDOWN_MAX` | int | `0` | Максимум задержки после каждого плейлиста (мс) |
| `CHECK_PLAYLISTS_MAX_ROUTINES` | int | `5` | Максимум параллельных проверок плейлистов |
| `CHECK_PLAYLISTS_PER_ROUTINE` | int | `1` | Плейлистов на процедуру |
| `CHECK_PLAYLISTS_USER_AGENT_1` | string | `Mozilla/5.0 …` | Первый User-Agent для запросов плейлистов |
| `CHECK_PLAYLISTS_USER_AGENT_2` | string | — | Второй User-Agent (и т.д.) |
### `check.channels`
| Имя | Тип | Умолчание | Назначение |
| --- | --- | --- | --- |
| `CHECK_CHANNELS_TIMEOUT` | int | `10000` | Таймаут запроса канала (мс) |
| `CHECK_CHANNELS_BYTE_RANGE` | int | `512` | Объём данных от сервера (байт) |
| `CHECK_CHANNELS_COOLDOWN` | int | `0` | Задержка после каждого канала (мс, скаляр) |
| `CHECK_CHANNELS_COOLDOWN_MIN` | int | `0` | Минимум задержки после каждого канала (мс) |
| `CHECK_CHANNELS_COOLDOWN_MAX` | int | `0` | Максимум задержки после каждого канала (мс) |
| `CHECK_CHANNELS_MAX_ROUTINES` | int | `50` | Максимум параллельных проверок каналов |
| `CHECK_CHANNELS_PER_ROUTINE` | int | `10` | Каналов на процедуру |
| `CHECK_CHANNELS_USER_AGENT_1` | string | `Mozilla/5.0 …` | Первый User-Agent для запросов каналов |
| `CHECK_CHANNELS_USER_AGENT_2` | string | — | Второй User-Agent (и т.д.) |
## Кеширование
Кеш хранится в СУБД redis или keydb.
| Имя | Тип | Умолчание | Назначение |
| ---------------- | ------ | ----------- | ---------------------------------- |
| `CACHE_ENABLED` | bool | `false` | Включает кеширование |
| `CACHE_HOST` | string | `localhost` | Имя хоста СУБД |
| `CACHE_PORT` | uint | `6379` | Порт СУБД |
| `CACHE_USERNAME` | string | (пусто) | Логин пользователя в СУБД |
| `CACHE_PASSWORD` | string | (пусто) | Пароль пользователя в СУБД |
| `CACHE_DB` | uint | `0` | Номер БД в СУБД для кеша |
| `CACHE_TTL` | uint | `1800` | Время жизни ключей кеша в секундах |
## Правила
### Диапазоны cooldown
Поля `all-cooldown`, `one-cooldown` и `channels.cooldown` поддерживают скаляр и диапазон `[min, max]`.
Через env-переменные:
- Заданы **обе** `_MIN` и `_MAX` → диапазон (случайное значение при каждой проверке).
- Задана только **скалярная** переменная (без суффикса) → фиксированное значение.
- Задана только **одна** из `_MIN` / `_MAX` → переменная игнорируется.
```shell title="Скаляр"
CHECK_PLAYLISTS_ALL_COOLDOWN=500
```
```shell title="Диапазон"
CHECK_PLAYLISTS_ALL_COOLDOWN_MIN=100
CHECK_PLAYLISTS_ALL_COOLDOWN_MAX=2000
```
### Массивы user-agent
Поля `user-agent` поддерживают массив строк. Через env задаются индексированными переменными `_1`, `_2`, `_3`, …
- Чтение останавливается на первой отсутствующей переменной.
- Пустые значения пропускаются.
```shell title="Два User-Agent"
CHECK_PLAYLISTS_USER_AGENT_1=Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
CHECK_PLAYLISTS_USER_AGENT_2=curl/8.0
```