5.7 KiB
icon, tags
| icon | tags | |||
|---|---|---|---|---|
| material/upload-network |
|
: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.iniplaylists/channels.json→/app/channels.jsoniptvc/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