---
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-файлу](../../ref/formats/playlists.md) с описанием плейлистов.

Значение по умолчанию: `./playlists.ini`

```bash
iptvc serve --check -i ~/my.ini
```

### `-t`, `--tags` { id="tags" }

Путь к [json-файлу](../../ref/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`                    | Редирект на прямую ссылку плейлиста      |
| GET   | `/{code}.m3u8`                   | Редирект на прямую ссылку плейлиста      |
| 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: статистика по плейлистам и каналам |
