Инфраструктурный слой проекта iptv.axenov.dev

Docker-окружение для работы проекта iptv.axenov.dev.

Веб-сайт: iptv.axenov.dev
Зеркало: m3u.su
Исходный код: git.axenov.dev/IPTV
Telegram-канал: @iptv_aggregator
Обсуждение: @iptv_aggregator_chat
Дополнительные сведения: git.axenov.dev/IPTV/.profile

Использованный стек

Установка и настройка

wget -O -  https://git.axenov.dev/IPTV/iptv-docker/raw/branch/master/iptv | bash -s - init

рипт iptv

Это инструмент, который позволяет быстро управлять локальной средой lis-docker:

  • инициализировать с нуля, как в примере выше;
  • управлять образами и контейнерами среды.

Управление средой не всегда удобно через команды git и docker, поэтому рекомендуется использовать ./iptv.

Набери ./iptv help для справки по использованию.

При доработке используй линтер: shellcheck -s bash iptv

Описание переменных окружения

  • IPTV_ENV -- окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
  • KEYDB_UID, KEYDB_GID -- ID пользователя/группы для разрешения владельца файлов и директорий keydb;
  • KEYDB_PORT -- порт keydb, который будет проброшен на хост.
  • KEYDB_USERNAME, KEYDB_PASSWORD -- реквизиты доступа к keydb;
  • CHECKER_DB -- БД keydb для хранения кеша проверенных плейлистов;
  • CHECKER_TTL -- время жизни кеша проверенных плейлистов;
  • CHECKER_WAIT -- кол-во секунд между запусками iptvc;
  • CHECKER_INIFILE -- путь к файлу списка плейлистов внутри контейнера;
  • CHECKER_TAGFILE -- путь к файлу списка тегов внутри контейнера.

Reverse-proxy

На сервере опционально можно настроить реверс-прокси до контейнера веб-сервиса, например, чтобы настроить доступ по доменному имени, изменить порт, подключить SSL-сертификаты или др.

Apache

Если на сервере, на котором запускаются контейнеры, стоит apache2, то, чтобы использовать его как реверс-прокси, нужно:

$ sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
$ sudo nano /etc/apache2/sites-available/iptv.conf
# example.com заменить на свой адрес

<VirtualHost example.com:80>
    ServerName example.com
    # обязательно без SSL:
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    # обязательно для SSL:
    # RewriteEngine on
    # RewriteCond %{SERVER_NAME} =example.com
    # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

# обязательно для SSL:
#<IfModule mod_ssl.c>
#<VirtualHost example.com:443>
#    ServerName example.com
#    ProxyPreserveHost On
#    ProxyPass / http://localhost:8080/
#    ProxyPassReverse / http://localhost:8080/
#    сертификаты можно получить через certbot
#    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
#    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
#    Include /etc/letsencrypt/options-ssl-apache.conf
#</VirtualHost>
#</IfModule>

# Ctrl+O
# Enter
# Ctrl+X
$ sudo a2ensite iptv
$ # для подгрузки включенных модулей выполнить именно restart, а не reload
$ sudo systemctl restart apache2

Nginx

$ sudo nano /etc/nginx/sites-available/iptv.conf
# example.com заменить на свой адрес

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

# Ctrl+O
# Enter
# Ctrl+X
$ sudo ln -s /etc/nginx/sites-available/iptv.conf /etc/nginx/sites-enabled/iptv.conf
$ sudo systemctl reload apache2

Лицензия

Исходный код распространяется на условиях лицензии MIT.
См. файл LICENSE для подробностей.

Description
Languages
Shell 100%