Files
iptv-docker/README.md

103 lines
2.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
**Web-версия**: https://iptv.axenov.dev
**FAQ**: https://iptv.axenov.dev/faq
**Исходный код**: https://git.axenov.dev/IPTV
## Использованный стек
* [docker compose](https://docs.docker.com/compose/)
* [php8.3-fpm](https://www.php.net/releases/8.3/ru.php)
* [nginx](https://nginx.org/ru/)
* bash
## Развёртывание проекта
Локально достаточно выполнить `./iptv init && ./iptv open`.
На сервере опционально можно настроить реверс-прокси до контейнера, например, чтобы настроить доступ по доменному
имени, изменить порт, подключить 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
```
## Лицензия
[The MIT License](LICENSE)