--- title: serve tags: [iptvc] --- # Команда `serve` Запускает встроенный веб-сервер для просмотра плейлистов и результатов их проверки в браузере. ```bash iptvc serve [flags] ``` ## Веб-сервер ### `-p`, `--port` { id="port" } Порт для веб-сервера. Переопределяет `server.port` из `config.yml` и переменную `SERVER_PORT`. Если не указан, используется значение из `config.yml` (по умолчанию `8800`). ```bash iptvc serve -p 3000 ``` ### `--host` { id="host" } Хост для привязки веб-сервера. Переопределяет `server.host` из `config.yml` и переменную `SERVER_HOST`. Если не указан, используется значение из `config.yml` (по умолчанию — все интерфейсы). ```bash iptvc serve --host 127.0.0.1 ``` ## Фоновая проверка ### `--check` { id="check" } Включает фоновую проверку плейлистов. По умолчанию выключена. Без этого флага веб-сервер работает standalone — отображает данные из кеша (если включён) или статус `unknown` для всех плейлистов. ```bash iptvc serve --check ``` При `--check` доступны следующие флаги: ### `-i`, `--ini` { id="ini" } Путь к локальному [ini-файлу](../../common/formats/playlists.md) с описанием плейлистов. Значение по умолчанию: `./playlists.ini` ```bash iptvc serve --check -i ~/my.ini ``` ### `-t`, `--tags` { id="tags" } Путь к [json-файлу](../../common/formats/channels.md) с описанием тегов каналов. Значение по умолчанию: `./channels.json` ```bash iptvc serve --check -t ~/tags.json ``` ### `--playlists-all-cooldown` { id=playlists-all-cooldown } Пауза между полными циклами фоновой проверки в секундах. Параметр переопределяет `check.playlists.all-cooldown` из конфигурации. Значение по умолчанию: значение `check.playlists.all-cooldown` из конфигурации, обычно `1800` (30 минут). ```bash # пауза 2 минуты между циклами iptvc serve --check --playlists-all-cooldown 120 ``` ### `--repeat` { id="repeat" } Количество циклов фоновой проверки. Значение по умолчанию: `0` (бесконечно) ```bash # проверить один раз и остановить фоновую проверку iptvc serve --check --repeat 1 ``` ### `-r`, `--random` { id="random" } Максимальное количество случайных плейлистов из ini-файла для проверки. ```bash iptvc serve --check -r 10 ``` ## Глобальные флаги ### `--config` { id="config" } Путь к файлу конфигурации `config.yml`. Значение по умолчанию: `config.yml` ```bash iptvc serve --config /etc/iptvc/config.yml ``` ### `--debug` { id="debug" } Включает режим отладки. Переопределяет `app.debug` из `config.yml` и переменную `APP_DEBUG`. ```bash iptvc serve --debug ``` ### `--log-level` { id="log-level" } Устанавливает уровень логирования. Переопределяет `app.log_level` из `config.yml`. Доступные значения: `debug`, `info`, `warn`, `error`. ```bash iptvc serve --log-level debug ``` ### `-v`, `--verbose` { id="verbose" } Включает подробное логирование. ## Флаги проверки плейлистов Эти флаги переопределяют параметры секции `check.playlists` из `config.yml`. Доступны для команд `check` и `serve`. Имеют смысл только при включённой фоновой проверке (`--check` или `check.start-on-serve: true`). ### `--playlists-timeout` { id="playlists-timeout" } Таймаут HTTP-запроса плейлиста в секундах. Переопределяет `check.playlists.timeout` (по умолчанию `10`). ```bash iptvc serve --check --playlists-timeout 5 ``` ### `--playlists-all-cooldown` { id="playlists-all-cooldown" } Задержка в секундах после проверки всех плейлистов. Переопределяет `check.playlists.all-cooldown` (по умолчанию `1800`). ```bash iptvc serve --check --playlists-all-cooldown 10 ``` ### `--playlists-one-cooldown` { id="playlists-one-cooldown" } Задержка в секундах после проверки каждого плейлиста. Переопределяет `check.playlists.one-cooldown` (по умолчанию `2`). ```bash iptvc serve --check --playlists-one-cooldown 2 ``` ### `--playlists-max-routines` { id="playlists-max-routines" } Максимум одновременно проверяемых плейлистов. Переопределяет `check.playlists.max-routines` (по умолчанию `1`). ```bash iptvc serve --check --playlists-max-routines 10 ``` ### `--playlists-per-routine` { id="playlists-per-routine" } Количество плейлистов на одну процедуру проверки. Переопределяет `check.playlists.per-routine` (по умолчанию `1`). ```bash iptvc serve --check --playlists-per-routine 3 ``` ### `--playlists-user-agent` { id="playlists-user-agent" } User-Agent для HTTP-запросов плейлистов. Можно указать несколько — будет выбран случайный при каждом запросе. Переопределяет `check.playlists.user-agent`. ```bash iptvc serve --check --playlists-user-agent "Mozilla/5.0" "curl/8.0" ``` ## Флаги проверки каналов Эти флаги переопределяют параметры секции `check.channels` из `config.yml`. Доступны для команд `check` и `serve`. Имеют смысл только при включённой фоновой проверке. ### `--channels-timeout` { id="channels-timeout" } Таймаут HTTP-запроса канала в секундах. Переопределяет `check.channels.timeout` (по умолчанию `10`). ```bash iptvc serve --check --channels-timeout 8 ``` ### `--channels-byte-range` { id="channels-byte-range" } Объём данных в байтах для загрузки от сервера при проверке канала. Переопределяет `check.channels.byte-range` (по умолчанию `512`). ```bash iptvc serve --check --channels-byte-range 1024 ``` ### `--channels-cooldown` { id="channels-cooldown" } Задержка в секундах после проверки каждого канала. Переопределяет `check.channels.cooldown` (по умолчанию `0`). ```bash iptvc serve --check --channels-cooldown 1 ``` ### `--channels-max-routines` { id="channels-max-routines" } Максимум одновременно проверяемых каналов. Переопределяет `check.channels.max-routines` (по умолчанию `50`). ```bash iptvc serve --check --channels-max-routines 100 ``` ### `--channels-per-routine` { id="channels-per-routine" } Количество каналов на одну процедуру проверки. Переопределяет `check.channels.per-routine` (по умолчанию `10`). ```bash iptvc serve --check --channels-per-routine 20 ``` ### `--channels-user-agent` { id="channels-user-agent" } User-Agent для HTTP-запросов каналов. Можно указать несколько — будет выбран случайный при каждом запросе. Переопределяет `check.channels.user-agent`. ```bash iptvc serve --check --channels-user-agent "Mozilla/5.0" "VLC/3.0" ``` ## Флаги кеша Эти флаги переопределяют параметры секции `cache` из `config.yml`. Доступны для команд `check` и `serve`. ### `--cache-enabled` { id="cache-enabled" } Включает кеширование результатов в KeyDB/Redis. Переопределяет `cache.enabled` (по умолчанию `false`). ```bash iptvc serve --cache-enabled ``` ### `--cache-host` { id="cache-host" } Хост KeyDB/Redis. Переопределяет `cache.host` (по умолчанию `localhost`). ```bash iptvc serve --cache-enabled --cache-host 192.168.1.10 ``` ### `--cache-port` { id="cache-port" } Порт KeyDB/Redis. Переопределяет `cache.port` (по умолчанию `6379`). ```bash iptvc serve --cache-enabled --cache-port 6380 ``` ### `--cache-username` { id="cache-username" } Логин для подключения к KeyDB/Redis. Переопределяет `cache.username`. ```bash iptvc serve --cache-enabled --cache-username myuser ``` ### `--cache-password` { id="cache-password" } Пароль для подключения к KeyDB/Redis. Переопределяет `cache.password`. ```bash iptvc serve --cache-enabled --cache-password secret ``` ### `--cache-db` { id="cache-db" } Номер базы данных KeyDB/Redis. Переопределяет `cache.db` (по умолчанию `0`). ```bash iptvc serve --cache-enabled --cache-db 2 ``` ### `--cache-ttl` { id="cache-ttl" } TTL записей кеша в секундах. Переопределяет `cache.ttl` (по умолчанию `30`). ```bash iptvc serve --cache-enabled --cache-ttl 3600 ``` ## Примеры ```bash # просто веб-сервер без проверки iptvc serve # веб-сервер с фоновой проверкой каждые 2 минуты iptvc serve --check --playlists-all-cooldown 120 # веб-сервер на порту 3000 с проверкой 10 случайных плейлистов iptvc serve -p 3000 --check -r 10 # один цикл проверки, затем только веб-сервер iptvc serve --check --repeat 1 # веб-сервер с кешем и фоновой проверкой, увеличенные лимиты параллелизма iptvc serve --check --cache-enabled \ --playlists-max-routines 10 \ --channels-max-routines 100 # веб-сервер с отладкой и кастомным user-agent iptvc serve --check --debug \ --playlists-user-agent "Mozilla/5.0" \ --channels-user-agent "VLC/3.0" ``` ## Веб-маршруты | Метод | Путь | Описание | | --- | --- | --- | | GET | `/` | Главная страница со списком плейлистов | | GET | `/page/{N}` | Страница N списка плейлистов | | GET | `/{code}` | Редирект на прямую ссылку плейлиста | | GET | `/{code}.m3u[8]` | Редирект на прямую ссылку плейлиста | | GET | `/{code}/details` | Страница с описанием плейлиста | | GET | `/api` | Редирект на `/api/` (Swagger UI) | | GET | `/api/` | Swagger UI с описанием REST API | | GET | `/api/openapi.json` | OpenAPI-схема в формате JSON | | GET | `/api/playlists` | JSON: массив всех плейлистов | | GET | `/api/playlists/{code}` | JSON: информация о плейлисте | | GET | `/api/playlists/{code}/channels` | JSON: список каналов плейлиста | | GET | `/api/version` | JSON: версии компонентов | | GET | `/api/health` | JSON: состояние сервиса | | GET | `/api/stats` | JSON: статистика по плейлистам и каналам |