mirror of
https://github.com/EpicMorg/docker-scripts.git
synced 2024-12-25 06:05:37 +03:00
improvements
This commit is contained in:
parent
03b3f8ed30
commit
165b38f95a
93
.github/workflows/epicmorg.base.images.giltab.runners.yml
vendored
Normal file
93
.github/workflows/epicmorg.base.images.giltab.runners.yml
vendored
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
name: EpicMorg EcoSystem Gitlab Runner Images
|
||||||
|
|
||||||
|
on:
|
||||||
|
# push:
|
||||||
|
# branches:
|
||||||
|
# - 'master'
|
||||||
|
schedule:
|
||||||
|
- cron: '4 5 * * 2,4,6'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-glr-main-images:
|
||||||
|
name: Build EpicMorg Gitlab Runner Main Images
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Log into registry
|
||||||
|
run: echo "${{ secrets.DOCKER_SERVER_KEY }}" | docker login -u "${{ secrets.DOCKER_SERVER_LOGIN }}" --password-stdin
|
||||||
|
|
||||||
|
- name: Test Make
|
||||||
|
run: make
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner Main Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/latest && pwd && make build && make deploy
|
||||||
|
|
||||||
|
##################################################################################
|
||||||
|
|
||||||
|
build-glr-other-images:
|
||||||
|
name: Build EpicMorg Gitlab Runner Oter Images
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
needs: build-tca-main-images
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Log into registry
|
||||||
|
run: echo "${{ secrets.DOCKER_SERVER_KEY }}" | docker login -u "${{ secrets.DOCKER_SERVER_LOGIN }}" --password-stdin
|
||||||
|
|
||||||
|
- name: Test Make
|
||||||
|
run: make
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner amxX SDK Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/amxx-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner Android SDK Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/android-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner Atlassian SDK Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/atlassian-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner dotNet SDK Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/dotnet-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner node12 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/node12 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner node14 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/node14 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner node15 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/node15 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner node16 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/node16 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner node17 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/node17 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner node18 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/node18 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner php7.2 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/php7.2 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner php7.3 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/php7.3 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner php7.4 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/php7.4 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner php8.0 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/php8.0 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner php8.1 Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/php8.1 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Gitlab Runner Steam SDK Image:"
|
||||||
|
run: cd linux/ecosystem/gitlab/runner/steam-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
##################################################################################
|
||||||
|
|
||||||
|
- name: Cleanup
|
||||||
|
run: make docker-clean
|
@ -42,6 +42,9 @@ jobs:
|
|||||||
- name: "Build and Deploy Python 3.11 Main Image:"
|
- name: "Build and Deploy Python 3.11 Main Image:"
|
||||||
run: cd linux/ecosystem/epicmorg/python/main/3.11 && pwd && make build && make deploy
|
run: cd linux/ecosystem/epicmorg/python/main/3.11 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Python 3.12 Main Image:"
|
||||||
|
run: cd linux/ecosystem/epicmorg/python/main/3.12 && pwd && make build && make deploy
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
|
|
||||||
build-python-develop-images:
|
build-python-develop-images:
|
||||||
@ -78,6 +81,9 @@ jobs:
|
|||||||
- name: "Build and Deploy Python 3.11 Develop Image:"
|
- name: "Build and Deploy Python 3.11 Develop Image:"
|
||||||
run: cd linux/ecosystem/epicmorg/python/develop/3.11 && pwd && make build && make deploy
|
run: cd linux/ecosystem/epicmorg/python/develop/3.11 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy Python 3.12 Develop Image:"
|
||||||
|
run: cd linux/ecosystem/epicmorg/python/develop/3.12 && pwd && make build && make deploy
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
|
@ -81,6 +81,9 @@ jobs:
|
|||||||
- name: "Build and Deploy TeamCity Agent php8.0 Image:"
|
- name: "Build and Deploy TeamCity Agent php8.0 Image:"
|
||||||
run: cd linux/ecosystem/teamcity/agent/php8.0 && pwd && make build && make deploy
|
run: cd linux/ecosystem/teamcity/agent/php8.0 && pwd && make build && make deploy
|
||||||
|
|
||||||
|
- name: "Build and Deploy TeamCity Agent php8.1 Image:"
|
||||||
|
run: cd linux/ecosystem/teamcity/agent/php8.1 && pwd && make build && make deploy
|
||||||
|
|
||||||
- name: "Build and Deploy TeamCity Agent Steam SDK Image:"
|
- name: "Build and Deploy TeamCity Agent Steam SDK Image:"
|
||||||
run: cd linux/ecosystem/teamcity/agent/steam-sdk && pwd && make build && make deploy
|
run: cd linux/ecosystem/teamcity/agent/steam-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
16
CHANGELOG.md
16
CHANGELOG.md
@ -1,12 +1,17 @@
|
|||||||
## Changelog
|
# Changelog
|
||||||
### 2022
|
## 2023
|
||||||
|
* `jan`
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
## 2022
|
||||||
|
* `dec`
|
||||||
* `nov`
|
* `nov`
|
||||||
* added `php8.1`, `apache2 + php8.1` and `teamcity agent + php8.1` images
|
* added `php8.1`, `apache2 + php8.1` and `teamcity agent + php8.1` images
|
||||||
* build and ci fixes
|
* build and `ci` fixes
|
||||||
* added `gitlab-runner` images
|
* added `gitlab-runner` images
|
||||||
* updated `nextcloud`, `nginx` and `postgres` images
|
* updated `nextcloud`, `nginx` and `postgres` images
|
||||||
* added `nginx` with `http3` and `quic` support
|
* added `nginx` with `http3` and `quic` support
|
||||||
* fixed `GitHub Actions` and `Makefile`
|
* fixed `GitHub Actions` and `Makefile`
|
||||||
|
* updated `base` images
|
||||||
* `oct`
|
* `oct`
|
||||||
* just fixes
|
* just fixes
|
||||||
* `sep`
|
* `sep`
|
||||||
@ -39,6 +44,7 @@
|
|||||||
* fixed `apache2`
|
* fixed `apache2`
|
||||||
* added `php8` support
|
* added `php8` support
|
||||||
* extended `testrail` releases with `active directory` and `ldap` auth support.
|
* extended `testrail` releases with `active directory` and `ldap` auth support.
|
||||||
|
-------------------------------------------------------------------
|
||||||
### 2021
|
### 2021
|
||||||
* `december`
|
* `december`
|
||||||
* added `git-lfs`, `lazygit`, bumped versions of nginx, jira, conflunce and bitbucket.
|
* added `git-lfs`, `lazygit`, bumped versions of nginx, jira, conflunce and bitbucket.
|
||||||
@ -98,7 +104,7 @@
|
|||||||
* updated `nginx`. and reworked `php` image, now it based in splitted php-image. yay.
|
* updated `nginx`. and reworked `php` image, now it based in splitted php-image. yay.
|
||||||
* updated `teamcity agent` image.
|
* updated `teamcity agent` image.
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
### 2020
|
## 2020
|
||||||
* `december`
|
* `december`
|
||||||
* added mattermost
|
* added mattermost
|
||||||
* fixed some images
|
* fixed some images
|
||||||
@ -192,6 +198,8 @@
|
|||||||
* switched `qbittorrent` images to `edge`
|
* switched `qbittorrent` images to `edge`
|
||||||
* switched final `balancer` image to `edge`
|
* switched final `balancer` image to `edge`
|
||||||
* reduced containers size by switching to `debian-slim` base-image.
|
* reduced containers size by switching to `debian-slim` base-image.
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
## 2019
|
||||||
* 12/13/2019
|
* 12/13/2019
|
||||||
* updated `teamcity agent`. added `php 7.3` support.
|
* updated `teamcity agent`. added `php 7.3` support.
|
||||||
* fixed `nginx` image.
|
* fixed `nginx` image.
|
||||||
|
47
Makefile
47
Makefile
@ -1,4 +1,4 @@
|
|||||||
VERSION = "2022.09.09"
|
VERSION = "2022.11.14"
|
||||||
AUTHOR = "EpicMorg"
|
AUTHOR = "EpicMorg"
|
||||||
MODIFIED = "STAM"
|
MODIFIED = "STAM"
|
||||||
DOCKER_SCAN_SUGGEST = false
|
DOCKER_SCAN_SUGGEST = false
|
||||||
@ -48,10 +48,10 @@ docker-clean:
|
|||||||
docker system prune -af
|
docker system prune -af
|
||||||
|
|
||||||
images:
|
images:
|
||||||
# make docker-clean
|
|
||||||
make advanced-images
|
make advanced-images
|
||||||
make ecosystem-images
|
make ecosystem-images
|
||||||
# make docker-clean
|
# make docker-clean
|
||||||
|
# make docker-clean
|
||||||
|
|
||||||
advanced-images:
|
advanced-images:
|
||||||
@echo "======================================="
|
@echo "======================================="
|
||||||
@ -89,7 +89,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/latest/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/latest/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/latest/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/latest/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/latest/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/latest/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/3.0/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/3.0/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/3.0/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/3.0/java-gateway && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/3.0/proxy-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/3.0/proxy-mysql && pwd && make build && make deploy
|
||||||
@ -99,7 +98,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/3.0/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/3.0/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/3.0/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/3.0/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/3.0/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/3.0/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/4.0/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/4.0/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/4.0/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/4.0/java-gateway && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/4.0/proxy-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/4.0/proxy-mysql && pwd && make build && make deploy
|
||||||
@ -109,7 +107,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/4.0/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/4.0/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/4.0/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/4.0/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/4.0/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/4.0/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/5.0/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.0/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.0/agent2 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.0/agent2 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.0/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.0/java-gateway && pwd && make build && make deploy
|
||||||
@ -120,7 +117,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/5.0/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.0/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.0/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.0/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.0/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.0/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/5.2/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.2/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.2/agent2 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.2/agent2 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.2/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.2/java-gateway && pwd && make build && make deploy
|
||||||
@ -131,7 +127,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/5.2/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.2/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.2/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.2/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.2/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.2/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/5.4/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.4/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.4/agent2 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.4/agent2 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.4/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.4/java-gateway && pwd && make build && make deploy
|
||||||
@ -142,7 +137,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/5.4/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.4/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.4/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.4/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/5.4/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/5.4/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/6.0/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.0/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.0/agent2 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.0/agent2 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.0/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.0/java-gateway && pwd && make build && make deploy
|
||||||
@ -153,7 +147,6 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/6.0/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.0/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.0/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.0/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.0/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.0/web-pgsql && pwd && make build && make deploy
|
||||||
|
|
||||||
cd `pwd`/linux/advanced/zabbix/6.2/agent && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.2/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.2/agent2 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.2/agent2 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.2/java-gateway && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.2/java-gateway && pwd && make build && make deploy
|
||||||
@ -164,18 +157,16 @@ advanced-zabbix-images:
|
|||||||
cd `pwd`/linux/advanced/zabbix/6.2/snmptraps && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.2/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.2/web-mysql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.2/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.2/web-pgsql && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/zabbix/6.2/web-pgsql && pwd && make build && make deploy
|
||||||
|
# cd `pwd`/linux/advanced/zabbix/6.4/agent && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/agent && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/agent2 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/agent2 && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/java-gateway && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/java-gateway && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/proxy-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/proxy-mysql && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/proxy-sqlite3 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/proxy-sqlite3 && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/server-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/server-mysql && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/server-pgsql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/server-pgsql && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/snmptraps && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/snmptraps && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/web-mysql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/web-mysql && pwd && make build && make deploy
|
# cd `pwd`/linux/advanced/zabbix/6.4/web-pgsql && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/zabbix/6.4/web-pgsql && pwd && make build && make deploy
|
|
||||||
|
|
||||||
|
|
||||||
advanced-nextcloud-images:
|
advanced-nextcloud-images:
|
||||||
cd `pwd`/linux/advanced/nextcloud/pure/14 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/nextcloud/pure/14 && pwd && make build && make deploy
|
||||||
@ -189,6 +180,7 @@ advanced-nextcloud-images:
|
|||||||
cd `pwd`/linux/advanced/nextcloud/pure/22 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/nextcloud/pure/22 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/nextcloud/pure/23 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/nextcloud/pure/23 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/advanced/nextcloud/pure/24 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/nextcloud/pure/24 && pwd && make build && make deploy
|
||||||
|
cd `pwd`/linux/advanced/nextcloud/pure/25 && pwd && make build && make deploy
|
||||||
|
|
||||||
advanced-nextcloud-patched-images:
|
advanced-nextcloud-patched-images:
|
||||||
cd `pwd`/linux/advanced/nextcloud/patched/14 && pwd && make build && make deploy
|
cd `pwd`/linux/advanced/nextcloud/patched/14 && pwd && make build && make deploy
|
||||||
@ -215,6 +207,7 @@ ecosystem-images:
|
|||||||
make ecosystem-vk2discord-images
|
make ecosystem-vk2discord-images
|
||||||
make ecosystem-postgres-images
|
make ecosystem-postgres-images
|
||||||
make ecosystem-teamcity-agent-images
|
make ecosystem-teamcity-agent-images
|
||||||
|
make ecosystem-gitlab-runner-images
|
||||||
make ecosystem-nginx-images
|
make ecosystem-nginx-images
|
||||||
make ecosystem-vscode-server-images
|
make ecosystem-vscode-server-images
|
||||||
|
|
||||||
@ -230,6 +223,7 @@ ecosystem-pyhton-images-main:
|
|||||||
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.9 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.9 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.10 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.10 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.11 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.11 && pwd && make build && make deploy
|
||||||
|
cd `pwd`/linux/ecosystem/epicmorg/python/main/3.12 && pwd && make build && make deploy
|
||||||
|
|
||||||
ecosystem-pyhton-images-develop:
|
ecosystem-pyhton-images-develop:
|
||||||
cd `pwd`/linux/ecosystem/epicmorg/python/develop/2.7 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/develop/2.7 && pwd && make build && make deploy
|
||||||
@ -239,6 +233,7 @@ ecosystem-pyhton-images-develop:
|
|||||||
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.9 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.9 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.10 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.10 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.11 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.11 && pwd && make build && make deploy
|
||||||
|
cd `pwd`/linux/ecosystem/epicmorg/python/develop/3.12 && pwd && make build && make deploy
|
||||||
|
|
||||||
ecosystem-debian-images:
|
ecosystem-debian-images:
|
||||||
make ecosystem-debian-squeeze-images
|
make ecosystem-debian-squeeze-images
|
||||||
@ -443,6 +438,9 @@ ecosystem-teamcity-agent-images:
|
|||||||
cd `pwd`/linux/ecosystem/teamcity/agent/php8.0 && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/teamcity/agent/php8.0 && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/ecosystem/teamcity/agent/steam-sdk && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/teamcity/agent/steam-sdk && pwd && make build && make deploy
|
||||||
|
|
||||||
|
ecosystem-gitlab-runner-images:
|
||||||
|
cd `pwd`/linux/ecosystem/gitlab/runner/latest && pwd && make build && make deploy
|
||||||
|
|
||||||
ecosystem-nginx-images:
|
ecosystem-nginx-images:
|
||||||
cd `pwd`/linux/ecosystem/nginx/latest/mainline/main && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/nginx/latest/mainline/main && pwd && make build && make deploy
|
||||||
cd `pwd`/linux/ecosystem/nginx/latest/mainline/php && pwd && make build && make deploy
|
cd `pwd`/linux/ecosystem/nginx/latest/mainline/php && pwd && make build && make deploy
|
||||||
@ -502,7 +500,12 @@ bundle-teamcity:
|
|||||||
@echo "===== Building TeamCity images ====="
|
@echo "===== Building TeamCity images ====="
|
||||||
@echo "======================================="
|
@echo "======================================="
|
||||||
make advanced-teamcity-server-images
|
make advanced-teamcity-server-images
|
||||||
make ecosystem-teamcity-agent-images
|
|
||||||
|
bundle-gitlab:
|
||||||
|
@echo "======================================="
|
||||||
|
@echo "===== Building GitLab images ====="
|
||||||
|
@echo "======================================="
|
||||||
|
make ecosystem-gitlab-runner-images
|
||||||
|
|
||||||
bundle-atlassian:
|
bundle-atlassian:
|
||||||
@echo "======================================="
|
@echo "======================================="
|
||||||
|
@ -26,6 +26,7 @@ A collection of docker images for production use. This repo contains 2 types of
|
|||||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20TeamCity%20Agents%20Images?label=TeamCity%20Agents%20Images&logo=TeamCity%20Agents%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.teamcity.agents.yml)
|
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20TeamCity%20Agents%20Images?label=TeamCity%20Agents%20Images&logo=TeamCity%20Agents%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.teamcity.agents.yml)
|
||||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Testrail%20Images?label=Testrail%20Images&logo=Testrail%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.testrail.yml)
|
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Testrail%20Images?label=Testrail%20Images&logo=Testrail%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.testrail.yml)
|
||||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Web%20Images?label=Web%20Images&logo=Web%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.web.yml)
|
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Web%20Images?label=Web%20Images&logo=Web%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.web.yml)
|
||||||
|
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Gitlab%20Runner%20Images?label=Gitlab%20Runner%20Images&logo=Gitlab%20Runner%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.giltab.runners.yml)
|
||||||
|
|
||||||
|
|
||||||
# Few popular products [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B81CUI4)
|
# Few popular products [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B81CUI4)
|
||||||
|
@ -117,6 +117,22 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
|
|||||||
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
||||||
chmod +x /usr/bin/p4
|
chmod +x /usr/bin/p4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -135,6 +135,22 @@ RUN wget -c https://cli.github.com/packages/githubcli-archive-keyring.gpg -O /et
|
|||||||
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
||||||
chmod +x /usr/bin/p4
|
chmod +x /usr/bin/p4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -135,6 +135,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
@ -154,6 +155,22 @@ RUN wget -c https://cli.github.com/packages/githubcli-archive-keyring.gpg -O /et
|
|||||||
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
||||||
chmod +x /usr/bin/p4
|
chmod +x /usr/bin/p4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -150,6 +150,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
@ -191,6 +192,22 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue
|
|||||||
echo "lazygit version:" && \
|
echo "lazygit version:" && \
|
||||||
lazygit --version
|
lazygit --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -151,6 +151,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
@ -192,6 +193,23 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue
|
|||||||
echo "lazygit version:" && \
|
echo "lazygit version:" && \
|
||||||
lazygit --version
|
lazygit --version
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -150,6 +150,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
@ -191,6 +192,22 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue
|
|||||||
echo "lazygit version:" && \
|
echo "lazygit version:" && \
|
||||||
lazygit --version
|
lazygit --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -150,6 +150,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
@ -191,6 +192,22 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue
|
|||||||
echo "lazygit version:" && \
|
echo "lazygit version:" && \
|
||||||
lazygit --version
|
lazygit --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# dumb init
|
||||||
|
##################################################################
|
||||||
|
ENV DUMB_INIT_VERSION=1.2.5
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 --random-wait -O /usr/bin/dumb-init && \
|
||||||
|
chmod +x /usr/bin/dumb-init && \
|
||||||
|
dumb-init --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# grab gosu for easy step-down from root
|
||||||
|
##################################################################
|
||||||
|
ENV GOSU_VER 1.14
|
||||||
|
RUN wget -q --no-check-certificate -c https://github.com/tianon/gosu/releases/download/${GOSU_VER}/gosu-amd64 --random-wait -O /usr/local/bin/gosu && \
|
||||||
|
chmod +x /usr/local/bin/gosu && \
|
||||||
|
gosu --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Generate ssl key
|
# Generate ssl key
|
||||||
##################################################################
|
##################################################################
|
||||||
|
148
linux/ecosystem/epicmorg/python/develop/3.12/Dockerfile
Normal file
148
linux/ecosystem/epicmorg/python/develop/3.12/Dockerfile
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
FROM epicmorg/python:3.12
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# ARGuments
|
||||||
|
##################################################################
|
||||||
|
ENV BuildDocker true
|
||||||
|
ENV GOPATH=/go
|
||||||
|
ENV PATH="${GOPATH}/bin:${PATH}"
|
||||||
|
ARG BUILDS_DIR=/builds
|
||||||
|
ARG SRC_DIR=${BUILDS_DIR}/src
|
||||||
|
ARG EXPORT_DIR=${BUILDS_DIR}/export
|
||||||
|
ARG NINJA_ARCH=linux
|
||||||
|
ARG NINJA_VERSION=latest
|
||||||
|
ARG NINJA_RELEASE_URL=https://api.github.com/repos/ninja-build/ninja/releases/${NINJA_VERSION}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Files and folders
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p ${SRC_DIR} ${EXPORT_DIR} ${PRE_DIR}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Version
|
||||||
|
##################################################################
|
||||||
|
RUN python3 --version
|
||||||
|
RUN pip3 --version
|
||||||
|
RUN python --version
|
||||||
|
RUN pip --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing
|
||||||
|
##################################################################
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt install -y --allow-unauthenticated --allow-downgrades \
|
||||||
|
build-essential \
|
||||||
|
autoconf-archive \
|
||||||
|
gnu-standards \
|
||||||
|
cmake \
|
||||||
|
libunwind-dev \
|
||||||
|
golang \
|
||||||
|
at \
|
||||||
|
autopkgtest \
|
||||||
|
gcc-multilib \
|
||||||
|
g++-multilib \
|
||||||
|
libxkbcommon-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
libegl1-mesa-dev \
|
||||||
|
libgles2-mesa-dev \
|
||||||
|
libgbm-dev \
|
||||||
|
uuid-dev \
|
||||||
|
nvidia-cg-toolkit \
|
||||||
|
nvidia-cg-dev \
|
||||||
|
libavcodec-dev \
|
||||||
|
libsdl2-dev \
|
||||||
|
libsdl-image1.2-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
yasm \
|
||||||
|
devscripts \
|
||||||
|
automake \
|
||||||
|
libtool \
|
||||||
|
autotools-dev \
|
||||||
|
dpkg-dev \
|
||||||
|
fakeroot \
|
||||||
|
checkinstall \
|
||||||
|
dh-make \
|
||||||
|
zlib1g \
|
||||||
|
zlib1g-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libxslt-dev \
|
||||||
|
libgd-dev \
|
||||||
|
libpcre3-dev \
|
||||||
|
libgeoip-dev \
|
||||||
|
libkrb5-dev \
|
||||||
|
libperl-dev \
|
||||||
|
krb5-user \
|
||||||
|
luajit \
|
||||||
|
liblua5.1-0-dev \
|
||||||
|
libmaxminddb-dev \
|
||||||
|
libpam0g-dev \
|
||||||
|
libldap2-dev \
|
||||||
|
libavformat-dev \
|
||||||
|
libavfilter-dev \
|
||||||
|
libswscale-dev \
|
||||||
|
libavcodec-dev \
|
||||||
|
libz-dev \
|
||||||
|
libhiredis-dev \
|
||||||
|
libzip-dev \
|
||||||
|
libcrypto++-dev \
|
||||||
|
libbz2-dev \
|
||||||
|
libvpx-dev \
|
||||||
|
libvpx6 \
|
||||||
|
tcl \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
libc6-dev \
|
||||||
|
make \
|
||||||
|
pkg-config \
|
||||||
|
golang \
|
||||||
|
golang-go \
|
||||||
|
python-dev \
|
||||||
|
python3-all-dev \
|
||||||
|
g++-multilib \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
libtool \
|
||||||
|
gdb \
|
||||||
|
strace
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# GO compillers
|
||||||
|
##################################################################
|
||||||
|
RUN printf "\n--------------------------------\n$(go version)\n--------------------------------\n\n"
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Get NINJA binary
|
||||||
|
##################################################################
|
||||||
|
RUN curl -s ${NINJA_RELEASE_URL} | jq -r ".assets[] | select(.name | test(\"${NINJA_ARCH}\")) | .browser_download_url" > /tmp/ninja-url.txt && \
|
||||||
|
cat /tmp/ninja-url.txt && \
|
||||||
|
cd /tmp && \
|
||||||
|
wget -q -c --input-file=/tmp/ninja-url.txt && \
|
||||||
|
unzip -o /tmp/ninja-linux.zip -d /bin && \
|
||||||
|
printf "\n--------------------------------\nninja version: $(ninja --version)\n--------------------------------\n\n"
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Version
|
||||||
|
##################################################################
|
||||||
|
RUN python3 --version
|
||||||
|
RUN pip3 --version
|
||||||
|
RUN python --version
|
||||||
|
RUN pip --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# update locales
|
||||||
|
##################################################################
|
||||||
|
RUN locale-gen
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleanup
|
||||||
|
##################################################################
|
||||||
|
RUN apt-get purge policykit-1 -y && \
|
||||||
|
apt-get clean -y && \
|
||||||
|
apt-get autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /tmp/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb
|
19
linux/ecosystem/epicmorg/python/develop/3.12/Makefile
Normal file
19
linux/ecosystem/epicmorg/python/develop/3.12/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
@ -0,0 +1,6 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/python:3.11-develop"
|
||||||
|
build:
|
||||||
|
context: .
|
@ -200,6 +200,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -204,6 +204,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM python:3.11-rc-bullseye
|
FROM python:3.11-bullseye
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
@ -195,6 +195,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
258
linux/ecosystem/epicmorg/python/main/3.12/Dockerfile
Normal file
258
linux/ecosystem/epicmorg/python/main/3.12/Dockerfile
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
FROM python:3.12-rc-bullseye
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# prepare system
|
||||||
|
##################################################################
|
||||||
|
RUN for i in $(seq 1 8); do mkdir -p "/usr/share/man/man${i}"; done
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# sources list
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
RUN rm -rfv /etc/locale.gen
|
||||||
|
|
||||||
|
COPY etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg /etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg
|
||||||
|
COPY etc/apt/apt.conf.d/99-no-check-valid-until /etc/apt/apt.conf.d/99-no-check-valid-until
|
||||||
|
COPY etc/apt/sources.list /etc/apt/sources.list
|
||||||
|
COPY etc/locale.gen /etc/locale.gen
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get upgrade -y && \
|
||||||
|
apt-get dist-upgrade -y
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing utils
|
||||||
|
##################################################################
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
apt-transport-https \
|
||||||
|
apt-utils \
|
||||||
|
gnupg \
|
||||||
|
gnupg1 \
|
||||||
|
gnupg2 \
|
||||||
|
aptitude \
|
||||||
|
bash \
|
||||||
|
binutils \
|
||||||
|
console-cyrillic \
|
||||||
|
ca-certificates \
|
||||||
|
locales \
|
||||||
|
software-properties-common \
|
||||||
|
sudo
|
||||||
|
|
||||||
|
RUN apt-key adv --keyserver keyserver.ubuntu.com --refresh-keys
|
||||||
|
RUN apt-key list | grep "expired: " | sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' | xargs -n1 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
|
||||||
|
|
||||||
|
RUN update-ca-certificates
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# perforce client binary
|
||||||
|
##################################################################
|
||||||
|
ENV P4_VERSION=r22.1
|
||||||
|
ENV P4_DOWNLOAD_URL=http://filehost.perforce.com/perforce/${P4_VERSION}/bin.linux26x86_64/p4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# 7z official binary
|
||||||
|
##################################################################
|
||||||
|
ENV SZ_VERSION=7z2200
|
||||||
|
ENV SZ_DOWNLOAD_URL=https://www.7-zip.org/a/${SZ_VERSION}-linux-x64.tar.xz
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# LazyGit official binary
|
||||||
|
##################################################################
|
||||||
|
ENV LZGIT_VERSION=0.34
|
||||||
|
ENV LZGIT_DOWNLOAD_URL=https://github.com/jesseduffield/lazygit/releases/download/v${LZGIT_VERSION}/lazygit_${LZGIT_VERSION}_Linux_x86_64.tar.gz
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# update lists
|
||||||
|
##################################################################
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing utils
|
||||||
|
##################################################################
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
bzip2 \
|
||||||
|
cmatrix \
|
||||||
|
cmatrix-xfont \
|
||||||
|
cron \
|
||||||
|
curl \
|
||||||
|
clzip \
|
||||||
|
dos2unix \
|
||||||
|
ffmpeg \
|
||||||
|
fontconfig \
|
||||||
|
git \
|
||||||
|
git-extras \
|
||||||
|
git-flow \
|
||||||
|
git-cvs \
|
||||||
|
git-doc \
|
||||||
|
git-email \
|
||||||
|
git-mediawiki \
|
||||||
|
git-crypt \
|
||||||
|
git-lfs \
|
||||||
|
git-ftp \
|
||||||
|
gnupg \
|
||||||
|
gnupg2 \
|
||||||
|
graphicsmagick \
|
||||||
|
gzip \
|
||||||
|
htop \
|
||||||
|
iftop \
|
||||||
|
iotop \
|
||||||
|
iperf \
|
||||||
|
iperf3 \
|
||||||
|
iputils-ping \
|
||||||
|
jq \
|
||||||
|
kmod \
|
||||||
|
libxml2-dev \
|
||||||
|
libxml2-utils \
|
||||||
|
lbzip2 \
|
||||||
|
libsvn-java \
|
||||||
|
locales \
|
||||||
|
lsb-release \
|
||||||
|
lsof \
|
||||||
|
lynx \
|
||||||
|
lzma \
|
||||||
|
lzip \
|
||||||
|
lzop \
|
||||||
|
mc \
|
||||||
|
mercurial \
|
||||||
|
nano \
|
||||||
|
nload \
|
||||||
|
nmap \
|
||||||
|
openssl \
|
||||||
|
perl \
|
||||||
|
procps \
|
||||||
|
pbzip2 \
|
||||||
|
plzip \
|
||||||
|
p7zip-full \
|
||||||
|
p7zip-rar \
|
||||||
|
rsync \
|
||||||
|
rar \
|
||||||
|
screenfetch \
|
||||||
|
smbclient \
|
||||||
|
subversion \
|
||||||
|
telnet \
|
||||||
|
tmux \
|
||||||
|
tree \
|
||||||
|
util-linux \
|
||||||
|
uuid-runtime \
|
||||||
|
unrar \
|
||||||
|
xz-utils \
|
||||||
|
wget \
|
||||||
|
zip \
|
||||||
|
tini \
|
||||||
|
libzip4 \
|
||||||
|
acl \
|
||||||
|
aptitude \
|
||||||
|
sudo \
|
||||||
|
cvs \
|
||||||
|
python3-pip \
|
||||||
|
python3-all \
|
||||||
|
python-all \
|
||||||
|
rclone \
|
||||||
|
logrotate \
|
||||||
|
subversion-tools \
|
||||||
|
pev
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing fs-tools
|
||||||
|
##################################################################
|
||||||
|
#RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
# apt-get install -y --allow-unauthenticated \
|
||||||
|
# btrfs-progs \
|
||||||
|
# exfat-utils \
|
||||||
|
# e2fsprogs \
|
||||||
|
# f2fs-tools \
|
||||||
|
# dosfstools \
|
||||||
|
# hfsutils \
|
||||||
|
# hfsprogs \
|
||||||
|
# jfsutils \
|
||||||
|
# mdadm \
|
||||||
|
# util-linux \
|
||||||
|
# cryptsetup \
|
||||||
|
# lvm2 \
|
||||||
|
# nilfs-tools \
|
||||||
|
# ntfs-3g \
|
||||||
|
# reiser4progs \
|
||||||
|
# reiserfsprogs \
|
||||||
|
# udftools \
|
||||||
|
# xfsprogs \
|
||||||
|
# xfsdump
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# git-lfs official binary
|
||||||
|
##################################################################
|
||||||
|
#RUN curl -s https://packagecloud.io/github/git-lfs/gpgkey | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/git-lfs.gpg --import && \
|
||||||
|
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6B05F25D762E3157 && \
|
||||||
|
rm -rfv /etc/apt/sources.list.d/github_git-lfs.list
|
||||||
|
COPY etc/apt/sources.list.d/github_git-lfs.list /etc/apt/sources.list.d/github_git-lfs.list
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
git \
|
||||||
|
git-lfs && \
|
||||||
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
|
git-lfs --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# gh official binary
|
||||||
|
##################################################################
|
||||||
|
RUN wget -c https://cli.github.com/packages/githubcli-archive-keyring.gpg -O /etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg && \
|
||||||
|
chmod go+r /etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg && \
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
gh && \
|
||||||
|
gh --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Install p4client
|
||||||
|
##################################################################
|
||||||
|
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -P /usr/bin ${P4_DOWNLOAD_URL} && \
|
||||||
|
chmod +x /usr/bin/p4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Install 7z official binary
|
||||||
|
##################################################################
|
||||||
|
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -O /tmp/7z.tar.xz ${SZ_DOWNLOAD_URL} && \
|
||||||
|
mkdir -p /tmp/7z && \
|
||||||
|
tar -xf /tmp/7z.tar.xz -C /tmp/7z && \
|
||||||
|
chmod +x /tmp/7z/7zz && \
|
||||||
|
mv -fv /tmp/7z/7zz /usr/bin/ && \
|
||||||
|
7zz | head -4 && \
|
||||||
|
7z | head -4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Install LazyGit official binary
|
||||||
|
##################################################################
|
||||||
|
RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue -O /tmp/lazygit.tar.xz ${LZGIT_DOWNLOAD_URL} && \
|
||||||
|
mkdir -p /tmp/lazygit && \
|
||||||
|
tar -zxvf /tmp/lazygit.tar.xz -C /tmp/lazygit && \
|
||||||
|
chmod +x /tmp/lazygit/lazygit && \
|
||||||
|
mv -fv /tmp/lazygit/lazygit /usr/bin/ && \
|
||||||
|
echo "lazygit version:" && \
|
||||||
|
lazygit --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Generate ssl key
|
||||||
|
##################################################################
|
||||||
|
#RUN openssl dhparam -out /etc/ssl/dhparam.pem 4096
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# update locales
|
||||||
|
##################################################################
|
||||||
|
RUN locale-gen
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleanup
|
||||||
|
##################################################################
|
||||||
|
RUN apt-get purge policykit-1 -y && \
|
||||||
|
apt-get clean -y && \
|
||||||
|
apt-get autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /tmp/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb
|
19
linux/ecosystem/epicmorg/python/main/3.12/Makefile
Normal file
19
linux/ecosystem/epicmorg/python/main/3.12/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
@ -0,0 +1,6 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/python:3.12"
|
||||||
|
build:
|
||||||
|
context: .
|
@ -0,0 +1 @@
|
|||||||
|
Acquire::Check-Valid-Until no;
|
@ -0,0 +1,22 @@
|
|||||||
|
#main
|
||||||
|
deb http://httpredir.debian.org/debian/ bullseye main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ bullseye main contrib non-free
|
||||||
|
|
||||||
|
deb http://httpredir.debian.org/debian/ bullseye-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ bullseye-updates main contrib non-free
|
||||||
|
|
||||||
|
deb http://httpredir.debian.org/debian/ bullseye-backports main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ bullseye-backports main contrib non-free
|
||||||
|
|
||||||
|
deb http://httpredir.debian.org/debian/ bullseye-backports-sloppy main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ bullseye-backports-sloppy main contrib non-free
|
||||||
|
|
||||||
|
deb http://httpredir.debian.org/debian/ bullseye-proposed-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ bullseye-proposed-updates main contrib non-free
|
||||||
|
|
||||||
|
#security
|
||||||
|
deb http://security.debian.org/debian-security/ bullseye-security/updates main contrib non-free
|
||||||
|
deb-src http://security.debian.org/debian-security/ bullseye-security/updates main contrib non-free
|
||||||
|
|
||||||
|
deb http://httpredir.debian.org/debian-security/ bullseye-security/updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian-security/ bullseye-security/updates main contrib non-free
|
@ -0,0 +1,2 @@
|
|||||||
|
deb https://packagecloud.io/github/git-lfs/debian/ bullseye main
|
||||||
|
deb-src https://packagecloud.io/github/git-lfs/debian/ bullseye main
|
Binary file not shown.
Binary file not shown.
12
linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen
Normal file
12
linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
en_GB.UTF-8 UTF-8
|
||||||
|
en_GB ISO-8859-1
|
||||||
|
en_GB.ISO-8859-15 ISO-8859-15
|
||||||
|
en_US.UTF-8 UTF-8
|
||||||
|
en_US ISO-8859-1
|
||||||
|
en_US.ISO-8859-15 ISO-8859-15
|
||||||
|
ru_RU.UTF-8 UTF-8
|
||||||
|
ru_RU.KOI8-R KOI8-R
|
||||||
|
ru_RU ISO-8859-5
|
||||||
|
ru_RU.CP1251 CP1251
|
||||||
|
ru_UA.UTF-8 UTF-8
|
||||||
|
ru_UA KOI8-U
|
496
linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen.full
Normal file
496
linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen.full
Normal file
@ -0,0 +1,496 @@
|
|||||||
|
aa_DJ.UTF-8 UTF-8
|
||||||
|
aa_DJ ISO-8859-1
|
||||||
|
aa_ER UTF-8
|
||||||
|
aa_ER@saaho UTF-8
|
||||||
|
aa_ET UTF-8
|
||||||
|
af_ZA.UTF-8 UTF-8
|
||||||
|
af_ZA ISO-8859-1
|
||||||
|
agr_PE UTF-8
|
||||||
|
ak_GH UTF-8
|
||||||
|
am_ET UTF-8
|
||||||
|
an_ES.UTF-8 UTF-8
|
||||||
|
an_ES ISO-8859-15
|
||||||
|
anp_IN UTF-8
|
||||||
|
ar_AE.UTF-8 UTF-8
|
||||||
|
ar_AE ISO-8859-6
|
||||||
|
ar_BH.UTF-8 UTF-8
|
||||||
|
ar_BH ISO-8859-6
|
||||||
|
ar_DZ.UTF-8 UTF-8
|
||||||
|
ar_DZ ISO-8859-6
|
||||||
|
ar_EG.UTF-8 UTF-8
|
||||||
|
ar_EG ISO-8859-6
|
||||||
|
ar_IN UTF-8
|
||||||
|
ar_IQ.UTF-8 UTF-8
|
||||||
|
ar_IQ ISO-8859-6
|
||||||
|
ar_JO.UTF-8 UTF-8
|
||||||
|
ar_JO ISO-8859-6
|
||||||
|
ar_KW.UTF-8 UTF-8
|
||||||
|
ar_KW ISO-8859-6
|
||||||
|
ar_LB.UTF-8 UTF-8
|
||||||
|
ar_LB ISO-8859-6
|
||||||
|
ar_LY.UTF-8 UTF-8
|
||||||
|
ar_LY ISO-8859-6
|
||||||
|
ar_MA.UTF-8 UTF-8
|
||||||
|
ar_MA ISO-8859-6
|
||||||
|
ar_OM.UTF-8 UTF-8
|
||||||
|
ar_OM ISO-8859-6
|
||||||
|
ar_QA.UTF-8 UTF-8
|
||||||
|
ar_QA ISO-8859-6
|
||||||
|
ar_SA.UTF-8 UTF-8
|
||||||
|
ar_SA ISO-8859-6
|
||||||
|
ar_SD.UTF-8 UTF-8
|
||||||
|
ar_SD ISO-8859-6
|
||||||
|
ar_SS UTF-8
|
||||||
|
ar_SY.UTF-8 UTF-8
|
||||||
|
ar_SY ISO-8859-6
|
||||||
|
ar_TN.UTF-8 UTF-8
|
||||||
|
ar_TN ISO-8859-6
|
||||||
|
ar_YE.UTF-8 UTF-8
|
||||||
|
ar_YE ISO-8859-6
|
||||||
|
ayc_PE UTF-8
|
||||||
|
az_AZ UTF-8
|
||||||
|
az_IR UTF-8
|
||||||
|
as_IN UTF-8
|
||||||
|
ast_ES.UTF-8 UTF-8
|
||||||
|
ast_ES ISO-8859-15
|
||||||
|
be_BY.UTF-8 UTF-8
|
||||||
|
be_BY CP1251
|
||||||
|
be_BY@latin UTF-8
|
||||||
|
bem_ZM UTF-8
|
||||||
|
ber_DZ UTF-8
|
||||||
|
ber_MA UTF-8
|
||||||
|
bg_BG.UTF-8 UTF-8
|
||||||
|
bg_BG CP1251
|
||||||
|
bhb_IN.UTF-8 UTF-8
|
||||||
|
bho_IN UTF-8
|
||||||
|
bho_NP UTF-8
|
||||||
|
bi_VU UTF-8
|
||||||
|
bn_BD UTF-8
|
||||||
|
bn_IN UTF-8
|
||||||
|
bo_CN UTF-8
|
||||||
|
bo_IN UTF-8
|
||||||
|
br_FR.UTF-8 UTF-8
|
||||||
|
br_FR ISO-8859-1
|
||||||
|
br_FR@euro ISO-8859-15
|
||||||
|
brx_IN UTF-8
|
||||||
|
bs_BA.UTF-8 UTF-8
|
||||||
|
bs_BA ISO-8859-2
|
||||||
|
byn_ER UTF-8
|
||||||
|
ca_AD.UTF-8 UTF-8
|
||||||
|
ca_AD ISO-8859-15
|
||||||
|
ca_ES.UTF-8 UTF-8
|
||||||
|
ca_ES ISO-8859-1
|
||||||
|
ca_ES@euro ISO-8859-15
|
||||||
|
ca_ES@valencia UTF-8
|
||||||
|
ca_FR.UTF-8 UTF-8
|
||||||
|
ca_FR ISO-8859-15
|
||||||
|
ca_IT.UTF-8 UTF-8
|
||||||
|
ca_IT ISO-8859-15
|
||||||
|
ce_RU UTF-8
|
||||||
|
chr_US UTF-8
|
||||||
|
cmn_TW UTF-8
|
||||||
|
crh_UA UTF-8
|
||||||
|
cs_CZ.UTF-8 UTF-8
|
||||||
|
cs_CZ ISO-8859-2
|
||||||
|
csb_PL UTF-8
|
||||||
|
cv_RU UTF-8
|
||||||
|
cy_GB.UTF-8 UTF-8
|
||||||
|
cy_GB ISO-8859-14
|
||||||
|
da_DK.UTF-8 UTF-8
|
||||||
|
da_DK ISO-8859-1
|
||||||
|
de_AT.UTF-8 UTF-8
|
||||||
|
de_AT ISO-8859-1
|
||||||
|
de_AT@euro ISO-8859-15
|
||||||
|
de_BE.UTF-8 UTF-8
|
||||||
|
de_BE ISO-8859-1
|
||||||
|
de_BE@euro ISO-8859-15
|
||||||
|
de_CH.UTF-8 UTF-8
|
||||||
|
de_CH ISO-8859-1
|
||||||
|
de_DE.UTF-8 UTF-8
|
||||||
|
de_DE ISO-8859-1
|
||||||
|
de_DE@euro ISO-8859-15
|
||||||
|
de_IT.UTF-8 UTF-8
|
||||||
|
de_IT ISO-8859-1
|
||||||
|
de_LI.UTF-8 UTF-8
|
||||||
|
de_LU.UTF-8 UTF-8
|
||||||
|
de_LU ISO-8859-1
|
||||||
|
de_LU@euro ISO-8859-15
|
||||||
|
doi_IN UTF-8
|
||||||
|
dsb_DE UTF-8
|
||||||
|
dv_MV UTF-8
|
||||||
|
dz_BT UTF-8
|
||||||
|
el_GR.UTF-8 UTF-8
|
||||||
|
el_GR ISO-8859-7
|
||||||
|
el_GR@euro ISO-8859-7
|
||||||
|
el_CY.UTF-8 UTF-8
|
||||||
|
el_CY ISO-8859-7
|
||||||
|
en_AG UTF-8
|
||||||
|
en_AU.UTF-8 UTF-8
|
||||||
|
en_AU ISO-8859-1
|
||||||
|
en_BW.UTF-8 UTF-8
|
||||||
|
en_BW ISO-8859-1
|
||||||
|
en_CA.UTF-8 UTF-8
|
||||||
|
en_CA ISO-8859-1
|
||||||
|
en_DK.UTF-8 UTF-8
|
||||||
|
en_DK.ISO-8859-15 ISO-8859-15
|
||||||
|
en_DK ISO-8859-1
|
||||||
|
en_GB.UTF-8 UTF-8
|
||||||
|
en_GB ISO-8859-1
|
||||||
|
en_GB.ISO-8859-15 ISO-8859-15
|
||||||
|
en_HK.UTF-8 UTF-8
|
||||||
|
en_HK ISO-8859-1
|
||||||
|
en_IE.UTF-8 UTF-8
|
||||||
|
en_IE ISO-8859-1
|
||||||
|
en_IE@euro ISO-8859-15
|
||||||
|
en_IL UTF-8
|
||||||
|
en_IN UTF-8
|
||||||
|
en_NG UTF-8
|
||||||
|
en_NZ.UTF-8 UTF-8
|
||||||
|
en_NZ ISO-8859-1
|
||||||
|
en_PH.UTF-8 UTF-8
|
||||||
|
en_PH ISO-8859-1
|
||||||
|
en_SC.UTF-8 UTF-8
|
||||||
|
en_SG.UTF-8 UTF-8
|
||||||
|
en_SG ISO-8859-1
|
||||||
|
en_US.UTF-8 UTF-8
|
||||||
|
en_US ISO-8859-1
|
||||||
|
en_US.ISO-8859-15 ISO-8859-15
|
||||||
|
en_ZA.UTF-8 UTF-8
|
||||||
|
en_ZA ISO-8859-1
|
||||||
|
en_ZM UTF-8
|
||||||
|
en_ZW.UTF-8 UTF-8
|
||||||
|
en_ZW ISO-8859-1
|
||||||
|
eo UTF-8
|
||||||
|
es_AR.UTF-8 UTF-8
|
||||||
|
es_AR ISO-8859-1
|
||||||
|
es_BO.UTF-8 UTF-8
|
||||||
|
es_BO ISO-8859-1
|
||||||
|
es_CL.UTF-8 UTF-8
|
||||||
|
es_CL ISO-8859-1
|
||||||
|
es_CO.UTF-8 UTF-8
|
||||||
|
es_CO ISO-8859-1
|
||||||
|
es_CR.UTF-8 UTF-8
|
||||||
|
es_CR ISO-8859-1
|
||||||
|
es_CU UTF-8
|
||||||
|
es_DO.UTF-8 UTF-8
|
||||||
|
es_DO ISO-8859-1
|
||||||
|
es_EC.UTF-8 UTF-8
|
||||||
|
es_EC ISO-8859-1
|
||||||
|
es_ES.UTF-8 UTF-8
|
||||||
|
es_ES ISO-8859-1
|
||||||
|
es_ES@euro ISO-8859-15
|
||||||
|
es_GT.UTF-8 UTF-8
|
||||||
|
es_GT ISO-8859-1
|
||||||
|
es_HN.UTF-8 UTF-8
|
||||||
|
es_HN ISO-8859-1
|
||||||
|
es_MX.UTF-8 UTF-8
|
||||||
|
es_MX ISO-8859-1
|
||||||
|
es_NI.UTF-8 UTF-8
|
||||||
|
es_NI ISO-8859-1
|
||||||
|
es_PA.UTF-8 UTF-8
|
||||||
|
es_PA ISO-8859-1
|
||||||
|
es_PE.UTF-8 UTF-8
|
||||||
|
es_PE ISO-8859-1
|
||||||
|
es_PR.UTF-8 UTF-8
|
||||||
|
es_PR ISO-8859-1
|
||||||
|
es_PY.UTF-8 UTF-8
|
||||||
|
es_PY ISO-8859-1
|
||||||
|
es_SV.UTF-8 UTF-8
|
||||||
|
es_SV ISO-8859-1
|
||||||
|
es_US.UTF-8 UTF-8
|
||||||
|
es_US ISO-8859-1
|
||||||
|
es_UY.UTF-8 UTF-8
|
||||||
|
es_UY ISO-8859-1
|
||||||
|
es_VE.UTF-8 UTF-8
|
||||||
|
es_VE ISO-8859-1
|
||||||
|
et_EE.UTF-8 UTF-8
|
||||||
|
et_EE ISO-8859-1
|
||||||
|
et_EE.ISO-8859-15 ISO-8859-15
|
||||||
|
eu_ES.UTF-8 UTF-8
|
||||||
|
eu_ES ISO-8859-1
|
||||||
|
eu_ES@euro ISO-8859-15
|
||||||
|
eu_FR.UTF-8 UTF-8
|
||||||
|
eu_FR ISO-8859-1
|
||||||
|
eu_FR@euro ISO-8859-15
|
||||||
|
fa_IR UTF-8
|
||||||
|
ff_SN UTF-8
|
||||||
|
fi_FI.UTF-8 UTF-8
|
||||||
|
fi_FI ISO-8859-1
|
||||||
|
fi_FI@euro ISO-8859-15
|
||||||
|
fil_PH UTF-8
|
||||||
|
fo_FO.UTF-8 UTF-8
|
||||||
|
fo_FO ISO-8859-1
|
||||||
|
fr_BE.UTF-8 UTF-8
|
||||||
|
fr_BE ISO-8859-1
|
||||||
|
fr_BE@euro ISO-8859-15
|
||||||
|
fr_CA.UTF-8 UTF-8
|
||||||
|
fr_CA ISO-8859-1
|
||||||
|
fr_CH.UTF-8 UTF-8
|
||||||
|
fr_CH ISO-8859-1
|
||||||
|
fr_FR.UTF-8 UTF-8
|
||||||
|
fr_FR ISO-8859-1
|
||||||
|
fr_FR@euro ISO-8859-15
|
||||||
|
fr_LU.UTF-8 UTF-8
|
||||||
|
fr_LU ISO-8859-1
|
||||||
|
fr_LU@euro ISO-8859-15
|
||||||
|
fur_IT UTF-8
|
||||||
|
fy_NL UTF-8
|
||||||
|
fy_DE UTF-8
|
||||||
|
ga_IE.UTF-8 UTF-8
|
||||||
|
ga_IE ISO-8859-1
|
||||||
|
ga_IE@euro ISO-8859-15
|
||||||
|
gd_GB.UTF-8 UTF-8
|
||||||
|
gd_GB ISO-8859-15
|
||||||
|
gez_ER UTF-8
|
||||||
|
gez_ER@abegede UTF-8
|
||||||
|
gez_ET UTF-8
|
||||||
|
gez_ET@abegede UTF-8
|
||||||
|
gl_ES.UTF-8 UTF-8
|
||||||
|
gl_ES ISO-8859-1
|
||||||
|
gl_ES@euro ISO-8859-15
|
||||||
|
gu_IN UTF-8
|
||||||
|
gv_GB.UTF-8 UTF-8
|
||||||
|
gv_GB ISO-8859-1
|
||||||
|
ha_NG UTF-8
|
||||||
|
hak_TW UTF-8
|
||||||
|
he_IL.UTF-8 UTF-8
|
||||||
|
he_IL ISO-8859-8
|
||||||
|
hi_IN UTF-8
|
||||||
|
hif_FJ UTF-8
|
||||||
|
hne_IN UTF-8
|
||||||
|
hr_HR.UTF-8 UTF-8
|
||||||
|
hr_HR ISO-8859-2
|
||||||
|
hsb_DE.UTF-8 UTF-8
|
||||||
|
hsb_DE ISO-8859-2
|
||||||
|
ht_HT UTF-8
|
||||||
|
hu_HU.UTF-8 UTF-8
|
||||||
|
hu_HU ISO-8859-2
|
||||||
|
hy_AM UTF-8
|
||||||
|
hy_AM.ARMSCII-8 ARMSCII-8
|
||||||
|
ia_FR UTF-8
|
||||||
|
id_ID.UTF-8 UTF-8
|
||||||
|
id_ID ISO-8859-1
|
||||||
|
ig_NG UTF-8
|
||||||
|
ik_CA UTF-8
|
||||||
|
is_IS.UTF-8 UTF-8
|
||||||
|
is_IS ISO-8859-1
|
||||||
|
it_CH.UTF-8 UTF-8
|
||||||
|
it_CH ISO-8859-1
|
||||||
|
it_IT.UTF-8 UTF-8
|
||||||
|
it_IT ISO-8859-1
|
||||||
|
it_IT@euro ISO-8859-15
|
||||||
|
iu_CA UTF-8
|
||||||
|
ja_JP.UTF-8 UTF-8
|
||||||
|
ja_JP.EUC-JP EUC-JP
|
||||||
|
ka_GE.UTF-8 UTF-8
|
||||||
|
ka_GE GEORGIAN-PS
|
||||||
|
kab_DZ UTF-8
|
||||||
|
kk_KZ.UTF-8 UTF-8
|
||||||
|
kk_KZ PT154
|
||||||
|
kk_KZ.RK1048 RK1048
|
||||||
|
kl_GL.UTF-8 UTF-8
|
||||||
|
kl_GL ISO-8859-1
|
||||||
|
km_KH UTF-8
|
||||||
|
kn_IN UTF-8
|
||||||
|
ko_KR.UTF-8 UTF-8
|
||||||
|
ko_KR.EUC-KR EUC-KR
|
||||||
|
kok_IN UTF-8
|
||||||
|
ks_IN UTF-8
|
||||||
|
ks_IN@devanagari UTF-8
|
||||||
|
ku_TR.UTF-8 UTF-8
|
||||||
|
ku_TR ISO-8859-9
|
||||||
|
kw_GB.UTF-8 UTF-8
|
||||||
|
kw_GB ISO-8859-1
|
||||||
|
ky_KG UTF-8
|
||||||
|
lb_LU UTF-8
|
||||||
|
lg_UG.UTF-8 UTF-8
|
||||||
|
lg_UG ISO-8859-10
|
||||||
|
li_BE UTF-8
|
||||||
|
li_NL UTF-8
|
||||||
|
lij_IT UTF-8
|
||||||
|
ln_CD UTF-8
|
||||||
|
lo_LA UTF-8
|
||||||
|
lt_LT.UTF-8 UTF-8
|
||||||
|
lt_LT ISO-8859-13
|
||||||
|
lv_LV.UTF-8 UTF-8
|
||||||
|
lv_LV ISO-8859-13
|
||||||
|
lzh_TW UTF-8
|
||||||
|
mag_IN UTF-8
|
||||||
|
mai_IN UTF-8
|
||||||
|
mai_NP UTF-8
|
||||||
|
mfe_MU UTF-8
|
||||||
|
mg_MG.UTF-8 UTF-8
|
||||||
|
mg_MG ISO-8859-15
|
||||||
|
mhr_RU UTF-8
|
||||||
|
mi_NZ.UTF-8 UTF-8
|
||||||
|
mi_NZ ISO-8859-13
|
||||||
|
miq_NI UTF-8
|
||||||
|
mjw_IN UTF-8
|
||||||
|
mk_MK.UTF-8 UTF-8
|
||||||
|
mk_MK ISO-8859-5
|
||||||
|
ml_IN UTF-8
|
||||||
|
mn_MN UTF-8
|
||||||
|
mni_IN UTF-8
|
||||||
|
mr_IN UTF-8
|
||||||
|
ms_MY.UTF-8 UTF-8
|
||||||
|
ms_MY ISO-8859-1
|
||||||
|
mt_MT.UTF-8 UTF-8
|
||||||
|
mt_MT ISO-8859-3
|
||||||
|
my_MM UTF-8
|
||||||
|
nan_TW UTF-8
|
||||||
|
nan_TW@latin UTF-8
|
||||||
|
nb_NO.UTF-8 UTF-8
|
||||||
|
nb_NO ISO-8859-1
|
||||||
|
nds_DE UTF-8
|
||||||
|
nds_NL UTF-8
|
||||||
|
ne_NP UTF-8
|
||||||
|
nhn_MX UTF-8
|
||||||
|
niu_NU UTF-8
|
||||||
|
niu_NZ UTF-8
|
||||||
|
nl_AW UTF-8
|
||||||
|
nl_BE.UTF-8 UTF-8
|
||||||
|
nl_BE ISO-8859-1
|
||||||
|
nl_BE@euro ISO-8859-15
|
||||||
|
nl_NL.UTF-8 UTF-8
|
||||||
|
nl_NL ISO-8859-1
|
||||||
|
nl_NL@euro ISO-8859-15
|
||||||
|
nn_NO.UTF-8 UTF-8
|
||||||
|
nn_NO ISO-8859-1
|
||||||
|
nr_ZA UTF-8
|
||||||
|
nso_ZA UTF-8
|
||||||
|
oc_FR.UTF-8 UTF-8
|
||||||
|
oc_FR ISO-8859-1
|
||||||
|
om_ET UTF-8
|
||||||
|
om_KE.UTF-8 UTF-8
|
||||||
|
om_KE ISO-8859-1
|
||||||
|
or_IN UTF-8
|
||||||
|
os_RU UTF-8
|
||||||
|
pa_IN UTF-8
|
||||||
|
pa_PK UTF-8
|
||||||
|
pap_AW UTF-8
|
||||||
|
pap_CW UTF-8
|
||||||
|
pl_PL.UTF-8 UTF-8
|
||||||
|
pl_PL ISO-8859-2
|
||||||
|
ps_AF UTF-8
|
||||||
|
pt_BR.UTF-8 UTF-8
|
||||||
|
pt_BR ISO-8859-1
|
||||||
|
pt_PT.UTF-8 UTF-8
|
||||||
|
pt_PT ISO-8859-1
|
||||||
|
pt_PT@euro ISO-8859-15
|
||||||
|
quz_PE UTF-8
|
||||||
|
raj_IN UTF-8
|
||||||
|
ro_RO.UTF-8 UTF-8
|
||||||
|
ro_RO ISO-8859-2
|
||||||
|
ru_RU.UTF-8 UTF-8
|
||||||
|
ru_RU.KOI8-R KOI8-R
|
||||||
|
ru_RU ISO-8859-5
|
||||||
|
ru_RU.CP1251 CP1251
|
||||||
|
ru_UA.UTF-8 UTF-8
|
||||||
|
ru_UA KOI8-U
|
||||||
|
rw_RW UTF-8
|
||||||
|
sa_IN UTF-8
|
||||||
|
sah_RU UTF-8
|
||||||
|
sat_IN UTF-8
|
||||||
|
sc_IT UTF-8
|
||||||
|
sd_IN UTF-8
|
||||||
|
sd_IN@devanagari UTF-8
|
||||||
|
se_NO UTF-8
|
||||||
|
sgs_LT UTF-8
|
||||||
|
shn_MM UTF-8
|
||||||
|
shs_CA UTF-8
|
||||||
|
si_LK UTF-8
|
||||||
|
sid_ET UTF-8
|
||||||
|
sk_SK.UTF-8 UTF-8
|
||||||
|
sk_SK ISO-8859-2
|
||||||
|
sl_SI.UTF-8 UTF-8
|
||||||
|
sl_SI ISO-8859-2
|
||||||
|
sm_WS UTF-8
|
||||||
|
so_DJ.UTF-8 UTF-8
|
||||||
|
so_DJ ISO-8859-1
|
||||||
|
so_ET UTF-8
|
||||||
|
so_KE.UTF-8 UTF-8
|
||||||
|
so_KE ISO-8859-1
|
||||||
|
so_SO.UTF-8 UTF-8
|
||||||
|
so_SO ISO-8859-1
|
||||||
|
sq_AL.UTF-8 UTF-8
|
||||||
|
sq_AL ISO-8859-1
|
||||||
|
sq_MK UTF-8
|
||||||
|
sr_ME UTF-8
|
||||||
|
sr_RS UTF-8
|
||||||
|
sr_RS@latin UTF-8
|
||||||
|
ss_ZA UTF-8
|
||||||
|
st_ZA.UTF-8 UTF-8
|
||||||
|
st_ZA ISO-8859-1
|
||||||
|
sv_FI.UTF-8 UTF-8
|
||||||
|
sv_FI ISO-8859-1
|
||||||
|
sv_FI@euro ISO-8859-15
|
||||||
|
sv_SE.UTF-8 UTF-8
|
||||||
|
sv_SE ISO-8859-1
|
||||||
|
sv_SE.ISO-8859-15 ISO-8859-15
|
||||||
|
sw_KE UTF-8
|
||||||
|
sw_TZ UTF-8
|
||||||
|
szl_PL UTF-8
|
||||||
|
ta_IN UTF-8
|
||||||
|
ta_LK UTF-8
|
||||||
|
tcy_IN.UTF-8 UTF-8
|
||||||
|
te_IN UTF-8
|
||||||
|
tg_TJ.UTF-8 UTF-8
|
||||||
|
tg_TJ KOI8-T
|
||||||
|
th_TH.UTF-8 UTF-8
|
||||||
|
th_TH TIS-620
|
||||||
|
the_NP UTF-8
|
||||||
|
ti_ER UTF-8
|
||||||
|
ti_ET UTF-8
|
||||||
|
tig_ER UTF-8
|
||||||
|
tk_TM UTF-8
|
||||||
|
tl_PH.UTF-8 UTF-8
|
||||||
|
tl_PH ISO-8859-1
|
||||||
|
tn_ZA UTF-8
|
||||||
|
to_TO UTF-8
|
||||||
|
tpi_PG UTF-8
|
||||||
|
tr_CY.UTF-8 UTF-8
|
||||||
|
tr_CY ISO-8859-9
|
||||||
|
tr_TR.UTF-8 UTF-8
|
||||||
|
tr_TR ISO-8859-9
|
||||||
|
ts_ZA UTF-8
|
||||||
|
tt_RU UTF-8
|
||||||
|
tt_RU@iqtelif UTF-8
|
||||||
|
ug_CN UTF-8
|
||||||
|
uk_UA.UTF-8 UTF-8
|
||||||
|
uk_UA KOI8-U
|
||||||
|
unm_US UTF-8
|
||||||
|
ur_IN UTF-8
|
||||||
|
ur_PK UTF-8
|
||||||
|
uz_UZ.UTF-8 UTF-8
|
||||||
|
uz_UZ ISO-8859-1
|
||||||
|
uz_UZ@cyrillic UTF-8
|
||||||
|
ve_ZA UTF-8
|
||||||
|
vi_VN UTF-8
|
||||||
|
wa_BE.UTF-8 UTF-8
|
||||||
|
wa_BE ISO-8859-1
|
||||||
|
wa_BE@euro ISO-8859-15
|
||||||
|
wae_CH UTF-8
|
||||||
|
wal_ET UTF-8
|
||||||
|
wo_SN UTF-8
|
||||||
|
xh_ZA.UTF-8 UTF-8
|
||||||
|
xh_ZA ISO-8859-1
|
||||||
|
yi_US.UTF-8 UTF-8
|
||||||
|
yi_US CP1255
|
||||||
|
yo_NG UTF-8
|
||||||
|
yue_HK UTF-8
|
||||||
|
yuw_PG UTF-8
|
||||||
|
zh_CN.UTF-8 UTF-8
|
||||||
|
zh_CN.GB18030 GB18030
|
||||||
|
zh_CN.GBK GBK
|
||||||
|
zh_CN GB2312
|
||||||
|
zh_HK.UTF-8 UTF-8
|
||||||
|
zh_HK BIG5-HKSCS
|
||||||
|
zh_SG.UTF-8 UTF-8
|
||||||
|
zh_SG.GBK GBK
|
||||||
|
zh_SG GB2312
|
||||||
|
zh_TW.UTF-8 UTF-8
|
||||||
|
zh_TW.EUC-TW EUC-TW
|
||||||
|
zh_TW BIG5
|
||||||
|
zu_ZA.UTF-8 UTF-8
|
||||||
|
zu_ZA ISO-8859-1
|
||||||
|
|
@ -195,6 +195,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -195,6 +195,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -195,6 +195,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -195,6 +195,7 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
git-lfs && \
|
git-lfs && \
|
||||||
git --version && \
|
git --version && \
|
||||||
|
git-lfs install --skip-repo && \
|
||||||
git-lfs --version
|
git-lfs --version
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
0
linux/ecosystem/gitlab/README.md
Normal file
0
linux/ecosystem/gitlab/README.md
Normal file
75
linux/ecosystem/gitlab/runner/latest/Dockerfile
Normal file
75
linux/ecosystem/gitlab/runner/latest/Dockerfile
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
FROM epicmorg/debian:bullseye-develop
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ENV GITLAB_RUNNER_HOME=/opt/gitlab-runner
|
||||||
|
ENV GITLAB_RUNNER_CONF=/etc/gitlab-runner
|
||||||
|
ENV GIT_SSH_VARIANT=ssh
|
||||||
|
RUN mkdir -p ${GITLAB_RUNNER_HOME} ${GITLAB_RUNNER_CONF} ${GITLAB_RUNNER_CONF}/certs && \
|
||||||
|
chmod -R 700 /etc/gitlab-runner
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# docker setup
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
#Install packages
|
||||||
|
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && \
|
||||||
|
echo 'deb https://download.docker.com/linux/debian bullseye test' > /etc/apt/sources.list.d/docker.list && \
|
||||||
|
echo 'deb https://download.docker.com/linux/debian bullseye nightly' >> /etc/apt/sources.list.d/docker.list && \
|
||||||
|
apt-cache policy docker-ce && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends --allow-unauthenticated \
|
||||||
|
docker-ce \
|
||||||
|
docker-ce-cli \
|
||||||
|
containerd.io systemd && \
|
||||||
|
systemctl disable docker && \
|
||||||
|
docker --version
|
||||||
|
|
||||||
|
COPY run-docker.sh /services/run-docker.sh
|
||||||
|
RUN chmod +x /services/run-docker.sh && \
|
||||||
|
sync
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# docker compose setup
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
#Install packages
|
||||||
|
RUN export DOCKER_COMPOSE_VERSION=`curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r` && \
|
||||||
|
echo "Latest compose is: ${DOCKER_COMPOSE_VERSION}" && \
|
||||||
|
curl -SL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose && \
|
||||||
|
chmod +x /usr/local/bin/docker-compose && \
|
||||||
|
docker-compose --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# gitlab runner setup
|
||||||
|
##################################################################
|
||||||
|
COPY install-gitlab-runner.sh /tmp/install-gitlab-runner.sh
|
||||||
|
RUN cd /tmp && \
|
||||||
|
chmod +x /tmp/install-gitlab-runner.sh && \
|
||||||
|
bash /tmp/install-gitlab-runner.sh && \
|
||||||
|
# useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash && \
|
||||||
|
usermod -aG docker gitlab-runner && \
|
||||||
|
cat /etc/passwd && \
|
||||||
|
gitlab-runner --version
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleaninig up
|
||||||
|
##################################################################
|
||||||
|
RUN apt clean -y && \
|
||||||
|
apt-get clean all && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb && \
|
||||||
|
rm -rfv /tmp/*
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
STOPSIGNAL SIGQUIT
|
||||||
|
VOLUME ["${GITLAB_RUNNER_CONF}", "${GITLAB_RUNNER_HOME}", "/var/lib/docker"]
|
||||||
|
WORKDIR ${GITLAB_RUNNER_HOME}
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/bin/dumb-init", "docker-entrypoint.sh"]
|
||||||
|
CMD ["run", "--user=gitlab-runner", "--working-directory=${GITLAB_RUNNER_HOME}"]
|
19
linux/ecosystem/gitlab/runner/latest/Makefile
Normal file
19
linux/ecosystem/gitlab/runner/latest/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
# make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
#clean:
|
||||||
|
# docker container prune -f
|
||||||
|
# docker image prune -f
|
||||||
|
# docker network prune -f
|
||||||
|
# docker volume prune -f
|
||||||
|
# docker system prune -af
|
0
linux/ecosystem/gitlab/runner/latest/README.md
Normal file
0
linux/ecosystem/gitlab/runner/latest/README.md
Normal file
6
linux/ecosystem/gitlab/runner/latest/docker-compose.yml
Normal file
6
linux/ecosystem/gitlab/runner/latest/docker-compose.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/gitlab-runner:latest"
|
||||||
|
build:
|
||||||
|
context: .
|
22
linux/ecosystem/gitlab/runner/latest/docker-entrypoint.sh
Executable file
22
linux/ecosystem/gitlab/runner/latest/docker-entrypoint.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# gitlab-runner data directory
|
||||||
|
DATA_DIR="/etc/gitlab-runner"
|
||||||
|
CONFIG_FILE=${CONFIG_FILE:-$DATA_DIR/config.toml}
|
||||||
|
# custom certificate authority path
|
||||||
|
CA_CERTIFICATES_PATH=${CA_CERTIFICATES_PATH:-$DATA_DIR/certs/ca.crt}
|
||||||
|
LOCAL_CA_PATH="/usr/local/share/ca-certificates/ca.crt"
|
||||||
|
|
||||||
|
update_ca() {
|
||||||
|
echo "Updating CA certificates..."
|
||||||
|
cp "${CA_CERTIFICATES_PATH}" "${LOCAL_CA_PATH}"
|
||||||
|
update-ca-certificates --fresh >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -f "${CA_CERTIFICATES_PATH}" ]; then
|
||||||
|
# update the ca if the custom ca is different than the current
|
||||||
|
cmp --silent "${CA_CERTIFICATES_PATH}" "${LOCAL_CA_PATH}" || update_ca
|
||||||
|
fi
|
||||||
|
|
||||||
|
# launch gitlab-runner passing all arguments
|
||||||
|
exec gitlab-runner "$@"
|
10
linux/ecosystem/gitlab/runner/latest/install-gitlab-runner.sh
Executable file
10
linux/ecosystem/gitlab/runner/latest/install-gitlab-runner.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eEo pipefail
|
||||||
|
|
||||||
|
wget --no-check-certificate -c https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb --random-wait -O /tmp/gitlab-runner.deb
|
||||||
|
|
||||||
|
dpkg -i "/tmp/gitlab-runner.deb"
|
||||||
|
apt-get update
|
||||||
|
apt-get -f install -y
|
||||||
|
rm -rfv /var/lib/apt/lists/*
|
||||||
|
rm -rfv "/tmp/gitlab-runner.deb"
|
7
linux/ecosystem/gitlab/runner/latest/run-docker.sh
Executable file
7
linux/ecosystem/gitlab/runner/latest/run-docker.sh
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$DOCKER_IN_DOCKER" = "start" ] ; then
|
||||||
|
rm /var/run/docker.pid 2>/dev/null
|
||||||
|
service docker start
|
||||||
|
echo "Docker daemon started"
|
||||||
|
fi
|
2
linux/ecosystem/nginx/latest/mainline/main/.env
Normal file
2
linux/ecosystem/nginx/latest/mainline/main/.env
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
NGINX_VERSION=latest
|
||||||
|
NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz
|
255
linux/ecosystem/nginx/latest/mainline/main/Dockerfile
Normal file
255
linux/ecosystem/nginx/latest/mainline/main/Dockerfile
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
##################################################################
|
||||||
|
# Set Global ARG to build process
|
||||||
|
##################################################################
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Start build process
|
||||||
|
##################################################################
|
||||||
|
FROM epicmorg/debian:bullseye-develop AS builder
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# ARGuments
|
||||||
|
##################################################################
|
||||||
|
ENV BuildDocker true
|
||||||
|
ARG BUILDS_DIR=/builds
|
||||||
|
ARG SRC_DIR=${BUILDS_DIR}/src
|
||||||
|
ARG EXPORT_DIR=${BUILDS_DIR}/export
|
||||||
|
ARG PRE_DIR=${BUILDS_DIR}/pre
|
||||||
|
ARG NGINX_SRC_DIR=${SRC_DIR}/nginx
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
ARG NGINX_DOWNLOAD_URL
|
||||||
|
ARG LUAJIT_INC=/usr/local/include/luajit-2.1
|
||||||
|
ARG LUAJIT_LIB=/usr/local/lib
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Files and folders
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p ${PRE_DIR} ${NGINX_SRC_DIR} /usr/lib/nginx
|
||||||
|
ADD pre/luajit2-description-pak ${PRE_DIR}
|
||||||
|
ADD pre/nginx-description-pak ${PRE_DIR}
|
||||||
|
ADD pre/ip2location-description-pak ${PRE_DIR}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# IP2Location support for prod nginx module
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${SRC_DIR} && \
|
||||||
|
git clone https://github.com/chrislim2888/IP2Location-C-Library.git ip2 && \
|
||||||
|
cp -fv ${PRE_DIR}/ip2location-description-pak ${SRC_DIR}/ip2/description-pak && \
|
||||||
|
cd ${SRC_DIR}/ip2 && \
|
||||||
|
ls -las && \
|
||||||
|
autoreconf -i -v --force && \
|
||||||
|
aclocal && \
|
||||||
|
automake --gnu --add-missing && \
|
||||||
|
autoconf && \
|
||||||
|
autoreconf -i -v --force && \
|
||||||
|
./configure && \
|
||||||
|
ls -las && \
|
||||||
|
make clean && \
|
||||||
|
make && \
|
||||||
|
make -C data convert && \
|
||||||
|
make check && \
|
||||||
|
ls -las && \
|
||||||
|
fakeroot checkinstall -D --pakdir=${EXPORT_DIR} --maintainer="EpicMorg, developer@epicm.org" --pkgname=ip2-custom --conflicts=ip2 --install=yes -y && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /usr/lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /usr/lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /usr/lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.1 /lib/x86_64-linux-gnu/libcrypto.so.1 && \
|
||||||
|
dpkg --force-all -i ${EXPORT_DIR}/*.deb
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# luaJIT 2 support for prod nginx module
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${SRC_DIR} && \
|
||||||
|
git clone https://github.com/openresty/luajit2.git luajit2 && \
|
||||||
|
cp -fv ${PRE_DIR}/luajit2-description-pak ${SRC_DIR}/luajit2/description-pak && \
|
||||||
|
cd ${SRC_DIR}/luajit2 && \
|
||||||
|
make && \
|
||||||
|
make install && \
|
||||||
|
fakeroot checkinstall -D --pakdir=${EXPORT_DIR} --maintainer="EpicMorg, developer@epicm.org" --pkgname=luajit2-custom --conflicts=luajit2 --install=no -y
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# nginx preparing
|
||||||
|
##################################################################
|
||||||
|
RUN wget -qO - ${NGINX_DOWNLOAD_URL} | tar -zxv --strip-components=1 -C ${NGINX_SRC_DIR} && \
|
||||||
|
cd ${NGINX_SRC_DIR} && \
|
||||||
|
git clone https://github.com/openresty/headers-more-nginx-module.git http-headers-more-filter && \
|
||||||
|
git clone https://github.com/sto/ngx_http_auth_pam_module.git http-auth-pam && \
|
||||||
|
git clone https://github.com/arut/nginx-dav-ext-module.git http-dav-ext && \
|
||||||
|
git clone https://github.com/openresty/echo-nginx-module.git http-echo && \
|
||||||
|
git clone https://github.com/aperezdc/ngx-fancyindex.git http-fancyindex && \
|
||||||
|
git clone https://github.com/slact/nchan.git nchan && \
|
||||||
|
git clone https://github.com/msva/nginx-upload-progress-module.git http-uploadprogress && \
|
||||||
|
# git clone https://github.com/masterzen/nginx-upload-progress-module.git http-uploadprogress && \
|
||||||
|
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module http-subs-filter && \
|
||||||
|
git clone https://github.com/grahamedgecombe/nginx-ct.git ssl-ct && \
|
||||||
|
# git clone https://github.com/stnoonan/spnego-http-auth-nginx-module.git spnego-http-auth-nginx-module && \
|
||||||
|
git clone https://github.com/leev/ngx_http_geoip2_module http-geoip2 && \
|
||||||
|
git clone https://github.com/flavioribeiro/nginx-audio-track-for-hls-module.git nginx-audio-track-for-hls-module && \
|
||||||
|
git clone https://github.com/chrislim2888/ip2location-nginx.git ip2location-nginx && \
|
||||||
|
git clone https://github.com/kaltura/nginx-vod-module.git nginx-vod-module && \
|
||||||
|
git clone https://github.com/vozlt/nginx-module-vts.git nginx-module-vts && \
|
||||||
|
git clone https://github.com/evanmiller/mod_zip.git mod-zip && \
|
||||||
|
git clone https://github.com/alibaba/nginx-http-user-agent.git nginx-http-user-agent && \
|
||||||
|
git clone https://github.com/youzee/nginx-unzip-module.git nginx-unzip-module && \
|
||||||
|
git clone https://github.com/vladbondarenko/ngx_webp.git ngx-webp && \
|
||||||
|
git clone https://github.com/openresty/xss-nginx-module.git xss-nginx-module && \
|
||||||
|
git clone https://github.com/openresty/set-misc-nginx-module.git set-misc-nginx-module && \
|
||||||
|
git clone https://github.com/arut/nginx-rtmp-module.git rtmp && \
|
||||||
|
git clone https://github.com/kvspb/nginx-auth-ldap.git http-auth-ldap && \
|
||||||
|
git clone https://github.com/simplresty/ngx_devel_kit.git http-ndk && \
|
||||||
|
git clone https://github.com/chrislim2888/IP2Location-C-Library.git ip2location-c-7.0.0 && \
|
||||||
|
git clone https://github.com/itoffshore/nginx-upstream-fair.git http-upstream-fair && \
|
||||||
|
git clone https://github.com/yaoweibin/nginx_upstream_check_module.git nginx-upstream-check-module && \
|
||||||
|
git clone https://github.com/openresty/lua-nginx-module http-lua
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# nginx compilling
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${NGINX_SRC_DIR} && \
|
||||||
|
./configure \
|
||||||
|
--sbin-path=/usr/sbin/nginx \
|
||||||
|
--prefix=/usr/share/nginx \
|
||||||
|
--conf-path=/etc/nginx/nginx.conf \
|
||||||
|
--http-log-path=/var/log/nginx/access.log \
|
||||||
|
--error-log-path=/var/log/nginx/error.log \
|
||||||
|
--lock-path=/var/lock/nginx.lock \
|
||||||
|
--pid-path=/run/nginx.pid \
|
||||||
|
--modules-path=/usr/lib/nginx/modules \
|
||||||
|
--http-client-body-temp-path=/var/lib/nginx/body \
|
||||||
|
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
|
||||||
|
--http-proxy-temp-path=/var/lib/nginx/proxy \
|
||||||
|
--http-scgi-temp-path=/var/lib/nginx/scgi \
|
||||||
|
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
|
||||||
|
--with-cc-opt='-I/usr/local/include/luajit-2.1 -g -O2 -lz -fstack-protector-strong -Wformat -Wno-error=date-time -Wno-error=implicit-fallthrough= -Wno-error=cast-function-type -Wno-error=format-security -Wno-error=implicit-function-declaration -Wno-error=deprecated-declarations -Wno-error=unused-result -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' \
|
||||||
|
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -lz -fPIC -L/usr/local/lib' \
|
||||||
|
--with-file-aio \
|
||||||
|
--with-compat \
|
||||||
|
--with-debug \
|
||||||
|
--with-threads \
|
||||||
|
--with-pcre-jit \
|
||||||
|
--with-http_ssl_module \
|
||||||
|
--with-http_stub_status_module \
|
||||||
|
--with-http_realip_module \
|
||||||
|
--with-http_auth_request_module \
|
||||||
|
--with-http_v2_module \
|
||||||
|
--with-http_dav_module \
|
||||||
|
--with-http_slice_module \
|
||||||
|
--with-http_addition_module \
|
||||||
|
--with-http_flv_module \
|
||||||
|
--with-http_geoip_module=dynamic \
|
||||||
|
--with-http_gunzip_module \
|
||||||
|
--with-http_gzip_static_module \
|
||||||
|
--with-http_image_filter_module=dynamic \
|
||||||
|
--with-http_mp4_module \
|
||||||
|
--with-http_perl_module=dynamic \
|
||||||
|
--with-http_random_index_module \
|
||||||
|
--with-http_secure_link_module \
|
||||||
|
--with-http_sub_module \
|
||||||
|
--with-http_xslt_module=dynamic \
|
||||||
|
--with-mail=dynamic \
|
||||||
|
--with-mail_ssl_module \
|
||||||
|
--with-stream=dynamic \
|
||||||
|
--with-stream_ssl_module \
|
||||||
|
--with-stream_ssl_preread_module \
|
||||||
|
--add-dynamic-module=http-headers-more-filter \
|
||||||
|
--add-dynamic-module=http-auth-pam \
|
||||||
|
--add-dynamic-module=http-dav-ext \
|
||||||
|
--add-dynamic-module=http-ndk \
|
||||||
|
--add-dynamic-module=http-echo \
|
||||||
|
--add-dynamic-module=http-fancyindex \
|
||||||
|
--add-dynamic-module=nchan \
|
||||||
|
--add-dynamic-module=http-uploadprogress \
|
||||||
|
--add-dynamic-module=http-subs-filter \
|
||||||
|
--add-dynamic-module=ssl-ct \
|
||||||
|
--add-dynamic-module=http-geoip2 \
|
||||||
|
# --add-dynamic-module=spnego-http-auth-nginx-module \
|
||||||
|
--add-dynamic-module=http-auth-ldap \
|
||||||
|
# --add-dynamic-module=nginx-audio-track-for-hls-module \
|
||||||
|
--add-dynamic-module=ip2location-nginx \
|
||||||
|
--add-dynamic-module=nginx-vod-module \
|
||||||
|
# --add-dynamic-module=nginx-module-vts \
|
||||||
|
--add-dynamic-module=mod-zip \
|
||||||
|
--add-dynamic-module=nginx-http-user-agent \
|
||||||
|
--add-dynamic-module=nginx-unzip-module \
|
||||||
|
--add-dynamic-module=ngx-webp \
|
||||||
|
--add-dynamic-module=set-misc-nginx-module \
|
||||||
|
--add-dynamic-module=rtmp \
|
||||||
|
--add-dynamic-module=http-upstream-fair \
|
||||||
|
--add-dynamic-module=nginx-upstream-check-module \
|
||||||
|
--add-dynamic-module=http-lua && \
|
||||||
|
cp -fv ${PRE_DIR}/nginx-description-pak ${NGINX_SRC_DIR}/description-pak && \
|
||||||
|
fakeroot checkinstall -D --pakdir=/builds/export --maintainer="EpicMorg, developer@epicm.org" --pkgname=nginx-custom --install=no -y && \
|
||||||
|
apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
FROM epicmorg/debian:bullseye
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# LDAP Fix
|
||||||
|
##################################################################
|
||||||
|
RUN echo "TLS_REQCERT never" >> /etc/ldap/ldap.conf
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing nginx from deb
|
||||||
|
##################################################################
|
||||||
|
ADD pre/ngninx.pre.tar.gz /
|
||||||
|
COPY --from=builder /builds/export /tmp/deb
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
geoip-database \
|
||||||
|
geoip-bin \
|
||||||
|
libgeoip1 \
|
||||||
|
libmaxminddb0 \
|
||||||
|
libgd3 \
|
||||||
|
libxslt1.1 && \
|
||||||
|
dpkg --force-all -i /tmp/deb/*.deb && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /usr/lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /usr/lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /usr/lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.3 /usr/lib/libIP2Location.so.3 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.4 /usr/lib/libIP2Location.so.4 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.5 /usr/lib/libIP2Location.so.5 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.3 /lib/libIP2Location.so.3 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.4 /lib/libIP2Location.so.4 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.5 /lib/libIP2Location.so.5 && \
|
||||||
|
ln -sf /dev/stdout /var/log/nginx/access.log && \
|
||||||
|
ln -sf /dev/stderr /var/log/nginx/error.log && \
|
||||||
|
ln -sf /etc/ssl/dhparam.pem /etc/nginx/dhparam.pem && \
|
||||||
|
apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
rm -rf /var/cache/apt/archives/*.deb && \
|
||||||
|
rm -rf /tmp/deb/* && \
|
||||||
|
rm -rf /builds/* && \
|
||||||
|
rm -rf /valve/*
|
||||||
|
|
||||||
|
#healthcheck. good practice
|
||||||
|
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
VOLUME ["/var/cache/nginx"]
|
||||||
|
EXPOSE 80 443
|
||||||
|
|
||||||
|
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||||
|
CMD ["docker-entrypoint.sh"]
|
19
linux/ecosystem/nginx/latest/mainline/main/Makefile
Normal file
19
linux/ecosystem/nginx/latest/mainline/main/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
30
linux/ecosystem/nginx/latest/mainline/main/README.md
Normal file
30
linux/ecosystem/nginx/latest/mainline/main/README.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Compose example
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
balancer:
|
||||||
|
image: epicmorg/balancer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:80:80"
|
||||||
|
- "0.0.0.0:443:443"
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime
|
||||||
|
- /etc/timezone:/etc/timezone
|
||||||
|
- /etc/letsencrypt:/etc/letsencrypt
|
||||||
|
- nginx:/etc/nginx
|
||||||
|
- nginx-usr:/usr/share/nginx/html
|
||||||
|
- /var/lib/nginx
|
||||||
|
# extra_hosts:
|
||||||
|
# - "example.com:192.168.0.11"
|
||||||
|
depends_on:
|
||||||
|
- websites
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
volumes:
|
||||||
|
nginx:
|
||||||
|
external: true
|
||||||
|
nginx-usr:
|
||||||
|
external: true
|
||||||
|
```
|
@ -0,0 +1,9 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/nginx:${NGINX_VERSION}"
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
NGINX_VERSION: ${NGINX_VERSION}
|
||||||
|
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
16
linux/ecosystem/nginx/latest/mainline/main/docker-entrypoint.sh
Executable file
16
linux/ecosystem/nginx/latest/mainline/main/docker-entrypoint.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||||
|
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||||
|
chown www-data:www-data /var/www -R
|
||||||
|
echo "[nginx] Done"
|
||||||
|
else
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[nginx] Starting up"
|
||||||
|
nginx -g 'daemon off;'
|
@ -0,0 +1 @@
|
|||||||
|
Custom build of ip2location lib by EpicMorg.
|
@ -0,0 +1 @@
|
|||||||
|
Custom build of luajit2 for Nginx module, by EpicMorg.
|
@ -0,0 +1 @@
|
|||||||
|
Custom build of Nginx with some modules by EpicMorg.
|
BIN
linux/ecosystem/nginx/latest/mainline/main/pre/ngninx.pre.tar.gz
Normal file
BIN
linux/ecosystem/nginx/latest/mainline/main/pre/ngninx.pre.tar.gz
Normal file
Binary file not shown.
2
linux/ecosystem/nginx/latest/mainline/php/.env
Normal file
2
linux/ecosystem/nginx/latest/mainline/php/.env
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
NGINX_VERSION=latest
|
||||||
|
NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz
|
263
linux/ecosystem/nginx/latest/mainline/php/Dockerfile
Normal file
263
linux/ecosystem/nginx/latest/mainline/php/Dockerfile
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
##################################################################
|
||||||
|
# Set Global ARG to build process
|
||||||
|
##################################################################
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Start build process
|
||||||
|
##################################################################
|
||||||
|
FROM epicmorg/debian:bullseye-develop AS builder
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# ARGuments
|
||||||
|
##################################################################
|
||||||
|
ENV BuildDocker true
|
||||||
|
|
||||||
|
ARG BUILDS_DIR=/builds
|
||||||
|
ARG SRC_DIR=${BUILDS_DIR}/src
|
||||||
|
ARG EXPORT_DIR=${BUILDS_DIR}/export
|
||||||
|
ARG P4API_DIR=${SRC_DIR}/p4api
|
||||||
|
ARG P4PHP_DIR=${SRC_DIR}/p4php
|
||||||
|
ARG MAKE_DIR=${SRC_DIR}/p4php-7.4
|
||||||
|
|
||||||
|
ARG P4API_VER=r20.1
|
||||||
|
ARG P4API_URL=http://filehost.perforce.com/perforce/${P4API_VER}/bin.linux26x86_64/p4api.tgz
|
||||||
|
|
||||||
|
ARG P4PHP_VER=r20.1
|
||||||
|
ARG P4PHP_URL=http://filehost.perforce.com/perforce/${P4PHP_VER}/bin.tools/p4php-php7.tgz
|
||||||
|
|
||||||
|
ARG PHP_MODULE_PATH=/usr/lib/php/20190902
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Files and folders
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p ${BUILDS_DIR} ${SRC_DIR} ${EXPORT_DIR} ${MAKE_DIR} ${P4API_DIR} ${P4PHP_DIR}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing PHP7
|
||||||
|
##################################################################
|
||||||
|
#installing php repo
|
||||||
|
|
||||||
|
#Install base packages
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libmemcached-dev \
|
||||||
|
smbclient libsmbclient libsmbclient-dev \
|
||||||
|
php7.4 \
|
||||||
|
php7.4-dev \
|
||||||
|
php7.4-fpm \
|
||||||
|
php7.4-cli \
|
||||||
|
php7.4-cgi
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# preparing p4src
|
||||||
|
##################################################################
|
||||||
|
RUN wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${P4API_DIR} && \
|
||||||
|
wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \
|
||||||
|
wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${P4PHP_DIR} && \
|
||||||
|
wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \
|
||||||
|
cd ${P4API_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
cd ${P4PHP_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
cd ${MAKE_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
cd ${SRC_DIR} && \
|
||||||
|
ls -las
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# compilling p4src
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${MAKE_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
phpize && \
|
||||||
|
./configure --with-perforce=${P4API_DIR} && \
|
||||||
|
make && \
|
||||||
|
make test && \
|
||||||
|
make install && \
|
||||||
|
cp ${PHP_MODULE_PATH}/perforce.so ${EXPORT_DIR}
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# compilling smbclient
|
||||||
|
##################################################################
|
||||||
|
RUN pecl install smbclient && \
|
||||||
|
cp ${PHP_MODULE_PATH}/smbclient.so ${EXPORT_DIR}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
FROM epicmorg/nginx:${NGINX_VERSION}
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing php fpm for nginx from deb
|
||||||
|
##################################################################
|
||||||
|
ARG PHP_MODULE_PATH=/usr/lib/php/20190902
|
||||||
|
ARG PHP_VER=7.4
|
||||||
|
ARG PHP_DIR=/etc/php/${PHP_VER}
|
||||||
|
ARG P4_PHP_INI=${PHP_DIR}/mods-available/perfroce.ini
|
||||||
|
ARG SMB_PHP_INI=${PHP_DIR}/mods-available/smbclient.ini
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing PHP7
|
||||||
|
##################################################################
|
||||||
|
#Install base packages
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
php7.4 \
|
||||||
|
php7.4-dev \
|
||||||
|
php7.4-fpm \
|
||||||
|
php7.4-cli \
|
||||||
|
php7.4-cgi \
|
||||||
|
php-pear \
|
||||||
|
php7.4-gmp \
|
||||||
|
php7.4-snmp \
|
||||||
|
php7.4-ldap \
|
||||||
|
php7.4-mail \
|
||||||
|
php7.4-soap \
|
||||||
|
php7.4-mysql \
|
||||||
|
php7.4-memcached \
|
||||||
|
php7.4-memcache \
|
||||||
|
php7.4-igbinary \
|
||||||
|
php7.4-interbase \
|
||||||
|
php7.4-curl \
|
||||||
|
php7.4-gd \
|
||||||
|
php7.4-intl \
|
||||||
|
php7.4-zip \
|
||||||
|
php7.4-bcmath \
|
||||||
|
php7.4-imap \
|
||||||
|
php7.4-pspell \
|
||||||
|
php7.4-sqlite3 \
|
||||||
|
php7.4-tidy \
|
||||||
|
php7.4-xmlrpc \
|
||||||
|
php7.4-xml \
|
||||||
|
php7.4-mbstring \
|
||||||
|
php7.4-apcu \
|
||||||
|
php7.4-common \
|
||||||
|
php7.4-json \
|
||||||
|
php7.4-readline \
|
||||||
|
php7.4-enchant \
|
||||||
|
php7.4-ssh2 \
|
||||||
|
php7.4-oauth \
|
||||||
|
php7.4-gmagick \
|
||||||
|
php7.4-gnupg \
|
||||||
|
php7.4-redis \
|
||||||
|
smbclient libsmbclient \
|
||||||
|
# php-smbclient \
|
||||||
|
php7.4-yaml \
|
||||||
|
php7.4-geoip \
|
||||||
|
sendmail && \
|
||||||
|
update-alternatives --set php /usr/bin/php7.4 && \
|
||||||
|
phpenmod \
|
||||||
|
snmp \
|
||||||
|
gmp \
|
||||||
|
calendar \
|
||||||
|
ldap \
|
||||||
|
curl \
|
||||||
|
exif \
|
||||||
|
ftp \
|
||||||
|
fileinfo \
|
||||||
|
gd \
|
||||||
|
geoip \
|
||||||
|
gnupg \
|
||||||
|
iconv \
|
||||||
|
imap \
|
||||||
|
json \
|
||||||
|
mbstring \
|
||||||
|
memcached \
|
||||||
|
mysqli \
|
||||||
|
mysqlnd \
|
||||||
|
oauth \
|
||||||
|
pdo_mysql \
|
||||||
|
pdo_sqlite \
|
||||||
|
phar \
|
||||||
|
posix \
|
||||||
|
readline \
|
||||||
|
redis \
|
||||||
|
simplexml \
|
||||||
|
sockets \
|
||||||
|
sqlite3 \
|
||||||
|
ssh2 \
|
||||||
|
tokenizer \
|
||||||
|
xml \
|
||||||
|
xmlreader \
|
||||||
|
xmlrpc \
|
||||||
|
xmlwriter \
|
||||||
|
xsl \
|
||||||
|
yaml && \
|
||||||
|
ln -sf /etc/ssl/dhparam.pem /etc/php/dhparam.pem && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing IOnCube addon
|
||||||
|
##################################################################
|
||||||
|
ADD https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz /tmp/ioncube.tar.gz
|
||||||
|
RUN tar -C /tmp -xvf /tmp/ioncube.tar.gz && \
|
||||||
|
cp /tmp/ioncube/ioncube_loader_lin_7.4.so ${PHP_MODULE_PATH} && \
|
||||||
|
# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/apache2/php.ini && \
|
||||||
|
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cgi/php.ini && \
|
||||||
|
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cli/php.ini && \
|
||||||
|
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/fpm/php.ini && \
|
||||||
|
php -m && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing P4 addon
|
||||||
|
##################################################################
|
||||||
|
COPY --from=builder /builds/export/perforce.so ${PHP_MODULE_PATH}
|
||||||
|
RUN echo "extension=perforce.so" > ${P4_PHP_INI} && \
|
||||||
|
ln -sf ${P4_PHP_INI} ${PHP_DIR}/cgi/conf.d/perforce.ini && \
|
||||||
|
ln -sf ${P4_PHP_INI} ${PHP_DIR}/cli/conf.d/perforce.ini && \
|
||||||
|
ln -sf ${P4_PHP_INI} ${PHP_DIR}/fpm/conf.d/perforce.ini && \
|
||||||
|
php -m && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing smbclient addon
|
||||||
|
##################################################################
|
||||||
|
COPY --from=builder /builds/export/smbclient.so ${PHP_MODULE_PATH}
|
||||||
|
RUN echo "extension=smbclient.so" > ${SMB_PHP_INI} && \
|
||||||
|
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cgi/conf.d/smbclient.ini && \
|
||||||
|
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cli/conf.d/smbclient.ini && \
|
||||||
|
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/fpm/conf.d/smbclient.ini && \
|
||||||
|
php -m && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing Composer addon
|
||||||
|
##################################################################
|
||||||
|
RUN cd /tmp && \
|
||||||
|
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
|
||||||
|
php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
|
||||||
|
rm /tmp/composer-setup.php
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleaninig up
|
||||||
|
##################################################################
|
||||||
|
RUN apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb && \
|
||||||
|
rm -rfv /tmp/deb/* && \
|
||||||
|
rm -rfv /tmp/ioncube/* && \
|
||||||
|
rm -rfv /tmp/composer-setup.php && \
|
||||||
|
rm -rfv /tmp/ioncube.tar.gz
|
||||||
|
|
||||||
|
#healthcheck. good practice
|
||||||
|
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
VOLUME ["/var/cache/nginx"]
|
||||||
|
EXPOSE 80 443
|
||||||
|
|
||||||
|
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||||
|
CMD ["docker-entrypoint.sh"]
|
19
linux/ecosystem/nginx/latest/mainline/php/Makefile
Normal file
19
linux/ecosystem/nginx/latest/mainline/php/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
30
linux/ecosystem/nginx/latest/mainline/php/README.md
Normal file
30
linux/ecosystem/nginx/latest/mainline/php/README.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Compose example
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
balancer:
|
||||||
|
image: epicmorg/balancer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:80:80"
|
||||||
|
- "0.0.0.0:443:443"
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime
|
||||||
|
- /etc/timezone:/etc/timezone
|
||||||
|
- /etc/letsencrypt:/etc/letsencrypt
|
||||||
|
- nginx:/etc/nginx
|
||||||
|
- nginx-usr:/usr/share/nginx/html
|
||||||
|
- /var/lib/nginx
|
||||||
|
# extra_hosts:
|
||||||
|
# - "example.com:192.168.0.11"
|
||||||
|
depends_on:
|
||||||
|
- websites
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
volumes:
|
||||||
|
nginx:
|
||||||
|
external: true
|
||||||
|
nginx-usr:
|
||||||
|
external: true
|
||||||
|
```
|
@ -0,0 +1,9 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/nginx:${NGINX_VERSION}-php"
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
NGINX_VERSION: ${NGINX_VERSION}
|
||||||
|
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
16
linux/ecosystem/nginx/latest/mainline/php/docker-entrypoint.sh
Executable file
16
linux/ecosystem/nginx/latest/mainline/php/docker-entrypoint.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||||
|
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||||
|
chown www-data:www-data /var/www -R
|
||||||
|
echo "[nginx] Done"
|
||||||
|
else
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[nginx] Starting up"
|
||||||
|
nginx -g 'daemon off;'
|
2
linux/ecosystem/nginx/latest/mainline/rtmp-hls/.env
Normal file
2
linux/ecosystem/nginx/latest/mainline/rtmp-hls/.env
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
NGINX_VERSION=latest
|
||||||
|
NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz
|
131
linux/ecosystem/nginx/latest/mainline/rtmp-hls/Dockerfile
Normal file
131
linux/ecosystem/nginx/latest/mainline/rtmp-hls/Dockerfile
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
##################################################################
|
||||||
|
# Set Global ARG to build process
|
||||||
|
##################################################################
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Start build process
|
||||||
|
##################################################################
|
||||||
|
FROM epicmorg/nginx:${NGINX_VERSION}
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ARG NGINX_RTMP_MODULE_VERSION=1.2.1
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Clear sources.list.d
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list.d/*
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# sid sources list
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.sid.list /etc/apt/sources.list
|
||||||
|
RUN apt update
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing utils
|
||||||
|
##################################################################
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libpcre3-dev \
|
||||||
|
librtmp1 \
|
||||||
|
libtheora0 \
|
||||||
|
libvorbis-dev \
|
||||||
|
libmp3lame0 \
|
||||||
|
libx264-dev \
|
||||||
|
libx265-dev
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# stretch sources list + libvpx
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.stretch.list /etc/apt/sources.list
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libvpx4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# buster sources list + libvpx
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.buster.list /etc/apt/sources.list
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libvpx5
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# sid sources list + libvpx
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.sid.list /etc/apt/sources.list
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libvpx6
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing deps for rtmp module
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p /usr/share/nginx/html \
|
||||||
|
/mnt/hls \
|
||||||
|
/mnt/dash \
|
||||||
|
/tmp/build && \
|
||||||
|
chown -R www-data:www-data /mnt/hls && \
|
||||||
|
chown -R www-data:www-data /mnt/dash && \
|
||||||
|
chmod -R 755 /mnt/hls && \
|
||||||
|
chmod -R 755 /mnt/dash && \
|
||||||
|
cd /tmp/build && \
|
||||||
|
wget https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \
|
||||||
|
tar -zxf v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \
|
||||||
|
rm v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \
|
||||||
|
cp /tmp/build/nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}/stat.xsl /usr/share/nginx/html/stat.xsl && \
|
||||||
|
rm -rf /tmp/build
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Forward logs to Docker
|
||||||
|
##################################################################
|
||||||
|
RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
|
||||||
|
ln -sf /dev/stderr /var/log/nginx/error.log
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Copy nginx config file to container
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/nginx/nginx.conf \
|
||||||
|
/etc/nginx/sites-avalible/default
|
||||||
|
COPY conf/nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Copy html players to container
|
||||||
|
##################################################################
|
||||||
|
COPY players /usr/share/nginx/html/players
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleaninig up
|
||||||
|
##################################################################
|
||||||
|
RUN apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb
|
||||||
|
|
||||||
|
#healthcheck. good practice
|
||||||
|
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
VOLUME ["/var/cache/nginx"]
|
||||||
|
EXPOSE 80 443 1935 8080
|
||||||
|
|
||||||
|
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||||
|
CMD ["docker-entrypoint.sh"]
|
19
linux/ecosystem/nginx/latest/mainline/rtmp-hls/Makefile
Normal file
19
linux/ecosystem/nginx/latest/mainline/rtmp-hls/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
78
linux/ecosystem/nginx/latest/mainline/rtmp-hls/README.md
Normal file
78
linux/ecosystem/nginx/latest/mainline/rtmp-hls/README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# RTMP-HLS Docker
|
||||||
|
|
||||||
|
**BASED ON** [TareqAlqutami/rtmp-hls-server](https://github.com/TareqAlqutami/rtmp-hls-server)
|
||||||
|
|
||||||
|
**Docker image for video streaming server that supports RTMP, HLS, and DASH streams.**
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
This Docker image can be used to create a video streaming server that supports [**RTMP**](https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol), [**HLS**](https://en.wikipedia.org/wiki/HTTP_Live_Streaming), [**DASH**](https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP) out of the box.
|
||||||
|
It also allows adaptive streaming and custom transcoding of video streams.
|
||||||
|
All modules are built from source on Debian and Alpine Linux base images.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
* The backend is [**Nginx**](http://nginx.org/en/) with [**nginx-rtmp-module**](https://github.com/arut/nginx-rtmp-module).
|
||||||
|
* [**FFmpeg**](https://www.ffmpeg.org/) for transcoding and adaptive streaming.
|
||||||
|
* Default settings:
|
||||||
|
* RTMP is ON
|
||||||
|
* HLS is ON (adaptive, 5 variants)
|
||||||
|
* DASH is ON
|
||||||
|
* Other Nginx configuration files are also provided to allow for RTMP-only streams or no-FFmpeg transcoding.
|
||||||
|
* Statistic page of RTMP streams at `http://<server ip>:<server port>/stats`.
|
||||||
|
* Available web video players (based on [video.js](https://videojs.com/) and [hls.js](https://github.com/video-dev/hls.js/)) at `/usr/share/nginx/html/players`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### To run the server
|
||||||
|
```
|
||||||
|
docker run -d -p 1935:1935 -p 8080:8080 epicmorg/balancer:rtmp-hls
|
||||||
|
```
|
||||||
|
|
||||||
|
To run with custom conf file:
|
||||||
|
```
|
||||||
|
docker run -d -p 1935:1935 -p 8080:8080 -v custom.conf:/etc/nginx/nginx.conf epicmorg/balancer:rtmp-hls
|
||||||
|
```
|
||||||
|
where `custom.conf` is the new conf file for Nginx.
|
||||||
|
|
||||||
|
### To stream to the server
|
||||||
|
* **Stream live RTMP content to:**
|
||||||
|
```
|
||||||
|
rtmp://<server ip>:1935/live/<stream_key>
|
||||||
|
```
|
||||||
|
where `<stream_key>` is any stream key you specify.
|
||||||
|
|
||||||
|
* **Configure [OBS](https://obsproject.com/) to stream content:** <br />
|
||||||
|
Go to Settings > Stream, choose the following settings:
|
||||||
|
* Service: Custom Streaming Server.
|
||||||
|
* Server: `rtmp://<server ip>:1935/live`.
|
||||||
|
* Stream key: anything you want, however provided video players assume stream key is `test`
|
||||||
|
|
||||||
|
### To view the stream
|
||||||
|
* **Using [VLC](https://www.videolan.org/vlc/index.html):**
|
||||||
|
* Go to Media > Open Network Stream.
|
||||||
|
* Enter the streaming URL: `rtmp://<server ip>:1935/live/<stream-key>`
|
||||||
|
Replace `<server ip>` with the IP of where the server is running, and
|
||||||
|
`<stream-key>` with the stream key you used when setting up the stream.
|
||||||
|
* For HLS and DASH, the URLs are of the forms:
|
||||||
|
`http://<server ip>:8080/hls/<stream-key>.m3u8` and
|
||||||
|
`http://<server ip>:8080/dash/<stream-key>_src.mpd` respectively.
|
||||||
|
* Click Play.
|
||||||
|
|
||||||
|
* **Using provided web players:** <br/>
|
||||||
|
The provided demo players assume the stream-key is called `test` and the player is opened in localhost.
|
||||||
|
* To play RTMP content (requires Flash): `http://localhost:8080/players/rtmp.html`
|
||||||
|
* To play HLS content: `http://localhost:8080/players/hls.html`
|
||||||
|
* To play HLS content using hls.js library: `http://localhost:8080/players/hls_hlsjs.html`
|
||||||
|
* To play DASH content: `http://localhost:8080/players/dash.html`
|
||||||
|
* To play RTMP and HLS contents on the same page: `http://localhost:8080/players/rtmp_hls.html`
|
||||||
|
|
||||||
|
**Notes:**
|
||||||
|
|
||||||
|
* These web players are hardcoded to play stream key "test" at localhost.
|
||||||
|
* To change the stream source for these players. Download the html files and modify the `src` attribute in the video tag in the html file. You can then mount the modified files to the container as follows:
|
||||||
|
```
|
||||||
|
docker run -d -p 1935:1935 -p 8080:8080 -v custom_players:/usr/share/nginx/html/players epicmorg/balancer:rtmp-hls
|
||||||
|
```
|
||||||
|
where `custom_players` is the directory holding the modified html files.
|
||||||
|
|
||||||
|
|
134
linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx.conf
Normal file
134
linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx.conf
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";
|
||||||
|
|
||||||
|
worker_processes auto;
|
||||||
|
#error_log logs/error.log;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
# RTMP configuration
|
||||||
|
rtmp {
|
||||||
|
server {
|
||||||
|
listen 1935; # Listen on standard RTMP port
|
||||||
|
chunk_size 4000;
|
||||||
|
# ping 30s;
|
||||||
|
# notify_method get;
|
||||||
|
|
||||||
|
# This application is to accept incoming stream
|
||||||
|
application live {
|
||||||
|
live on; # Allows live input
|
||||||
|
|
||||||
|
# for each received stream, transcode for adaptive streaming
|
||||||
|
# This single ffmpeg command takes the input and transforms
|
||||||
|
# the source into 4 different streams with different bitrates
|
||||||
|
# and qualities. # these settings respect the aspect ratio.
|
||||||
|
exec_push /usr/bin/ffmpeg -i rtmp://localhost:1935/$app/$name -async 1 -vsync -1
|
||||||
|
-c:v libx264 -c:a aac -b:v 256k -b:a 64k -vf "scale=480:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_low
|
||||||
|
-c:v libx264 -c:a aac -b:v 768k -b:a 128k -vf "scale=720:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_mid
|
||||||
|
-c:v libx264 -c:a aac -b:v 1024k -b:a 128k -vf "scale=960:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_high
|
||||||
|
-c:v libx264 -c:a aac -b:v 1920k -b:a 128k -vf "scale=1280:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_hd720
|
||||||
|
-c copy -f flv rtmp://localhost:1935/show/$name_src;
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is the HLS application
|
||||||
|
application show {
|
||||||
|
live on; # Allows live input from above application
|
||||||
|
deny play all; # disable consuming the stream from nginx as rtmp
|
||||||
|
|
||||||
|
hls on; # Enable HTTP Live Streaming
|
||||||
|
hls_fragment 3;
|
||||||
|
hls_playlist_length 20;
|
||||||
|
hls_path /mnt/hls/; # hls fragments path
|
||||||
|
# Instruct clients to adjust resolution according to bandwidth
|
||||||
|
hls_variant _src BANDWIDTH=4096000; # Source bitrate, source resolution
|
||||||
|
hls_variant _hd720 BANDWIDTH=2048000; # High bitrate, HD 720p resolution
|
||||||
|
hls_variant _high BANDWIDTH=1152000; # High bitrate, higher-than-SD resolution
|
||||||
|
hls_variant _mid BANDWIDTH=448000; # Medium bitrate, SD resolution
|
||||||
|
hls_variant _low BANDWIDTH=288000; # Low bitrate, sub-SD resolution
|
||||||
|
|
||||||
|
# MPEG-DASH
|
||||||
|
dash on;
|
||||||
|
dash_path /mnt/dash/; # dash fragments path
|
||||||
|
dash_fragment 3;
|
||||||
|
dash_playlist_length 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/sites-enabled/*.conf;
|
||||||
|
sendfile off;
|
||||||
|
tcp_nopush on;
|
||||||
|
directio 512;
|
||||||
|
# aio on;
|
||||||
|
|
||||||
|
# HTTP server required to serve the player and HLS fragments
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
|
||||||
|
# Serve HLS fragments
|
||||||
|
location /hls {
|
||||||
|
types {
|
||||||
|
application/vnd.apple.mpegurl m3u8;
|
||||||
|
video/mp2t ts;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serve DASH fragments
|
||||||
|
location /dash {
|
||||||
|
types {
|
||||||
|
application/dash+xml mpd;
|
||||||
|
video/mp4 mp4;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# Allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This URL provides RTMP statistics in XML
|
||||||
|
location /stat {
|
||||||
|
rtmp_stat all;
|
||||||
|
rtmp_stat_stylesheet stat.xsl; # Use stat.xsl stylesheet
|
||||||
|
}
|
||||||
|
|
||||||
|
location /stat.xsl {
|
||||||
|
# XML stylesheet to view RTMP stats.
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,118 @@
|
|||||||
|
load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";
|
||||||
|
|
||||||
|
worker_processes auto;
|
||||||
|
#error_log logs/error.log;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
# RTMP configuration
|
||||||
|
rtmp {
|
||||||
|
server {
|
||||||
|
listen 1935; # Listen on standard RTMP port
|
||||||
|
chunk_size 4000;
|
||||||
|
# ping 30s;
|
||||||
|
# notify_method get;
|
||||||
|
|
||||||
|
# This application is to accept incoming stream
|
||||||
|
application live {
|
||||||
|
live on; # Allows live input
|
||||||
|
push rtmp://localhost:1935/show;
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is the HLS application
|
||||||
|
application show {
|
||||||
|
live on; # Allows live input from above application
|
||||||
|
deny play all; # disable consuming the stream from nginx as rtmp
|
||||||
|
|
||||||
|
hls on; # Enable HTTP Live Streaming
|
||||||
|
hls_fragment 3;
|
||||||
|
hls_playlist_length 10;
|
||||||
|
hls_path /mnt/hls/; # hls fragments path
|
||||||
|
|
||||||
|
# MPEG-DASH
|
||||||
|
dash on;
|
||||||
|
dash_path /mnt/dash/; # dash fragments path
|
||||||
|
dash_fragment 3;
|
||||||
|
dash_playlist_length 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/sites-enabled/*.conf;
|
||||||
|
sendfile off;
|
||||||
|
tcp_nopush on;
|
||||||
|
directio 512;
|
||||||
|
# aio on;
|
||||||
|
|
||||||
|
# HTTP server required to serve the player and HLS fragments
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
|
||||||
|
# Serve HLS fragments
|
||||||
|
location /hls {
|
||||||
|
types {
|
||||||
|
application/vnd.apple.mpegurl m3u8;
|
||||||
|
video/mp2t ts;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serve DASH fragments
|
||||||
|
location /dash {
|
||||||
|
types {
|
||||||
|
application/dash+xml mpd;
|
||||||
|
video/mp4 mp4;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# Allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This URL provides RTMP statistics in XML
|
||||||
|
location /stat {
|
||||||
|
rtmp_stat all;
|
||||||
|
rtmp_stat_stylesheet stat.xsl; # Use stat.xsl stylesheet
|
||||||
|
}
|
||||||
|
|
||||||
|
location /stat.xsl {
|
||||||
|
# XML stylesheet to view RTMP stats.
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";
|
||||||
|
|
||||||
|
worker_processes auto;
|
||||||
|
rtmp_auto_push on;
|
||||||
|
events {}
|
||||||
|
rtmp {
|
||||||
|
server {
|
||||||
|
listen 1935;
|
||||||
|
listen [::]:1935;
|
||||||
|
|
||||||
|
application live {
|
||||||
|
live on;
|
||||||
|
record off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/nginx:${NGINX_VERSION}-rtmp-hls"
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
NGINX_VERSION: ${NGINX_VERSION}
|
||||||
|
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
16
linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-entrypoint.sh
Executable file
16
linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-entrypoint.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||||
|
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||||
|
chown www-data:www-data /var/www -R
|
||||||
|
echo "[nginx] Done"
|
||||||
|
else
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[nginx] Starting up"
|
||||||
|
nginx -g 'daemon off;'
|
@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>DASH Live Streaming</title>
|
||||||
|
<link href="https://vjs.zencdn.net/7.5.5/video-js.css" rel="stylesheet">
|
||||||
|
<script src="https://vjs.zencdn.net/7.5.5/video.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>DASH Player</h1>
|
||||||
|
<video id="player" class="video-js vjs-default-skin" width="720" controls preload="auto">
|
||||||
|
<source src="/dash/test_src.mpd" type="application/dash+xml" />
|
||||||
|
</video>
|
||||||
|
<script>
|
||||||
|
var player = videojs('#player');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
<font size="2"> Tareq-Alqutami - 2019</font>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>HLS Live Streaming</title>
|
||||||
|
<link href="https://vjs.zencdn.net/7.5.5/video-js.css" rel="stylesheet">
|
||||||
|
<script src="https://vjs.zencdn.net/7.5.5/video.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>HLS Player</h1>
|
||||||
|
<video id="player" class="video-js vjs-default-skin" width="720" controls preload="auto">
|
||||||
|
<source src="/hls/test.m3u8" type="application/x-mpegURL" />
|
||||||
|
</video>
|
||||||
|
<script>
|
||||||
|
var player = videojs('#player');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
<font size="2"> Tareq-Alqutami - 2019</font>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,41 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>HLS streaming</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||||
|
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>HLS Player (using hls.js)</h1>
|
||||||
|
|
||||||
|
<div class="well">
|
||||||
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
|
<video id="video" style="max-height: 50%" class="embed-responsive-item video-js vjs-default-skin" controls muted="muted"></video>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
if(Hls.isSupported()) {
|
||||||
|
var video = document.getElementById('video');
|
||||||
|
var hls = new Hls();
|
||||||
|
hls.loadSource('/hls/test.m3u8');
|
||||||
|
hls.attachMedia(video);
|
||||||
|
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||||
|
video.play();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
<font size="2">Tareq-Alqutami - 2019</font>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>RTMP Live Streaming</title>
|
||||||
|
<title>Live Streaming</title>
|
||||||
|
<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
|
||||||
|
<script src="https://unpkg.com/video.js/dist/video.js"></script>
|
||||||
|
<script src="https://unpkg.com/videojs-flash/dist/videojs-flash.min.js"></script>
|
||||||
|
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>RTMP Player</h1>
|
||||||
|
<video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="720"
|
||||||
|
data-setup='{"techOrder": ["html5","flash"]}'>
|
||||||
|
<source src="rtmp://127.0.0.1:1935/live/test" type="rtmp/mp4">
|
||||||
|
</video>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
<font size="2">Tareq Alqutami - 2019</font>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,30 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Live Streaming</title>
|
||||||
|
<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
|
||||||
|
<script src="https://unpkg.com/video.js/dist/video.js"></script>
|
||||||
|
<script src="https://unpkg.com/videojs-flash/dist/videojs-flash.min.js"></script>
|
||||||
|
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>RTMP Player</h1>
|
||||||
|
<video id="rtmp_video" class="video-js vjs-default-skin" controls preload="auto" width="720"
|
||||||
|
data-setup='{"techOrder": ["html5","flash"]}'>
|
||||||
|
<source src="rtmp://127.0.0.1:1935/live/test" type="rtmp/mp4">
|
||||||
|
</video>
|
||||||
|
|
||||||
|
<h1>HLS Player</h1>
|
||||||
|
<video id="hls_video" class="video-js vjs-default-skin" controls preload="auto" width="720"
|
||||||
|
data-setup='{"techOrder": ["html5","flash"]}'>
|
||||||
|
<source src="http://127.0.0.1:8080/hls/test.m3u8" type="application/x-mpegURL">
|
||||||
|
</video>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
<font size="2">Tareq Alqutami - 2019</font>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,19 @@
|
|||||||
|
#main
|
||||||
|
deb http://httpredir.debian.org/debian/ buster main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ buster main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ buster-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ buster-updates main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ buster-backports main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ buster-backports main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ buster-proposed-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ buster-proposed-updates main contrib non-free
|
||||||
|
|
||||||
|
#security
|
||||||
|
deb http://httpredir.debian.org/debian-security/ buster/updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian-security/ buster/updates main contrib non-free
|
||||||
|
|
||||||
|
##multimedia
|
||||||
|
#deb http://httpredir.debian.org/debian-multimedia/ buster main non-free
|
||||||
|
#deb-src http://httpredir.debian.org/debian-multimedia/ buster main non-free
|
||||||
|
#deb http://httpredir.debian.org/debian-multimedia/ buster-backports main
|
||||||
|
#deb-src http://httpredir.debian.org/debian-multimedia/ buster-backports main
|
@ -0,0 +1,19 @@
|
|||||||
|
#main
|
||||||
|
deb http://httpredir.debian.org/debian/ sid main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ sid main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ testing-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ testing-updates main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ testing-proposed-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ testing-proposed-updates main contrib non-free
|
||||||
|
|
||||||
|
#backports
|
||||||
|
#deb http://httpredir.debian.org/debian/ testing-backports main contrib non-free
|
||||||
|
#deb-src http://httpredir.debian.org/debian/ testing-backports main contrib non-free
|
||||||
|
|
||||||
|
#security
|
||||||
|
deb http://httpredir.debian.org/debian-security/ testing-security main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian-security/ testing-security main contrib non-free
|
||||||
|
|
||||||
|
##multimedia
|
||||||
|
#deb http://httpredir.debian.org/debian-multimedia/ sid main non-free
|
||||||
|
#deb-src http://httpredir.debian.org/debian-multimedia/ sid main non-free
|
@ -0,0 +1,19 @@
|
|||||||
|
#main
|
||||||
|
deb http://httpredir.debian.org/debian/ stretch main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ stretch main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ stretch-backports main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ stretch-backports main contrib non-free
|
||||||
|
deb http://httpredir.debian.org/debian/ stretch-proposed-updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian/ stretch-proposed-updates main contrib non-free
|
||||||
|
|
||||||
|
#security
|
||||||
|
deb http://httpredir.debian.org/debian-security/ stretch/updates main contrib non-free
|
||||||
|
deb-src http://httpredir.debian.org/debian-security/ stretch/updates main contrib non-free
|
||||||
|
|
||||||
|
##multimedia
|
||||||
|
#deb http://httpredir.debian.org/debian-multimedia/ stretch main non-free
|
||||||
|
#deb-src http://httpredir.debian.org/debian-multimedia/ stretch main non-free
|
||||||
|
#deb http://httpredir.debian.org/debian-multimedia/ stretch-backports main
|
||||||
|
#deb-src http://httpredir.debian.org/debian-multimedia/ stretch-backports main
|
1
linux/ecosystem/nginx/latest/quic/main/.env
Normal file
1
linux/ecosystem/nginx/latest/quic/main/.env
Normal file
@ -0,0 +1 @@
|
|||||||
|
NGINX_VERSION=quic
|
276
linux/ecosystem/nginx/latest/quic/main/Dockerfile
Normal file
276
linux/ecosystem/nginx/latest/quic/main/Dockerfile
Normal file
@ -0,0 +1,276 @@
|
|||||||
|
##################################################################
|
||||||
|
# Set Global ARG to build process
|
||||||
|
##################################################################
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Start build process
|
||||||
|
##################################################################
|
||||||
|
FROM epicmorg/debian:bullseye-develop AS builder
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# ARGuments
|
||||||
|
##################################################################
|
||||||
|
ENV BuildDocker true
|
||||||
|
ARG BUILDS_DIR=/builds
|
||||||
|
ARG SRC_DIR=${BUILDS_DIR}/src
|
||||||
|
ARG EXPORT_DIR=${BUILDS_DIR}/export
|
||||||
|
ARG PRE_DIR=${BUILDS_DIR}/pre
|
||||||
|
ARG NGINX_SRC_DIR=${SRC_DIR}/nginx
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
ARG NGINX_DOWNLOAD_URL
|
||||||
|
ARG LUAJIT_INC=/usr/local/include/luajit-2.1
|
||||||
|
ARG LUAJIT_LIB=/usr/local/lib
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Files and folders
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p ${PRE_DIR} ${NGINX_SRC_DIR} /usr/lib/nginx
|
||||||
|
ADD pre/luajit2-description-pak ${PRE_DIR}
|
||||||
|
ADD pre/nginx-description-pak ${PRE_DIR}
|
||||||
|
ADD pre/ip2location-description-pak ${PRE_DIR}
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# BoringSSL
|
||||||
|
##################################################################
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y git gcc make g++ cmake perl libunwind-dev golang && \
|
||||||
|
cd ${SRC_DIR} && \
|
||||||
|
git clone https://github.com/google/boringssl boringssl && \
|
||||||
|
mkdir boringssl/build && \
|
||||||
|
cd boringssl/build && \
|
||||||
|
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on .. && \
|
||||||
|
make
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# IP2Location support for prod nginx module
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${SRC_DIR} && \
|
||||||
|
git clone https://github.com/chrislim2888/IP2Location-C-Library.git ip2 && \
|
||||||
|
cp -fv ${PRE_DIR}/ip2location-description-pak ${SRC_DIR}/ip2/description-pak && \
|
||||||
|
cd ${SRC_DIR}/ip2 && \
|
||||||
|
ls -las && \
|
||||||
|
autoreconf -i -v --force && \
|
||||||
|
aclocal && \
|
||||||
|
automake --gnu --add-missing && \
|
||||||
|
autoconf && \
|
||||||
|
autoreconf -i -v --force && \
|
||||||
|
./configure && \
|
||||||
|
ls -las && \
|
||||||
|
make clean && \
|
||||||
|
make && \
|
||||||
|
make -C data convert && \
|
||||||
|
make check && \
|
||||||
|
ls -las && \
|
||||||
|
fakeroot checkinstall -D --pakdir=${EXPORT_DIR} --maintainer="EpicMorg, developer@epicm.org" --pkgname=ip2-custom --conflicts=ip2 --install=yes -y && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /usr/lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /usr/lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /usr/lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.1 /lib/x86_64-linux-gnu/libcrypto.so.1 && \
|
||||||
|
dpkg --force-all -i ${EXPORT_DIR}/*.deb
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# luaJIT 2 support for prod nginx module
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${SRC_DIR} && \
|
||||||
|
git clone https://github.com/openresty/luajit2.git luajit2 && \
|
||||||
|
cp -fv ${PRE_DIR}/luajit2-description-pak ${SRC_DIR}/luajit2/description-pak && \
|
||||||
|
cd ${SRC_DIR}/luajit2 && \
|
||||||
|
make && \
|
||||||
|
make install && \
|
||||||
|
fakeroot checkinstall -D --pakdir=${EXPORT_DIR} --maintainer="EpicMorg, developer@epicm.org" --pkgname=luajit2-custom --conflicts=luajit2 --install=no -y
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# nginx preparing
|
||||||
|
##################################################################
|
||||||
|
RUN hg clone -b quic https://hg.nginx.org/nginx-quic ${NGINX_SRC_DIR} && \
|
||||||
|
#wget -qO - ${NGINX_DOWNLOAD_URL} | tar -zxv --strip-components=1 -C ${NGINX_SRC_DIR} && \
|
||||||
|
cd ${NGINX_SRC_DIR} && \
|
||||||
|
git clone https://github.com/openresty/headers-more-nginx-module.git http-headers-more-filter && \
|
||||||
|
git clone https://github.com/sto/ngx_http_auth_pam_module.git http-auth-pam && \
|
||||||
|
git clone https://github.com/arut/nginx-dav-ext-module.git http-dav-ext && \
|
||||||
|
git clone https://github.com/openresty/echo-nginx-module.git http-echo && \
|
||||||
|
git clone https://github.com/aperezdc/ngx-fancyindex.git http-fancyindex && \
|
||||||
|
git clone https://github.com/slact/nchan.git nchan && \
|
||||||
|
git clone https://github.com/msva/nginx-upload-progress-module.git http-uploadprogress && \
|
||||||
|
# git clone https://github.com/masterzen/nginx-upload-progress-module.git http-uploadprogress && \
|
||||||
|
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module http-subs-filter && \
|
||||||
|
git clone https://github.com/grahamedgecombe/nginx-ct.git ssl-ct && \
|
||||||
|
# git clone https://github.com/stnoonan/spnego-http-auth-nginx-module.git spnego-http-auth-nginx-module && \
|
||||||
|
git clone https://github.com/leev/ngx_http_geoip2_module http-geoip2 && \
|
||||||
|
git clone https://github.com/flavioribeiro/nginx-audio-track-for-hls-module.git nginx-audio-track-for-hls-module && \
|
||||||
|
git clone https://github.com/chrislim2888/ip2location-nginx.git ip2location-nginx && \
|
||||||
|
git clone https://github.com/kaltura/nginx-vod-module.git nginx-vod-module && \
|
||||||
|
git clone https://github.com/vozlt/nginx-module-vts.git nginx-module-vts && \
|
||||||
|
git clone https://github.com/evanmiller/mod_zip.git mod-zip && \
|
||||||
|
git clone https://github.com/alibaba/nginx-http-user-agent.git nginx-http-user-agent && \
|
||||||
|
git clone https://github.com/youzee/nginx-unzip-module.git nginx-unzip-module && \
|
||||||
|
git clone https://github.com/vladbondarenko/ngx_webp.git ngx-webp && \
|
||||||
|
git clone https://github.com/openresty/xss-nginx-module.git xss-nginx-module && \
|
||||||
|
git clone https://github.com/openresty/set-misc-nginx-module.git set-misc-nginx-module && \
|
||||||
|
git clone https://github.com/arut/nginx-rtmp-module.git rtmp && \
|
||||||
|
git clone https://github.com/kvspb/nginx-auth-ldap.git http-auth-ldap && \
|
||||||
|
git clone https://github.com/simplresty/ngx_devel_kit.git http-ndk && \
|
||||||
|
git clone https://github.com/chrislim2888/IP2Location-C-Library.git ip2location-c-7.0.0 && \
|
||||||
|
git clone https://github.com/itoffshore/nginx-upstream-fair.git http-upstream-fair && \
|
||||||
|
git clone https://github.com/yaoweibin/nginx_upstream_check_module.git nginx-upstream-check-module && \
|
||||||
|
git clone https://github.com/openresty/lua-nginx-module http-lua && \
|
||||||
|
hg clone http://hg.nginx.org/njs njs
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# nginx compilling
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${NGINX_SRC_DIR} && \
|
||||||
|
./auto/configure \
|
||||||
|
--sbin-path=/usr/sbin/nginx \
|
||||||
|
--prefix=/usr/share/nginx \
|
||||||
|
--conf-path=/etc/nginx/nginx.conf \
|
||||||
|
--http-log-path=/var/log/nginx/access.log \
|
||||||
|
--error-log-path=/var/log/nginx/error.log \
|
||||||
|
--lock-path=/var/lock/nginx.lock \
|
||||||
|
--pid-path=/run/nginx.pid \
|
||||||
|
--modules-path=/usr/lib/nginx/modules \
|
||||||
|
--http-client-body-temp-path=/var/lib/nginx/body \
|
||||||
|
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
|
||||||
|
--http-proxy-temp-path=/var/lib/nginx/proxy \
|
||||||
|
--http-scgi-temp-path=/var/lib/nginx/scgi \
|
||||||
|
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
|
||||||
|
# --with-cc-opt='-I../boringssl/include -I/usr/local/include/luajit-2.1 -g -O2 -lz -fstack-protector-strong -Wformat -Wno-error -Wno-error=date-time -Wno-error=implicit-fallthrough -Wno-error=cast-function-type -Wno-error=format-security -Wno-error=implicit-function-declaration -Wno-error=deprecated-declarations -Wno-error=unused-result -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' \
|
||||||
|
--with-cc-opt='-I../boringssl/include -I/usr/local/include/luajit-2.1 -g -O2 -lz -fstack-protector-strong -fPIC -Wformat -Wno-error -Wdate-time -D_FORTIFY_SOURCE=2' \
|
||||||
|
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -lz -fPIC -L/usr/local/lib -L../boringssl/build/ssl -L../boringssl/build/crypto' \
|
||||||
|
--with-file-aio \
|
||||||
|
--with-compat \
|
||||||
|
--with-debug \
|
||||||
|
--with-threads \
|
||||||
|
--with-pcre-jit \
|
||||||
|
--with-http_ssl_module \
|
||||||
|
--with-http_stub_status_module \
|
||||||
|
--with-http_realip_module \
|
||||||
|
--with-http_auth_request_module \
|
||||||
|
--with-http_v2_module \
|
||||||
|
--with-http_v3_module \
|
||||||
|
--with-stream_quic_module \
|
||||||
|
--with-http_dav_module \
|
||||||
|
--with-http_slice_module \
|
||||||
|
--with-http_addition_module \
|
||||||
|
--with-http_flv_module \
|
||||||
|
--with-http_geoip_module=dynamic \
|
||||||
|
--with-http_gunzip_module \
|
||||||
|
--with-http_gzip_static_module \
|
||||||
|
--with-http_image_filter_module=dynamic \
|
||||||
|
--with-http_mp4_module \
|
||||||
|
--with-http_perl_module=dynamic \
|
||||||
|
--with-http_random_index_module \
|
||||||
|
--with-http_secure_link_module \
|
||||||
|
--with-http_sub_module \
|
||||||
|
--with-http_xslt_module=dynamic \
|
||||||
|
--with-mail=dynamic \
|
||||||
|
--with-mail_ssl_module \
|
||||||
|
--with-stream=dynamic \
|
||||||
|
--with-stream_ssl_module \
|
||||||
|
--with-stream_ssl_preread_module \
|
||||||
|
--add-dynamic-module=http-headers-more-filter \
|
||||||
|
--add-dynamic-module=http-auth-pam \
|
||||||
|
--add-dynamic-module=http-dav-ext \
|
||||||
|
--add-dynamic-module=http-ndk \
|
||||||
|
--add-dynamic-module=http-echo \
|
||||||
|
--add-dynamic-module=http-fancyindex \
|
||||||
|
--add-dynamic-module=nchan \
|
||||||
|
--add-dynamic-module=http-uploadprogress \
|
||||||
|
--add-dynamic-module=http-subs-filter \
|
||||||
|
--add-dynamic-module=ssl-ct \
|
||||||
|
--add-dynamic-module=http-geoip2 \
|
||||||
|
# --add-dynamic-module=spnego-http-auth-nginx-module \
|
||||||
|
--add-dynamic-module=http-auth-ldap \
|
||||||
|
# --add-dynamic-module=nginx-audio-track-for-hls-module \
|
||||||
|
--add-dynamic-module=ip2location-nginx \
|
||||||
|
--add-dynamic-module=nginx-vod-module \
|
||||||
|
# --add-dynamic-module=nginx-module-vts \
|
||||||
|
--add-dynamic-module=mod-zip \
|
||||||
|
--add-dynamic-module=nginx-http-user-agent \
|
||||||
|
--add-dynamic-module=nginx-unzip-module \
|
||||||
|
--add-dynamic-module=ngx-webp \
|
||||||
|
--add-dynamic-module=set-misc-nginx-module \
|
||||||
|
--add-dynamic-module=rtmp \
|
||||||
|
--add-dynamic-module=http-upstream-fair \
|
||||||
|
--add-dynamic-module=njs/nginx \
|
||||||
|
--add-dynamic-module=nginx-upstream-check-module \
|
||||||
|
--add-dynamic-module=http-lua && \
|
||||||
|
cp -fv ${PRE_DIR}/nginx-description-pak ${NGINX_SRC_DIR}/description-pak && \
|
||||||
|
fakeroot checkinstall -D --pakdir=/builds/export --maintainer="EpicMorg, developer@epicm.org" --pkgname=nginx-custom --install=no -y && \
|
||||||
|
apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
FROM epicmorg/debian:bullseye
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# LDAP Fix
|
||||||
|
##################################################################
|
||||||
|
RUN echo "TLS_REQCERT never" >> /etc/ldap/ldap.conf
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing nginx from deb
|
||||||
|
##################################################################
|
||||||
|
ADD pre/ngninx.pre.tar.gz /
|
||||||
|
COPY --from=builder /builds/export /tmp/deb
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
geoip-database \
|
||||||
|
geoip-bin \
|
||||||
|
libgeoip1 \
|
||||||
|
libmaxminddb0 \
|
||||||
|
libgd3 \
|
||||||
|
libxslt1.1 && \
|
||||||
|
dpkg --force-all -i /tmp/deb/*.deb && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /usr/lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /usr/lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /usr/lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.3 /usr/lib/libIP2Location.so.3 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.4 /usr/lib/libIP2Location.so.4 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.5 /usr/lib/libIP2Location.so.5 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so /lib/libIP2Location.so && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.1 /lib/libIP2Location.so.1 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.2 /lib/libIP2Location.so.2 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.3 /lib/libIP2Location.so.3 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.4 /lib/libIP2Location.so.4 && \
|
||||||
|
ln -s /usr/local/lib/libIP2Location.so.5 /lib/libIP2Location.so.5 && \
|
||||||
|
ln -sf /dev/stdout /var/log/nginx/access.log && \
|
||||||
|
ln -sf /dev/stderr /var/log/nginx/error.log && \
|
||||||
|
ln -sf /etc/ssl/dhparam.pem /etc/nginx/dhparam.pem && \
|
||||||
|
apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
rm -rf /var/cache/apt/archives/*.deb && \
|
||||||
|
rm -rf /tmp/deb/* && \
|
||||||
|
rm -rf /builds/* && \
|
||||||
|
rm -rf /valve/*
|
||||||
|
|
||||||
|
#healthcheck. good practice
|
||||||
|
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
VOLUME ["/var/cache/nginx"]
|
||||||
|
EXPOSE 80 443
|
||||||
|
|
||||||
|
RUN nginx -V > /dev/stderr
|
||||||
|
|
||||||
|
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||||
|
CMD ["docker-entrypoint.sh"]
|
29
linux/ecosystem/nginx/latest/quic/main/Dockerfile.test
Normal file
29
linux/ecosystem/nginx/latest/quic/main/Dockerfile.test
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
FROM nginx AS build
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y git gcc make g++ cmake perl libunwind-dev golang && \
|
||||||
|
git clone https://github.com/google/boringssl boringssl && \
|
||||||
|
mkdir boringssl/build && \
|
||||||
|
cd boringssl/build && \
|
||||||
|
cmake .. && \
|
||||||
|
make
|
||||||
|
|
||||||
|
RUN apt-get install -y mercurial libperl-dev libpcre3-dev zlib1g-dev libxslt1-dev libgd-ocaml-dev libgeoip-dev
|
||||||
|
RUN hg clone -b quic https://hg.nginx.org/nginx-quic && \
|
||||||
|
hg clone http://hg.nginx.org/njs && \
|
||||||
|
cd nginx-quic && \
|
||||||
|
hg update quic && \
|
||||||
|
hg update -C quic && \
|
||||||
|
hg branch && \
|
||||||
|
ls -las && \
|
||||||
|
auto/configure --with-debug --with-http_v3_module --with-stream_quic_module \
|
||||||
|
--with-cc-opt="-I../boringssl/include" \
|
||||||
|
--with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto" && \
|
||||||
|
make
|
||||||
|
|
||||||
|
|
||||||
|
FROM nginx
|
||||||
|
COPY --from=build /src/nginx-quic/objs/nginx /usr/sbin
|
||||||
|
RUN /usr/sbin/nginx -V > /dev/stderr
|
||||||
|
EXPOSE 80 443
|
19
linux/ecosystem/nginx/latest/quic/main/Makefile
Normal file
19
linux/ecosystem/nginx/latest/quic/main/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
291
linux/ecosystem/nginx/latest/quic/main/README.md
Normal file
291
linux/ecosystem/nginx/latest/quic/main/README.md
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
# nginx quic
|
||||||
|
|
||||||
|
Experimental QUIC support for nginx
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
2. Installing
|
||||||
|
3. Configuration
|
||||||
|
4. Clients
|
||||||
|
5. Troubleshooting
|
||||||
|
6. Contributing
|
||||||
|
7. Links
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
This is an experimental QUIC [1] / HTTP/3 [2] support for nginx.
|
||||||
|
|
||||||
|
The code is developed in a separate "quic" branch available
|
||||||
|
at https://hg.nginx.org/nginx-quic. Currently it is based
|
||||||
|
on nginx mainline 1.21.x. We merge new nginx releases into
|
||||||
|
this branch regularly.
|
||||||
|
|
||||||
|
The project code base is under the same BSD license as nginx.
|
||||||
|
|
||||||
|
The code is currently at a beta level of quality and should not
|
||||||
|
be used in production.
|
||||||
|
|
||||||
|
We are working on improving HTTP/3 support with the goal of
|
||||||
|
integrating it to the main NGINX codebase. Expect frequent
|
||||||
|
updates of this code and don't rely on it for whatever purpose.
|
||||||
|
|
||||||
|
We'll be grateful for any feedback and code submissions however
|
||||||
|
we don't bear any responsibilities for any issues with this code.
|
||||||
|
|
||||||
|
You can always contact us via nginx-devel mailing list [3].
|
||||||
|
|
||||||
|
What works now:
|
||||||
|
|
||||||
|
Currently we support IETF-QUIC draft-29 through final RFC documents.
|
||||||
|
Earlier drafts are NOT supported as they have incompatible wire format.
|
||||||
|
|
||||||
|
nginx should be able to respond to HTTP/3 requests over QUIC and
|
||||||
|
it should be possible to upload and download big files without errors.
|
||||||
|
|
||||||
|
+ The handshake completes successfully
|
||||||
|
+ One endpoint can update keys and its peer responds correctly
|
||||||
|
+ 0-RTT data is being received and acted on
|
||||||
|
+ Connection is established using TLS Resume Ticket
|
||||||
|
+ A handshake that includes a Retry packet completes successfully
|
||||||
|
+ Stream data is being exchanged and ACK'ed
|
||||||
|
+ An H3 transaction succeeded
|
||||||
|
+ One or both endpoints insert entries into dynamic table and
|
||||||
|
subsequently reference them from header blocks
|
||||||
|
+ Version Negotiation packet is sent to client with unknown version
|
||||||
|
+ Lost packets are detected and retransmitted properly
|
||||||
|
+ Clients may migrate to new address
|
||||||
|
|
||||||
|
Not (yet) supported features:
|
||||||
|
|
||||||
|
- Explicit Congestion Notification (ECN) as specified in quic-recovery [5]
|
||||||
|
- A connection with the spin bit succeeds and the bit is spinning
|
||||||
|
- Structured Logging
|
||||||
|
|
||||||
|
Since the code is experimental and still under development,
|
||||||
|
a lot of things may not work as expected, for example:
|
||||||
|
|
||||||
|
- Flow control mechanism is basic and intended to avoid CPU hog and make
|
||||||
|
simple interactions possible
|
||||||
|
|
||||||
|
- Not all protocol requirements are strictly followed; some of checks are
|
||||||
|
omitted for the sake of simplicity of initial implementation
|
||||||
|
|
||||||
|
2. Installing
|
||||||
|
|
||||||
|
You will need a BoringSSL [4] library that provides QUIC support
|
||||||
|
|
||||||
|
$ hg clone -b quic https://hg.nginx.org/nginx-quic
|
||||||
|
$ cd nginx-quic
|
||||||
|
$ ./auto/configure --with-debug --with-http_v3_module \
|
||||||
|
--with-cc-opt="-I../boringssl/include" \
|
||||||
|
--with-ld-opt="-L../boringssl/build/ssl \
|
||||||
|
-L../boringssl/build/crypto"
|
||||||
|
$ make
|
||||||
|
|
||||||
|
When configuring nginx, you can enable QUIC and HTTP/3 using the
|
||||||
|
following new configuration options:
|
||||||
|
|
||||||
|
--with-http_v3_module - enable QUIC and HTTP/3
|
||||||
|
--with-http_quic_module - enable QUIC for older HTTP versions
|
||||||
|
--with-stream_quic_module - enable QUIC in Stream
|
||||||
|
|
||||||
|
3. Configuration
|
||||||
|
|
||||||
|
The HTTP "listen" directive got two new options: "http3" and "quic".
|
||||||
|
The "http3" option enables HTTP/3 over QUIC on the specified port.
|
||||||
|
The "quic" option enables QUIC for older HTTP versions on this port.
|
||||||
|
|
||||||
|
The Stream "listen" directive got a new option "quic" which enables
|
||||||
|
QUIC as client transport protocol instead of TCP or plain UDP.
|
||||||
|
|
||||||
|
Along with "http3" or "quic", you also have to specify "reuseport"
|
||||||
|
option [6] to make it work properly with multiple workers.
|
||||||
|
|
||||||
|
A number of directives were added that specify transport parameter values:
|
||||||
|
|
||||||
|
quic_max_idle_timeout
|
||||||
|
quic_max_ack_delay
|
||||||
|
quic_max_udp_payload_size
|
||||||
|
quic_initial_max_data
|
||||||
|
quic_initial_max_stream_data_bidi_local
|
||||||
|
quic_initial_max_stream_data_bidi_remote
|
||||||
|
quic_initial_max_stream_data_uni
|
||||||
|
quic_initial_max_streams_bidi
|
||||||
|
quic_initial_max_streams_uni
|
||||||
|
quic_ack_delay_exponent
|
||||||
|
quic_disable_active_migration
|
||||||
|
quic_active_connection_id_limit
|
||||||
|
|
||||||
|
To enable address validation:
|
||||||
|
|
||||||
|
quic_retry on;
|
||||||
|
|
||||||
|
To enable 0-RTT:
|
||||||
|
|
||||||
|
ssl_early_data on;
|
||||||
|
|
||||||
|
Make sure that TLS 1.3 is configured which is required for QUIC:
|
||||||
|
|
||||||
|
ssl_protocols TLSv1.3;
|
||||||
|
|
||||||
|
To enable GSO (Generic Segmentation Offloading):
|
||||||
|
|
||||||
|
quic_gso on;
|
||||||
|
|
||||||
|
By default this Linux-specific optimization [8] is disabled.
|
||||||
|
Enable if your network interface is configured to support GSO.
|
||||||
|
|
||||||
|
A number of directives were added that configure HTTP/3:
|
||||||
|
|
||||||
|
http3_max_table_capacity
|
||||||
|
http3_max_blocked_streams
|
||||||
|
http3_max_concurrent_pushes
|
||||||
|
http3_push
|
||||||
|
http3_push_preload
|
||||||
|
|
||||||
|
An additional variable is available: $quic.
|
||||||
|
The value of $quic is "quic" if QUIC connection is used,
|
||||||
|
or an empty string otherwise.
|
||||||
|
|
||||||
|
Example configuration:
|
||||||
|
|
||||||
|
http {
|
||||||
|
log_format quic '$remote_addr - $remote_user [$time_local] '
|
||||||
|
'"$request" $status $body_bytes_sent '
|
||||||
|
'"$http_referer" "$http_user_agent" "$quic"';
|
||||||
|
|
||||||
|
access_log logs/access.log quic;
|
||||||
|
|
||||||
|
server {
|
||||||
|
# for better compatibility it's recommended
|
||||||
|
# to use the same port for quic and https
|
||||||
|
listen 8443 http3 reuseport;
|
||||||
|
listen 8443 ssl;
|
||||||
|
|
||||||
|
ssl_certificate certs/example.com.crt;
|
||||||
|
ssl_certificate_key certs/example.com.key;
|
||||||
|
ssl_protocols TLSv1.3;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
# required for browsers to direct them into quic port
|
||||||
|
add_header Alt-Svc 'h3=":8443"; ma=86400';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
4. Clients
|
||||||
|
|
||||||
|
* Browsers
|
||||||
|
|
||||||
|
Known to work: Firefox 80+ and Chrome 85+ (QUIC draft 29+)
|
||||||
|
|
||||||
|
Beware of strange issues: sometimes browser may decide to ignore QUIC
|
||||||
|
Cache clearing/restart might help. Always check access.log and
|
||||||
|
error.log to make sure you are using HTTP/3 and not TCP https.
|
||||||
|
|
||||||
|
+ to enable QUIC in Firefox, set the following in 'about:config':
|
||||||
|
network.http.http3.enabled = true
|
||||||
|
|
||||||
|
+ to enable QUIC in Chrome, enable it on command line and force it
|
||||||
|
on your site:
|
||||||
|
|
||||||
|
$ ./chrome --enable-quic --quic-version=h3-29 \
|
||||||
|
--origin-to-force-quic-on=example.com:8443
|
||||||
|
|
||||||
|
* Console clients
|
||||||
|
|
||||||
|
Known to work: ngtcp2, firefox's neqo and chromium's console clients:
|
||||||
|
|
||||||
|
$ examples/client 127.0.0.1 8443 https://example.com:8443/index.html
|
||||||
|
|
||||||
|
$ ./neqo-client https://127.0.0.1:8443/
|
||||||
|
|
||||||
|
$ chromium-build/out/my_build/quic_client http://example.com:8443 \
|
||||||
|
--quic_version=h3-29 \
|
||||||
|
--allow_unknown_root_cert \
|
||||||
|
--disable_certificate_verification
|
||||||
|
|
||||||
|
|
||||||
|
If you've got it right, in the access log you should see something like:
|
||||||
|
|
||||||
|
127.0.0.1 - - [24/Apr/2020:11:27:29 +0300] "GET / HTTP/3" 200 805 "-"
|
||||||
|
"nghttp3/ngtcp2 client" "quic"
|
||||||
|
|
||||||
|
|
||||||
|
5. Troubleshooting
|
||||||
|
|
||||||
|
Here are some tips that may help you to identify problems:
|
||||||
|
|
||||||
|
+ Ensure you are building with proper SSL library that supports QUIC
|
||||||
|
|
||||||
|
+ Ensure you are using the proper SSL library in runtime
|
||||||
|
(`nginx -V` will show you what you are using)
|
||||||
|
|
||||||
|
+ Ensure your client is actually sending QUIC requests
|
||||||
|
(see "Clients" section about browsers and cache)
|
||||||
|
|
||||||
|
We recommend to start with simple console client like ngtcp2
|
||||||
|
to ensure you've got server configured properly before trying
|
||||||
|
with real browsers that may be very picky with certificates,
|
||||||
|
for example.
|
||||||
|
|
||||||
|
+ Build nginx with debug support [7] and check your debug log.
|
||||||
|
It should contain all details about connection and why it
|
||||||
|
failed. All related messages contain "quic " prefix and can
|
||||||
|
be easily filtered out.
|
||||||
|
|
||||||
|
+ If you want to investigate deeper, you may want to enable
|
||||||
|
additional debugging in src/event/quic/ngx_event_quic_connection.h:
|
||||||
|
|
||||||
|
#define NGX_QUIC_DEBUG_PACKETS
|
||||||
|
#define NGX_QUIC_DEBUG_FRAMES
|
||||||
|
#define NGX_QUIC_DEBUG_ALLOC
|
||||||
|
#define NGX_QUIC_DEBUG_CRYPTO
|
||||||
|
|
||||||
|
6. Contributing
|
||||||
|
|
||||||
|
If you are willing to contribute, please refer to
|
||||||
|
http://nginx.org/en/docs/contributing_changes.html
|
||||||
|
|
||||||
|
7. Links
|
||||||
|
|
||||||
|
[1] https://datatracker.ietf.org/doc/html/rfc9000
|
||||||
|
[2] https://datatracker.ietf.org/doc/html/draft-ietf-quic-http
|
||||||
|
[3] https://mailman.nginx.org/mailman/listinfo/nginx-devel
|
||||||
|
[4] https://boringssl.googlesource.com/boringssl/
|
||||||
|
[5] https://datatracker.ietf.org/doc/html/rfc9002
|
||||||
|
[6] https://nginx.org/en/docs/http/ngx_http_core_module.html#listen
|
||||||
|
[7] https://nginx.org/en/docs/debugging_log.html
|
||||||
|
[8] http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-1.pdf
|
||||||
|
|
||||||
|
|
||||||
|
# Compose example
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
balancer:
|
||||||
|
image: epicmorg/balancer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:80:80"
|
||||||
|
- "0.0.0.0:443:443"
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime
|
||||||
|
- /etc/timezone:/etc/timezone
|
||||||
|
- /etc/letsencrypt:/etc/letsencrypt
|
||||||
|
- nginx:/etc/nginx
|
||||||
|
- nginx-usr:/usr/share/nginx/html
|
||||||
|
- /var/lib/nginx
|
||||||
|
# extra_hosts:
|
||||||
|
# - "example.com:192.168.0.11"
|
||||||
|
depends_on:
|
||||||
|
- websites
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
volumes:
|
||||||
|
nginx:
|
||||||
|
external: true
|
||||||
|
nginx-usr:
|
||||||
|
external: true
|
||||||
|
```
|
@ -0,0 +1,9 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/nginx:${NGINX_VERSION}"
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
NGINX_VERSION: ${NGINX_VERSION}
|
||||||
|
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
16
linux/ecosystem/nginx/latest/quic/main/docker-entrypoint.sh
Executable file
16
linux/ecosystem/nginx/latest/quic/main/docker-entrypoint.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||||
|
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||||
|
chown www-data:www-data /var/www -R
|
||||||
|
echo "[nginx] Done"
|
||||||
|
else
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[nginx] Starting up"
|
||||||
|
nginx -g 'daemon off;'
|
@ -0,0 +1 @@
|
|||||||
|
Custom build of ip2location lib by EpicMorg.
|
@ -0,0 +1 @@
|
|||||||
|
Custom build of luajit2 for Nginx module, by EpicMorg.
|
@ -0,0 +1 @@
|
|||||||
|
Custom build of Nginx with some modules by EpicMorg.
|
BIN
linux/ecosystem/nginx/latest/quic/main/pre/ngninx.pre.tar.gz
Normal file
BIN
linux/ecosystem/nginx/latest/quic/main/pre/ngninx.pre.tar.gz
Normal file
Binary file not shown.
1
linux/ecosystem/nginx/latest/quic/php/.env
Normal file
1
linux/ecosystem/nginx/latest/quic/php/.env
Normal file
@ -0,0 +1 @@
|
|||||||
|
NGINX_VERSION=quic
|
263
linux/ecosystem/nginx/latest/quic/php/Dockerfile
Normal file
263
linux/ecosystem/nginx/latest/quic/php/Dockerfile
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
##################################################################
|
||||||
|
# Set Global ARG to build process
|
||||||
|
##################################################################
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Start build process
|
||||||
|
##################################################################
|
||||||
|
FROM epicmorg/debian:bullseye-develop AS builder
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# ARGuments
|
||||||
|
##################################################################
|
||||||
|
ENV BuildDocker true
|
||||||
|
|
||||||
|
ARG BUILDS_DIR=/builds
|
||||||
|
ARG SRC_DIR=${BUILDS_DIR}/src
|
||||||
|
ARG EXPORT_DIR=${BUILDS_DIR}/export
|
||||||
|
ARG P4API_DIR=${SRC_DIR}/p4api
|
||||||
|
ARG P4PHP_DIR=${SRC_DIR}/p4php
|
||||||
|
ARG MAKE_DIR=${SRC_DIR}/p4php-7.4
|
||||||
|
|
||||||
|
ARG P4API_VER=r20.1
|
||||||
|
ARG P4API_URL=http://filehost.perforce.com/perforce/${P4API_VER}/bin.linux26x86_64/p4api.tgz
|
||||||
|
|
||||||
|
ARG P4PHP_VER=r20.1
|
||||||
|
ARG P4PHP_URL=http://filehost.perforce.com/perforce/${P4PHP_VER}/bin.tools/p4php-php7.tgz
|
||||||
|
|
||||||
|
ARG PHP_MODULE_PATH=/usr/lib/php/20190902
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Files and folders
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p ${BUILDS_DIR} ${SRC_DIR} ${EXPORT_DIR} ${MAKE_DIR} ${P4API_DIR} ${P4PHP_DIR}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing PHP7
|
||||||
|
##################################################################
|
||||||
|
#installing php repo
|
||||||
|
|
||||||
|
#Install base packages
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libmemcached-dev \
|
||||||
|
smbclient libsmbclient libsmbclient-dev \
|
||||||
|
php7.4 \
|
||||||
|
php7.4-dev \
|
||||||
|
php7.4-fpm \
|
||||||
|
php7.4-cli \
|
||||||
|
php7.4-cgi
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# preparing p4src
|
||||||
|
##################################################################
|
||||||
|
RUN wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${P4API_DIR} && \
|
||||||
|
wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \
|
||||||
|
wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${P4PHP_DIR} && \
|
||||||
|
wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \
|
||||||
|
cd ${P4API_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
cd ${P4PHP_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
cd ${MAKE_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
cd ${SRC_DIR} && \
|
||||||
|
ls -las
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# compilling p4src
|
||||||
|
##################################################################
|
||||||
|
RUN cd ${MAKE_DIR} && \
|
||||||
|
ls -las && \
|
||||||
|
phpize && \
|
||||||
|
./configure --with-perforce=${P4API_DIR} && \
|
||||||
|
make && \
|
||||||
|
make test && \
|
||||||
|
make install && \
|
||||||
|
cp ${PHP_MODULE_PATH}/perforce.so ${EXPORT_DIR}
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# compilling smbclient
|
||||||
|
##################################################################
|
||||||
|
RUN pecl install smbclient && \
|
||||||
|
cp ${PHP_MODULE_PATH}/smbclient.so ${EXPORT_DIR}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
##################################################################
|
||||||
|
|
||||||
|
FROM epicmorg/nginx:${NGINX_VERSION}
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing php fpm for nginx from deb
|
||||||
|
##################################################################
|
||||||
|
ARG PHP_MODULE_PATH=/usr/lib/php/20190902
|
||||||
|
ARG PHP_VER=7.4
|
||||||
|
ARG PHP_DIR=/etc/php/${PHP_VER}
|
||||||
|
ARG P4_PHP_INI=${PHP_DIR}/mods-available/perfroce.ini
|
||||||
|
ARG SMB_PHP_INI=${PHP_DIR}/mods-available/smbclient.ini
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing PHP7
|
||||||
|
##################################################################
|
||||||
|
#Install base packages
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
php7.4 \
|
||||||
|
php7.4-dev \
|
||||||
|
php7.4-fpm \
|
||||||
|
php7.4-cli \
|
||||||
|
php7.4-cgi \
|
||||||
|
php-pear \
|
||||||
|
php7.4-gmp \
|
||||||
|
php7.4-snmp \
|
||||||
|
php7.4-ldap \
|
||||||
|
php7.4-mail \
|
||||||
|
php7.4-soap \
|
||||||
|
php7.4-mysql \
|
||||||
|
php7.4-memcached \
|
||||||
|
php7.4-memcache \
|
||||||
|
php7.4-igbinary \
|
||||||
|
php7.4-interbase \
|
||||||
|
php7.4-curl \
|
||||||
|
php7.4-gd \
|
||||||
|
php7.4-intl \
|
||||||
|
php7.4-zip \
|
||||||
|
php7.4-bcmath \
|
||||||
|
php7.4-imap \
|
||||||
|
php7.4-pspell \
|
||||||
|
php7.4-sqlite3 \
|
||||||
|
php7.4-tidy \
|
||||||
|
php7.4-xmlrpc \
|
||||||
|
php7.4-xml \
|
||||||
|
php7.4-mbstring \
|
||||||
|
php7.4-apcu \
|
||||||
|
php7.4-common \
|
||||||
|
php7.4-json \
|
||||||
|
php7.4-readline \
|
||||||
|
php7.4-enchant \
|
||||||
|
php7.4-ssh2 \
|
||||||
|
php7.4-oauth \
|
||||||
|
php7.4-gmagick \
|
||||||
|
php7.4-gnupg \
|
||||||
|
php7.4-redis \
|
||||||
|
smbclient libsmbclient \
|
||||||
|
# php-smbclient \
|
||||||
|
php7.4-yaml \
|
||||||
|
php7.4-geoip \
|
||||||
|
sendmail && \
|
||||||
|
update-alternatives --set php /usr/bin/php7.4 && \
|
||||||
|
phpenmod \
|
||||||
|
snmp \
|
||||||
|
gmp \
|
||||||
|
calendar \
|
||||||
|
ldap \
|
||||||
|
curl \
|
||||||
|
exif \
|
||||||
|
ftp \
|
||||||
|
fileinfo \
|
||||||
|
gd \
|
||||||
|
geoip \
|
||||||
|
gnupg \
|
||||||
|
iconv \
|
||||||
|
imap \
|
||||||
|
json \
|
||||||
|
mbstring \
|
||||||
|
memcached \
|
||||||
|
mysqli \
|
||||||
|
mysqlnd \
|
||||||
|
oauth \
|
||||||
|
pdo_mysql \
|
||||||
|
pdo_sqlite \
|
||||||
|
phar \
|
||||||
|
posix \
|
||||||
|
readline \
|
||||||
|
redis \
|
||||||
|
simplexml \
|
||||||
|
sockets \
|
||||||
|
sqlite3 \
|
||||||
|
ssh2 \
|
||||||
|
tokenizer \
|
||||||
|
xml \
|
||||||
|
xmlreader \
|
||||||
|
xmlrpc \
|
||||||
|
xmlwriter \
|
||||||
|
xsl \
|
||||||
|
yaml && \
|
||||||
|
ln -sf /etc/ssl/dhparam.pem /etc/php/dhparam.pem && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing IOnCube addon
|
||||||
|
##################################################################
|
||||||
|
ADD https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz /tmp/ioncube.tar.gz
|
||||||
|
RUN tar -C /tmp -xvf /tmp/ioncube.tar.gz && \
|
||||||
|
cp /tmp/ioncube/ioncube_loader_lin_7.4.so ${PHP_MODULE_PATH} && \
|
||||||
|
# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/apache2/php.ini && \
|
||||||
|
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cgi/php.ini && \
|
||||||
|
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cli/php.ini && \
|
||||||
|
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/fpm/php.ini && \
|
||||||
|
php -m && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing P4 addon
|
||||||
|
##################################################################
|
||||||
|
COPY --from=builder /builds/export/perforce.so ${PHP_MODULE_PATH}
|
||||||
|
RUN echo "extension=perforce.so" > ${P4_PHP_INI} && \
|
||||||
|
ln -sf ${P4_PHP_INI} ${PHP_DIR}/cgi/conf.d/perforce.ini && \
|
||||||
|
ln -sf ${P4_PHP_INI} ${PHP_DIR}/cli/conf.d/perforce.ini && \
|
||||||
|
ln -sf ${P4_PHP_INI} ${PHP_DIR}/fpm/conf.d/perforce.ini && \
|
||||||
|
php -m && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing smbclient addon
|
||||||
|
##################################################################
|
||||||
|
COPY --from=builder /builds/export/smbclient.so ${PHP_MODULE_PATH}
|
||||||
|
RUN echo "extension=smbclient.so" > ${SMB_PHP_INI} && \
|
||||||
|
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cgi/conf.d/smbclient.ini && \
|
||||||
|
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cli/conf.d/smbclient.ini && \
|
||||||
|
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/fpm/conf.d/smbclient.ini && \
|
||||||
|
php -m && \
|
||||||
|
php -v
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Installing Composer addon
|
||||||
|
##################################################################
|
||||||
|
RUN cd /tmp && \
|
||||||
|
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
|
||||||
|
php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
|
||||||
|
rm /tmp/composer-setup.php
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleaninig up
|
||||||
|
##################################################################
|
||||||
|
RUN apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb && \
|
||||||
|
rm -rfv /tmp/deb/* && \
|
||||||
|
rm -rfv /tmp/ioncube/* && \
|
||||||
|
rm -rfv /tmp/composer-setup.php && \
|
||||||
|
rm -rfv /tmp/ioncube.tar.gz
|
||||||
|
|
||||||
|
#healthcheck. good practice
|
||||||
|
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
VOLUME ["/var/cache/nginx"]
|
||||||
|
EXPOSE 80 443
|
||||||
|
|
||||||
|
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||||
|
CMD ["docker-entrypoint.sh"]
|
19
linux/ecosystem/nginx/latest/quic/php/Makefile
Normal file
19
linux/ecosystem/nginx/latest/quic/php/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
30
linux/ecosystem/nginx/latest/quic/php/README.md
Normal file
30
linux/ecosystem/nginx/latest/quic/php/README.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Compose example
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
balancer:
|
||||||
|
image: epicmorg/balancer
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:80:80"
|
||||||
|
- "0.0.0.0:443:443"
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime
|
||||||
|
- /etc/timezone:/etc/timezone
|
||||||
|
- /etc/letsencrypt:/etc/letsencrypt
|
||||||
|
- nginx:/etc/nginx
|
||||||
|
- nginx-usr:/usr/share/nginx/html
|
||||||
|
- /var/lib/nginx
|
||||||
|
# extra_hosts:
|
||||||
|
# - "example.com:192.168.0.11"
|
||||||
|
depends_on:
|
||||||
|
- websites
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
volumes:
|
||||||
|
nginx:
|
||||||
|
external: true
|
||||||
|
nginx-usr:
|
||||||
|
external: true
|
||||||
|
```
|
9
linux/ecosystem/nginx/latest/quic/php/docker-compose.yml
Normal file
9
linux/ecosystem/nginx/latest/quic/php/docker-compose.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/nginx:${NGINX_VERSION}-php"
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
NGINX_VERSION: ${NGINX_VERSION}
|
||||||
|
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
16
linux/ecosystem/nginx/latest/quic/php/docker-entrypoint.sh
Executable file
16
linux/ecosystem/nginx/latest/quic/php/docker-entrypoint.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||||
|
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||||
|
chown www-data:www-data /var/www -R
|
||||||
|
echo "[nginx] Done"
|
||||||
|
else
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[nginx] Starting up"
|
||||||
|
nginx -g 'daemon off;'
|
1
linux/ecosystem/nginx/latest/quic/rtmp-hls/.env
Normal file
1
linux/ecosystem/nginx/latest/quic/rtmp-hls/.env
Normal file
@ -0,0 +1 @@
|
|||||||
|
NGINX_VERSION=quic
|
131
linux/ecosystem/nginx/latest/quic/rtmp-hls/Dockerfile
Normal file
131
linux/ecosystem/nginx/latest/quic/rtmp-hls/Dockerfile
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
##################################################################
|
||||||
|
# Set Global ARG to build process
|
||||||
|
##################################################################
|
||||||
|
ARG NGINX_VERSION
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Start build process
|
||||||
|
##################################################################
|
||||||
|
FROM epicmorg/nginx:${NGINX_VERSION}
|
||||||
|
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ARG NGINX_RTMP_MODULE_VERSION=1.2.1
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Clear sources.list.d
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list.d/*
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# sid sources list
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.sid.list /etc/apt/sources.list
|
||||||
|
RUN apt update
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing utils
|
||||||
|
##################################################################
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libpcre3-dev \
|
||||||
|
librtmp1 \
|
||||||
|
libtheora0 \
|
||||||
|
libvorbis-dev \
|
||||||
|
libmp3lame0 \
|
||||||
|
libx264-dev \
|
||||||
|
libx265-dev
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# stretch sources list + libvpx
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.stretch.list /etc/apt/sources.list
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libvpx4
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# buster sources list + libvpx
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.buster.list /etc/apt/sources.list
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libvpx5
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# sid sources list + libvpx
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/apt/sources.list
|
||||||
|
COPY sources.list.d/sources.sid.list /etc/apt/sources.list
|
||||||
|
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --allow-unauthenticated \
|
||||||
|
libvpx6
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# installing deps for rtmp module
|
||||||
|
##################################################################
|
||||||
|
RUN mkdir -p /usr/share/nginx/html \
|
||||||
|
/mnt/hls \
|
||||||
|
/mnt/dash \
|
||||||
|
/tmp/build && \
|
||||||
|
chown -R www-data:www-data /mnt/hls && \
|
||||||
|
chown -R www-data:www-data /mnt/dash && \
|
||||||
|
chmod -R 755 /mnt/hls && \
|
||||||
|
chmod -R 755 /mnt/dash && \
|
||||||
|
cd /tmp/build && \
|
||||||
|
wget https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \
|
||||||
|
tar -zxf v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \
|
||||||
|
rm v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \
|
||||||
|
cp /tmp/build/nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}/stat.xsl /usr/share/nginx/html/stat.xsl && \
|
||||||
|
rm -rf /tmp/build
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Forward logs to Docker
|
||||||
|
##################################################################
|
||||||
|
RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
|
||||||
|
ln -sf /dev/stderr /var/log/nginx/error.log
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Copy nginx config file to container
|
||||||
|
##################################################################
|
||||||
|
RUN rm -rfv /etc/nginx/nginx.conf \
|
||||||
|
/etc/nginx/sites-avalible/default
|
||||||
|
COPY conf/nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# Copy html players to container
|
||||||
|
##################################################################
|
||||||
|
COPY players /usr/share/nginx/html/players
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# cleaninig up
|
||||||
|
##################################################################
|
||||||
|
RUN apt clean -y && \
|
||||||
|
apt autoclean -y && \
|
||||||
|
rm -rfv /var/lib/apt/lists/* && \
|
||||||
|
rm -rfv /var/cache/apt/archives/*.deb
|
||||||
|
|
||||||
|
#healthcheck. good practice
|
||||||
|
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||||
|
|
||||||
|
# Add image configuration and scripts
|
||||||
|
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||||
|
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
#Final config
|
||||||
|
VOLUME ["/var/cache/nginx"]
|
||||||
|
EXPOSE 80 443 1935 8080
|
||||||
|
|
||||||
|
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||||
|
CMD ["docker-entrypoint.sh"]
|
19
linux/ecosystem/nginx/latest/quic/rtmp-hls/Makefile
Normal file
19
linux/ecosystem/nginx/latest/quic/rtmp-hls/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
all: app
|
||||||
|
|
||||||
|
app:
|
||||||
|
make build
|
||||||
|
make deploy
|
||||||
|
make clean
|
||||||
|
|
||||||
|
build:
|
||||||
|
docker-compose build --compress --parallel --progress plain
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
docker-compose push
|
||||||
|
|
||||||
|
clean:
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -f
|
||||||
|
docker network prune -f
|
||||||
|
docker volume prune -f
|
||||||
|
docker system prune -af
|
78
linux/ecosystem/nginx/latest/quic/rtmp-hls/README.md
Normal file
78
linux/ecosystem/nginx/latest/quic/rtmp-hls/README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# RTMP-HLS Docker
|
||||||
|
|
||||||
|
**BASED ON** [TareqAlqutami/rtmp-hls-server](https://github.com/TareqAlqutami/rtmp-hls-server)
|
||||||
|
|
||||||
|
**Docker image for video streaming server that supports RTMP, HLS, and DASH streams.**
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
This Docker image can be used to create a video streaming server that supports [**RTMP**](https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol), [**HLS**](https://en.wikipedia.org/wiki/HTTP_Live_Streaming), [**DASH**](https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP) out of the box.
|
||||||
|
It also allows adaptive streaming and custom transcoding of video streams.
|
||||||
|
All modules are built from source on Debian and Alpine Linux base images.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
* The backend is [**Nginx**](http://nginx.org/en/) with [**nginx-rtmp-module**](https://github.com/arut/nginx-rtmp-module).
|
||||||
|
* [**FFmpeg**](https://www.ffmpeg.org/) for transcoding and adaptive streaming.
|
||||||
|
* Default settings:
|
||||||
|
* RTMP is ON
|
||||||
|
* HLS is ON (adaptive, 5 variants)
|
||||||
|
* DASH is ON
|
||||||
|
* Other Nginx configuration files are also provided to allow for RTMP-only streams or no-FFmpeg transcoding.
|
||||||
|
* Statistic page of RTMP streams at `http://<server ip>:<server port>/stats`.
|
||||||
|
* Available web video players (based on [video.js](https://videojs.com/) and [hls.js](https://github.com/video-dev/hls.js/)) at `/usr/share/nginx/html/players`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### To run the server
|
||||||
|
```
|
||||||
|
docker run -d -p 1935:1935 -p 8080:8080 epicmorg/balancer:rtmp-hls
|
||||||
|
```
|
||||||
|
|
||||||
|
To run with custom conf file:
|
||||||
|
```
|
||||||
|
docker run -d -p 1935:1935 -p 8080:8080 -v custom.conf:/etc/nginx/nginx.conf epicmorg/balancer:rtmp-hls
|
||||||
|
```
|
||||||
|
where `custom.conf` is the new conf file for Nginx.
|
||||||
|
|
||||||
|
### To stream to the server
|
||||||
|
* **Stream live RTMP content to:**
|
||||||
|
```
|
||||||
|
rtmp://<server ip>:1935/live/<stream_key>
|
||||||
|
```
|
||||||
|
where `<stream_key>` is any stream key you specify.
|
||||||
|
|
||||||
|
* **Configure [OBS](https://obsproject.com/) to stream content:** <br />
|
||||||
|
Go to Settings > Stream, choose the following settings:
|
||||||
|
* Service: Custom Streaming Server.
|
||||||
|
* Server: `rtmp://<server ip>:1935/live`.
|
||||||
|
* Stream key: anything you want, however provided video players assume stream key is `test`
|
||||||
|
|
||||||
|
### To view the stream
|
||||||
|
* **Using [VLC](https://www.videolan.org/vlc/index.html):**
|
||||||
|
* Go to Media > Open Network Stream.
|
||||||
|
* Enter the streaming URL: `rtmp://<server ip>:1935/live/<stream-key>`
|
||||||
|
Replace `<server ip>` with the IP of where the server is running, and
|
||||||
|
`<stream-key>` with the stream key you used when setting up the stream.
|
||||||
|
* For HLS and DASH, the URLs are of the forms:
|
||||||
|
`http://<server ip>:8080/hls/<stream-key>.m3u8` and
|
||||||
|
`http://<server ip>:8080/dash/<stream-key>_src.mpd` respectively.
|
||||||
|
* Click Play.
|
||||||
|
|
||||||
|
* **Using provided web players:** <br/>
|
||||||
|
The provided demo players assume the stream-key is called `test` and the player is opened in localhost.
|
||||||
|
* To play RTMP content (requires Flash): `http://localhost:8080/players/rtmp.html`
|
||||||
|
* To play HLS content: `http://localhost:8080/players/hls.html`
|
||||||
|
* To play HLS content using hls.js library: `http://localhost:8080/players/hls_hlsjs.html`
|
||||||
|
* To play DASH content: `http://localhost:8080/players/dash.html`
|
||||||
|
* To play RTMP and HLS contents on the same page: `http://localhost:8080/players/rtmp_hls.html`
|
||||||
|
|
||||||
|
**Notes:**
|
||||||
|
|
||||||
|
* These web players are hardcoded to play stream key "test" at localhost.
|
||||||
|
* To change the stream source for these players. Download the html files and modify the `src` attribute in the video tag in the html file. You can then mount the modified files to the container as follows:
|
||||||
|
```
|
||||||
|
docker run -d -p 1935:1935 -p 8080:8080 -v custom_players:/usr/share/nginx/html/players epicmorg/balancer:rtmp-hls
|
||||||
|
```
|
||||||
|
where `custom_players` is the directory holding the modified html files.
|
||||||
|
|
||||||
|
|
134
linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx.conf
Normal file
134
linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx.conf
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";
|
||||||
|
|
||||||
|
worker_processes auto;
|
||||||
|
#error_log logs/error.log;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
# RTMP configuration
|
||||||
|
rtmp {
|
||||||
|
server {
|
||||||
|
listen 1935; # Listen on standard RTMP port
|
||||||
|
chunk_size 4000;
|
||||||
|
# ping 30s;
|
||||||
|
# notify_method get;
|
||||||
|
|
||||||
|
# This application is to accept incoming stream
|
||||||
|
application live {
|
||||||
|
live on; # Allows live input
|
||||||
|
|
||||||
|
# for each received stream, transcode for adaptive streaming
|
||||||
|
# This single ffmpeg command takes the input and transforms
|
||||||
|
# the source into 4 different streams with different bitrates
|
||||||
|
# and qualities. # these settings respect the aspect ratio.
|
||||||
|
exec_push /usr/bin/ffmpeg -i rtmp://localhost:1935/$app/$name -async 1 -vsync -1
|
||||||
|
-c:v libx264 -c:a aac -b:v 256k -b:a 64k -vf "scale=480:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_low
|
||||||
|
-c:v libx264 -c:a aac -b:v 768k -b:a 128k -vf "scale=720:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_mid
|
||||||
|
-c:v libx264 -c:a aac -b:v 1024k -b:a 128k -vf "scale=960:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_high
|
||||||
|
-c:v libx264 -c:a aac -b:v 1920k -b:a 128k -vf "scale=1280:trunc(ow/a/2)*2" -tune zerolatency -preset superfast -crf 23 -f flv rtmp://localhost:1935/show/$name_hd720
|
||||||
|
-c copy -f flv rtmp://localhost:1935/show/$name_src;
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is the HLS application
|
||||||
|
application show {
|
||||||
|
live on; # Allows live input from above application
|
||||||
|
deny play all; # disable consuming the stream from nginx as rtmp
|
||||||
|
|
||||||
|
hls on; # Enable HTTP Live Streaming
|
||||||
|
hls_fragment 3;
|
||||||
|
hls_playlist_length 20;
|
||||||
|
hls_path /mnt/hls/; # hls fragments path
|
||||||
|
# Instruct clients to adjust resolution according to bandwidth
|
||||||
|
hls_variant _src BANDWIDTH=4096000; # Source bitrate, source resolution
|
||||||
|
hls_variant _hd720 BANDWIDTH=2048000; # High bitrate, HD 720p resolution
|
||||||
|
hls_variant _high BANDWIDTH=1152000; # High bitrate, higher-than-SD resolution
|
||||||
|
hls_variant _mid BANDWIDTH=448000; # Medium bitrate, SD resolution
|
||||||
|
hls_variant _low BANDWIDTH=288000; # Low bitrate, sub-SD resolution
|
||||||
|
|
||||||
|
# MPEG-DASH
|
||||||
|
dash on;
|
||||||
|
dash_path /mnt/dash/; # dash fragments path
|
||||||
|
dash_fragment 3;
|
||||||
|
dash_playlist_length 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/sites-enabled/*.conf;
|
||||||
|
sendfile off;
|
||||||
|
tcp_nopush on;
|
||||||
|
directio 512;
|
||||||
|
# aio on;
|
||||||
|
|
||||||
|
# HTTP server required to serve the player and HLS fragments
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
|
||||||
|
# Serve HLS fragments
|
||||||
|
location /hls {
|
||||||
|
types {
|
||||||
|
application/vnd.apple.mpegurl m3u8;
|
||||||
|
video/mp2t ts;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serve DASH fragments
|
||||||
|
location /dash {
|
||||||
|
types {
|
||||||
|
application/dash+xml mpd;
|
||||||
|
video/mp4 mp4;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# Allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This URL provides RTMP statistics in XML
|
||||||
|
location /stat {
|
||||||
|
rtmp_stat all;
|
||||||
|
rtmp_stat_stylesheet stat.xsl; # Use stat.xsl stylesheet
|
||||||
|
}
|
||||||
|
|
||||||
|
location /stat.xsl {
|
||||||
|
# XML stylesheet to view RTMP stats.
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,118 @@
|
|||||||
|
load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";
|
||||||
|
|
||||||
|
worker_processes auto;
|
||||||
|
#error_log logs/error.log;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
# RTMP configuration
|
||||||
|
rtmp {
|
||||||
|
server {
|
||||||
|
listen 1935; # Listen on standard RTMP port
|
||||||
|
chunk_size 4000;
|
||||||
|
# ping 30s;
|
||||||
|
# notify_method get;
|
||||||
|
|
||||||
|
# This application is to accept incoming stream
|
||||||
|
application live {
|
||||||
|
live on; # Allows live input
|
||||||
|
push rtmp://localhost:1935/show;
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is the HLS application
|
||||||
|
application show {
|
||||||
|
live on; # Allows live input from above application
|
||||||
|
deny play all; # disable consuming the stream from nginx as rtmp
|
||||||
|
|
||||||
|
hls on; # Enable HTTP Live Streaming
|
||||||
|
hls_fragment 3;
|
||||||
|
hls_playlist_length 10;
|
||||||
|
hls_path /mnt/hls/; # hls fragments path
|
||||||
|
|
||||||
|
# MPEG-DASH
|
||||||
|
dash on;
|
||||||
|
dash_path /mnt/dash/; # dash fragments path
|
||||||
|
dash_fragment 3;
|
||||||
|
dash_playlist_length 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/sites-enabled/*.conf;
|
||||||
|
sendfile off;
|
||||||
|
tcp_nopush on;
|
||||||
|
directio 512;
|
||||||
|
# aio on;
|
||||||
|
|
||||||
|
# HTTP server required to serve the player and HLS fragments
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
|
||||||
|
# Serve HLS fragments
|
||||||
|
location /hls {
|
||||||
|
types {
|
||||||
|
application/vnd.apple.mpegurl m3u8;
|
||||||
|
video/mp2t ts;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serve DASH fragments
|
||||||
|
location /dash {
|
||||||
|
types {
|
||||||
|
application/dash+xml mpd;
|
||||||
|
video/mp4 mp4;
|
||||||
|
}
|
||||||
|
|
||||||
|
root /mnt;
|
||||||
|
|
||||||
|
add_header Cache-Control no-cache; # Disable cache
|
||||||
|
|
||||||
|
|
||||||
|
# CORS setup
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Expose-Headers' 'Content-Length';
|
||||||
|
|
||||||
|
# Allow CORS preflight requests
|
||||||
|
if ($request_method = 'OPTIONS') {
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
add_header 'Access-Control-Max-Age' 1728000;
|
||||||
|
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||||
|
add_header 'Content-Length' 0;
|
||||||
|
return 204;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This URL provides RTMP statistics in XML
|
||||||
|
location /stat {
|
||||||
|
rtmp_stat all;
|
||||||
|
rtmp_stat_stylesheet stat.xsl; # Use stat.xsl stylesheet
|
||||||
|
}
|
||||||
|
|
||||||
|
location /stat.xsl {
|
||||||
|
# XML stylesheet to view RTMP stats.
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";
|
||||||
|
|
||||||
|
worker_processes auto;
|
||||||
|
rtmp_auto_push on;
|
||||||
|
events {}
|
||||||
|
rtmp {
|
||||||
|
server {
|
||||||
|
listen 1935;
|
||||||
|
listen [::]:1935;
|
||||||
|
|
||||||
|
application live {
|
||||||
|
live on;
|
||||||
|
record off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: "epicmorg/nginx:${NGINX_VERSION}-rtmp-hls"
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
NGINX_VERSION: ${NGINX_VERSION}
|
||||||
|
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
16
linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-entrypoint.sh
Executable file
16
linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-entrypoint.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||||
|
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||||
|
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||||
|
chown www-data:www-data /var/www -R
|
||||||
|
echo "[nginx] Done"
|
||||||
|
else
|
||||||
|
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[nginx] Starting up"
|
||||||
|
nginx -g 'daemon off;'
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user