Files
docs/content/iptvc/site/deploy.md
T
2026-07-16 00:03:37 +08:00

5.7 KiB
Raw Blame History

icon, tags
icon tags
material/upload-network
iptvc
docker
deploy

:material-upload-network: Развёртывание и доставка обновлений

В этом разделе описано, как развернуть полную инфраструктуру проекта m3u.su на собственном сервере: веб-сервер, фоновую проверку плейлистов, кеш и документацию.

Требования

  • Docker с плагином docker compose (v2)
  • Доступ к репозиториям git.axenov.dev/IPTV

Структура окружения

Полное Docker-окружение описано в compose.yml и состоит из пяти сервисов:

Сервис Образ Назначение
nginx nginx:latest Reverse-proxy, порт 3000→80
keydb eqalpha/keydb:latest Кеш (форк Redis), порт 6379
web PHP-FPM (сборка из web/) Legacy веб-слой
checker iptvc (сборка из iptvc/) Фоновая проверка плейлистов
docs MkDocs (сборка из docs/) Статическая документация, порт 3001→80

Переменные окружения

Перед запуском скопируйте .env.example в .env и при необходимости отредактируйте:

Переменная По умолчанию Назначение
IPTV_ENV dev Окружение (dev/prod), влияет на конфиги PHP
KEYDB_UID 1000 ID пользователя KeyDB
KEYDB_GID 1000 ID группы KeyDB
KEYDB_PORT 6379 Порт KeyDB на хосте
KEYDB_USERNAME (пусто) Логин KeyDB
KEYDB_PASSWORD (пусто) Пароль KeyDB
CHECKER_DB 0 Номер БД KeyDB для кеша
CHECKER_TTL 1800 TTL кеша в секундах
CHECKER_WAIT 60 Секунд между запусками iptvc check
CHECKER_INIFILE /app/playlists.ini Путь к playlists.ini в контейнере
CHECKER_TAGFILE /app/channels.json Путь к channels.json в контейнере

Управление через скрипт iptv

В корне репозитория находится bash-скрипт iptv для управления окружением:

./iptv init      # клонировать подпроекты, собрать и запустить
./iptv up        # построить и запустить контейнеры
./iptv down      # остановить и удалить контейнеры
./iptv rebuild   # down + up (с пересборкой образов)
./iptv restart   # stop + start
./iptv stop      # остановить контейнеры
./iptv start     # запустить контейнеры
./iptv purge     # удалить контейнеры и образы
./iptv logs <сервис>          # логи сервиса
./iptv stats --no-stream      # потребление ресурсов
./iptv exec <сервис> <команда>           # команда в контейнере
./iptv exec --root <сервис> <команда>    # от имени root

!!! warning "docker compose v2" Скрипт использует docker compose (v2). docker-compose (v1) не поддерживается.

Ручное управление

Без скрипта iptv можно управлять окружением напрямую:

# Запуск всех сервисов
docker compose up -d --build

# Остановка
docker compose down

// Логи конкретного сервиса
docker compose logs -f checker

// Перезапуск одного сервиса
docker compose restart checker

Сервис checker

Контейнер checker запускает iptvc с командой:

check --repeat 0 --every ${CHECKER_WAIT:-60}

Это означает бесконечную (--repeat 0) фоновую проверку всех плейлистов из playlists.ini каждые 60 секунд (настраивается через CHECKER_WAIT).

Контейнер монтирует:

  • playlists/playlists.ini/app/playlists.ini
  • playlists/channels.json/app/channels.json
  • iptvc/config.yml/app/config.yml (только чтение)

Переменные окружения для кеша передаются автоматически из .env.

Обновление

Чтобы обновить образы и пересобрать контейнеры:

./iptv rebuild

Или вручную:

docker compose pull
docker compose up -d --build

Для обновления только iptvc:

docker compose build checker
docker compose up -d checker