Files
iptv-docker/README.md
2025-05-06 11:36:10 +08:00

121 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Инфраструктурный слой проекта iptv.axenov.dev
> **Адрес**: https://iptv.axenov.dev
> **FAQ**: https://iptv.axenov.dev/faq
> **Исходный код**: https://git.axenov.dev/IPTV
Содержит docker-окружение для запуска проекта iptv.axenov.dev.
## Использованный стек
* [docker compose](https://docs.docker.com/compose/)
* [php8.3-fpm](https://www.php.net/releases/8.3/ru.php)
* [nginx](https://nginx.org/ru/)
* [keydb](https://docs.keydb.dev/docs/)
* bash
## Установка и настройка
```
git clone https://git.axenov.dev/IPTV/docker.git iptv
cp .env.example .env
git clone https://git.axenov.dev/IPTV/web.git
cp web/.env.example web/.env
docker exec -it iptv-main composer i
docker compose up -d --build
```
### Описание переменных окружения
* `IPTV_ENV` -- окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
* `REDIS_UID`, `REDIS_GID` -- ID пользователя/группы для разрешения владельца файлов и директорий keydb;
* `REDIS_PORT` -- порт keydb, который будет проброшен на хост.
### 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
```
```shell
$ 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
```
```shell
$ sudo ln -s /etc/nginx/sites-available/iptv.conf /etc/nginx/sites-enabled/iptv.conf
$ sudo systemctl reload apache2
```
## Лицензия
Исходный код распространяется на условиях лицензии MIT.
См. файл [LICENSE](LICENSE) для подробностей.