Развёртывание сайта¶
В этом разделе описан фактический порядок настройки iptvc, кеша и документации.
Базовый вариант развёртывания сервиса¶
Для запуска приложения не нужен репозиторий с исходниками. Достаточно скачать актуальный релиз для своей платформы.
Чтобы запустить его, достаточно расположить его в любой удобной директории на диске и выполнить команду:
Откройте в браузере адрес http://localhost:8800/ и убедитесь в работе сервиса.
Вы должны увидеть ошибку:
Всё верно. Для полноценной работы приложения в качестве веб-сервиса следует провести минимальные настройки.
Список плейлистов — playlists.ini¶
Синтаксис описан в этом разделе документации
Без этого файла нет смысла запускать веб-сервис.
Файл можно положить рядом с iptvc.
Как только вы подготовите файл, перезапустите сервис командой выше. Вы должны увидеть список плейлистов на главной странице.
Но все они будут серого цвета и будет доступна только базовая информация о них. Зато будут работать короткие ссылки и их уже можно будет казывать в своём любимом плеере.
Чтобы плейлисты позеленели, нужно запустить приложение в режиме активной проверки плейлистов:
У этой команды есть и другие аргументы
Полный список указан здесь: Команда serve.
Они позволят, при необходимости, очень гибко настроить параметры сайта и режима проверки.
Список правил — channels.json¶
Синтаксис описан в этом разделе документации
Без этого файла можно жить: веб-сервис будет работать, плейлисты и каналы будут проверяться, короткие ссылки в вашем распоряжении.
Но все каналы будут помечены как #untagged.
Это значит, что такие каналы можно будет искать только по названиям.
Поиск по жанрам и странам будет недоступен.
Это может быть важно для разных пользователей.
Поэтому варианта здесь три:
- продолжать пользоваться сервисом как есть;
- подготовить свой файл
channels.jsonсогласно его правил синтаксиса; - скачать готовый файл из репозитория: channels.json
Рекомендуется третий вариант
Файл в репозитории периодически обновляется по тем плейлистам, которые широко распространяются в сети. В нём собраны правла для многих телеканалов СНГ и Европы. Хотя и далеко не все. Поэтому, если вы умеете работать с регулярными выражениями, вы можете предложить свои правила в репозиторий.
Файл можно положить туда же — рядом с iptvc.
Когда файл будет готов, перезапустите приложение предыдущей командой.
Поздравляю, теперь у вас свой собственный рабочий агрегатор плейлистов. Вы можете его использовать в домашней сети или на своём ПК — для мониторинга состояния плейлистов или для просмотра.
Конфигурация приложения — config.yml¶
Синтаксис описан в этом разделе документации
Теперь можете приступить к конфигурации приложения.
Это позволит вам освободить руки и мозг, чтобы не запоминать и не писать длинные аргументы, а также изменять параметры, недоступные через в командной строке.
Файл можно положить туда же — рядом с iptvc.
Но постойте. Вы уже несколько раз перезапустили приложение, а результаты проверки плейлистов сбрасываются. А если вы перезагрузите компьютер, то придётся заново вручную запускать приложение.
Давайте это исправим в следующих шагах.
Развёртывание через Docker¶
Установка docker осуществляется через brew или согласно официальной документации.
Для MacOS вместо Docker Desktop рекомендую OrbStack
Он быстрый, лёгкий, бесплатный и не жрёт столько ресурсов, как официальное приложение. В общем-то, сама по себе гуйня для докера бесполезна и не нужна, но на маке эта тулза поможет с запуском докера на сокете в пространстве текущего пользователя. К сожалению, иначе на маке докер работать в фоне не может из-за политик безопасности. Либо может, но это потребует кучу гемора на ровном месте.
Для работы iptvc нужно будет скачать ещё один файл из репозитория: compose.yml.
Это конфигурация связки контейнеров, и iptvc будет запускаться в одном из них.
Скачивайте и кладите в ту же директорию, где остальные файлы.
Для теста запустите команду:
Она скачает образы, создаст контейнеры и запустит их. В результате вы сможете открыть в браузере http://localhost:8800/ и увидеть то же самое, что в прошлый раз.
Теперь подключим кэш.
Кэширование результатов¶
Для этого в compose используется Valkey. Это открытый форк Redis, продолжающий развитие за счёт сообщества и полностью поддерживающий его протокол.
Чтобы запустить связку iptvc + valkey, нужно выполнить два простых шага:
- создать директорию cache рядом с
iptvc -
внести несколько правок в файл
config.ymlприложения как показано ниже:config.yml - О параметре:
cache.enabled - О параметре:
cache.host
- О параметре:
Остановите связку контейнеров и запустите вновь, чтобы применить обновлённую конфигурацию:
Проверьте состояние контейнеров и журналы:
Веб-интерфейс приложения доступен на http://localhost:8800.
Документация доступна на http://localhost:8801.
Для остановки окружения выполните:
Реверс-прокси и SSL¶
Для публикации приложения на домене с HTTPS настроим реверс-прокси, который будет терминировать SSL и проксировать запросы на контейнеры iptvc (порт 8800) и docs (порт 8801).
site.baseUrl
После настройки домена укажите внешний адрес в config.yml или .env:
Или через переменную окружения:
О параметре: site.baseUrl
Ниже рассмотрены три варианта: nginx, Apache2 и Caddy.
Подготовка¶
Убедитесь, что:
- домен
example.com(и при необходимостиdocs.example.com) направляет A-запись на IP сервера; - порты
80и443открыты в файрволе; - Docker-окружение запущено (
docker compose up -d); - порты
8800и8801доступны локально (проверьтеcurl -I http://localhost:8800).
nginx¶
Установите nginx и Certbot:
Создайте конфигурацию для приложения:
| /etc/nginx/sites-available/iptvc | |
|---|---|
При необходимости добавьте отдельный server-блок для документации:
| /etc/nginx/sites-available/iptv-docs | |
|---|---|
Включите конфигурации и проверьте синтаксис:
sudo ln -s /etc/nginx/sites-available/iptvc /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/iptv-docs /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Получите SSL-сертификат через Certbot:
Certbot автоматически изменит конфигурацию nginx, добавит HTTPS и настройке редирект с HTTP на HTTPS.
Проверьте автоматическое продление:
Apache2¶
Установите Apache2 и Certbot:
Включите необходимые модули:
Создайте конфигурацию виртуального хоста для приложения:
| /etc/apache2/sites-available/iptvc.conf | |
|---|---|
При необходимости добавьте виртуальный хост для документации:
| /etc/apache2/sites-available/iptv-docs.conf | |
|---|---|
Включите конфигурации и проверьте синтаксис:
Получите SSL-сертификат через Certbot:
Certbot автоматически создаст HTTPS-виртуальные хосты и настроит редирект с HTTP на HTTPS.
Проверьте автоматическое продление:
Caddy¶
Caddy — современный веб-сервер с автоматическим управлением HTTPS-сертификатами через Let's Encrypt и ZeroSSL. В отличие от nginx и Apache2, Caddy не требует Certbot: сертификаты запрашиваются и продлеваются автоматически при старте.
Почему Caddy?
Caddy единственный из рассмотренных серверов получает и продлевает TLS-сертификаты без внешних инструментов. Достаточно указать доменное имя — и Caddy сам запросит сертификат, настроит редирект с HTTP на HTTPS и будет продлевать его до истечения. Это сильно упрощает эксплуатацию: меньше движущихся частей, меньше шагов настройки, меньше поводов для ошибок.
Установите Caddy согласно официальной документации:
sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy
Создайте или отредактируйте конфигурационный файл Caddyfile:
| /etc/caddy/Caddyfile | |
|---|---|
Проверьте конфигурацию и перезапустите Caddy:
При первом запуске Caddy автоматически запросит SSL-сертификаты для указанных доменов, настроит редирект с HTTP на HTTPS и будет продлевать сертификаты до истечения срока действия.
Проверьте статус сервиса:
Если потребуется просмотреть журналы:
Проверка¶
После настройки откройте в браузере:
https://example.com— веб-интерфейсiptvc;https://docs.example.com— сайт документации.
Убедитесь, что сертификат валиден, а редирект с HTTP на HTTPS работает.
Ограничение портов
После настройки реверс-прокси можно убрать публикацию портов 8800 и 8801 наружу в compose.yml, оставив их доступными только локально.
Это предотвратит прямой доступ к сервисам в обход прокси.
Сборка образа iptvc¶
Для сборки и публикации образа используйте цели Makefile в каталоге iptvc/:
cd iptvc
# Сборка одноархитектурного образа (linux/amd64 по умолчанию)
make image
# Сборка под arm64
make image GOARCH=arm64
# Сборка с указанием тега
make image IMAGE_TAG=v1.2.3
Для публикации multi-arch манифеста (linux/amd64 + linux/arm64):
Цель image-all всегда отправляет образ в registry — это ограничение docker buildx: multi-arch манифест нельзя загрузить в локальный Docker daemon.
Перед публикацией войдите в registry, если это требуется вашей настройкой:
Рабочее дерево Git
Версия и коммит вшиваются в бинарь из git describe и git rev-parse на хосте в момент запуска make.
Перед сборкой убедитесь, что рабочая копия чистая и находится на нужном теге или коммите.
Обновление¶
После изменения конфигурации или исходного кода пересоберите и перезапустите сервисы:
Чтобы пересобрать только приложение iptvc:
Чтобы использовать опубликованный образ вместо локальной сборки, загрузите его и пересоздайте сервис:
Обновление документации выполняется пересборкой сервиса docs:
Диагностика¶
Для просмотра журналов отдельных сервисов используйте:
Для проверки конфигурации Compose выполните:
Если iptvc не подключается к кешу, проверьте, что в .env параметр CACHE_HOST имеет значение cache, а сервис cache запущен.