diff --git a/.github/workflows/epicmorg.base.images.giltab.runners.yml b/.github/workflows/epicmorg.base.images.giltab.runners.yml new file mode 100644 index 000000000..565c9d996 --- /dev/null +++ b/.github/workflows/epicmorg.base.images.giltab.runners.yml @@ -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 diff --git a/.github/workflows/epicmorg.base.images.python.yml b/.github/workflows/epicmorg.base.images.python.yml index f5d2d5fe5..7ec82a64a 100644 --- a/.github/workflows/epicmorg.base.images.python.yml +++ b/.github/workflows/epicmorg.base.images.python.yml @@ -42,6 +42,9 @@ jobs: - name: "Build and Deploy Python 3.11 Main Image:" 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: @@ -78,6 +81,9 @@ jobs: - name: "Build and Deploy Python 3.11 Develop Image:" 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 diff --git a/.github/workflows/epicmorg.base.images.teamcity.agents.yml b/.github/workflows/epicmorg.base.images.teamcity.agents.yml index 9778d47ab..037848b9f 100644 --- a/.github/workflows/epicmorg.base.images.teamcity.agents.yml +++ b/.github/workflows/epicmorg.base.images.teamcity.agents.yml @@ -81,6 +81,9 @@ jobs: - name: "Build and Deploy TeamCity Agent php8.0 Image:" 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:" run: cd linux/ecosystem/teamcity/agent/steam-sdk && pwd && make build && make deploy diff --git a/CHANGELOG.md b/CHANGELOG.md index 4563d0122..d3a7d38e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,17 @@ -## Changelog -### 2022 +# Changelog +## 2023 +* `jan` +------------------------------------------------------------------- +## 2022 +* `dec` * `nov` * added `php8.1`, `apache2 + php8.1` and `teamcity agent + php8.1` images - * build and ci fixes + * build and `ci` fixes * added `gitlab-runner` images * updated `nextcloud`, `nginx` and `postgres` images - * added `nginx` with `http3` and `quic` support - * fixed `GitHub Actions` and `Makefile` + * added `nginx` with `http3` and `quic` support + * fixed `GitHub Actions` and `Makefile` + * updated `base` images * `oct` * just fixes * `sep` @@ -39,6 +44,7 @@ * fixed `apache2` * added `php8` support * extended `testrail` releases with `active directory` and `ldap` auth support. +------------------------------------------------------------------- ### 2021 * `december` * 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 `teamcity agent` image. ------------------------------------------------------------------- -### 2020 +## 2020 * `december` * added mattermost * fixed some images @@ -192,6 +198,8 @@ * switched `qbittorrent` images to `edge` * switched final `balancer` image to `edge` * reduced containers size by switching to `debian-slim` base-image. +------------------------------------------------------------------- +## 2019 * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/Makefile b/Makefile index 4d3981139..87678026d 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = "2022.09.09" +VERSION = "2022.11.14" AUTHOR = "EpicMorg" MODIFIED = "STAM" DOCKER_SCAN_SUGGEST = false @@ -48,10 +48,10 @@ docker-clean: docker system prune -af images: -# make docker-clean make advanced-images make ecosystem-images # make docker-clean +# make docker-clean advanced-images: @echo "=======================================" @@ -89,8 +89,7 @@ advanced-zabbix-images: 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-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/proxy-mysql && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/3.0/proxy-sqlite3 && pwd && make build && make deploy @@ -99,8 +98,7 @@ advanced-zabbix-images: 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-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/proxy-mysql && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/4.0/proxy-sqlite3 && pwd && make build && make deploy @@ -109,8 +107,7 @@ advanced-zabbix-images: 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-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/java-gateway && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/5.0/proxy-mysql && pwd && make build && make deploy @@ -120,8 +117,7 @@ advanced-zabbix-images: 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-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/java-gateway && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/5.2/proxy-mysql && pwd && make build && make deploy @@ -131,8 +127,7 @@ advanced-zabbix-images: 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-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/java-gateway && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/5.4/proxy-mysql && pwd && make build && make deploy @@ -142,8 +137,7 @@ advanced-zabbix-images: 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-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/java-gateway && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/6.0/proxy-mysql && pwd && make build && make deploy @@ -153,8 +147,7 @@ advanced-zabbix-images: 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-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/java-gateway && pwd && make build && make deploy cd `pwd`/linux/advanced/zabbix/6.2/proxy-mysql && 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/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.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/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-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-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/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/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/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-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-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/web-mysql && pwd && make build && make deploy +# cd `pwd`/linux/advanced/zabbix/6.4/web-pgsql && pwd && make build && make deploy advanced-nextcloud-images: 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/23 && 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: cd `pwd`/linux/advanced/nextcloud/patched/14 && pwd && make build && make deploy @@ -215,6 +207,7 @@ ecosystem-images: make ecosystem-vk2discord-images make ecosystem-postgres-images make ecosystem-teamcity-agent-images + make ecosystem-gitlab-runner-images make ecosystem-nginx-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.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.12 && pwd && make build && make deploy ecosystem-pyhton-images-develop: 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.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.12 && pwd && make build && make deploy ecosystem-debian-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/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: 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 @@ -502,7 +500,12 @@ bundle-teamcity: @echo "===== Building TeamCity images =====" @echo "=======================================" 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: @echo "=======================================" diff --git a/README.md b/README.md index 761ddf180..c0d84b0ab 100644 --- a/README.md +++ b/README.md @@ -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%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%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) diff --git a/linux/ecosystem/epicmorg/debian/06-squeeze/main/Dockerfile b/linux/ecosystem/epicmorg/debian/06-squeeze/main/Dockerfile index 7bf66412d..0ea3a2577 100644 --- a/linux/ecosystem/epicmorg/debian/06-squeeze/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/06-squeeze/main/Dockerfile @@ -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} && \ 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 ################################################################## diff --git a/linux/ecosystem/epicmorg/debian/07-wheezy/main/Dockerfile b/linux/ecosystem/epicmorg/debian/07-wheezy/main/Dockerfile index 79f5bde99..655e964c1 100644 --- a/linux/ecosystem/epicmorg/debian/07-wheezy/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/07-wheezy/main/Dockerfile @@ -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} && \ 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 ################################################################## diff --git a/linux/ecosystem/epicmorg/debian/08-jessie/main/Dockerfile b/linux/ecosystem/epicmorg/debian/08-jessie/main/Dockerfile index cf5feb9b2..9fc7edad0 100644 --- a/linux/ecosystem/epicmorg/debian/08-jessie/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/08-jessie/main/Dockerfile @@ -135,6 +135,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ 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} && \ 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 ################################################################## diff --git a/linux/ecosystem/epicmorg/debian/09-stretch/main/Dockerfile b/linux/ecosystem/epicmorg/debian/09-stretch/main/Dockerfile index 9843accb0..4804efece 100644 --- a/linux/ecosystem/epicmorg/debian/09-stretch/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/09-stretch/main/Dockerfile @@ -150,6 +150,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## @@ -191,6 +192,22 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue echo "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 ################################################################## diff --git a/linux/ecosystem/epicmorg/debian/10-buster/main/Dockerfile b/linux/ecosystem/epicmorg/debian/10-buster/main/Dockerfile index 6abf820b2..a7ba9b473 100644 --- a/linux/ecosystem/epicmorg/debian/10-buster/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/10-buster/main/Dockerfile @@ -151,6 +151,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## @@ -192,6 +193,23 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue echo "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 ################################################################## diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/main/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/main/Dockerfile index f039a07e8..134a4b7fd 100644 --- a/linux/ecosystem/epicmorg/debian/11-bullseye/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/11-bullseye/main/Dockerfile @@ -150,6 +150,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## @@ -191,6 +192,22 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue echo "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 ################################################################## diff --git a/linux/ecosystem/epicmorg/debian/12-bookworm/main/Dockerfile b/linux/ecosystem/epicmorg/debian/12-bookworm/main/Dockerfile index 18129031b..02369dd62 100644 --- a/linux/ecosystem/epicmorg/debian/12-bookworm/main/Dockerfile +++ b/linux/ecosystem/epicmorg/debian/12-bookworm/main/Dockerfile @@ -150,6 +150,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## @@ -191,6 +192,22 @@ RUN wget --no-check-certificate -nv --random-wait --retry-connrefused --continue echo "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 ################################################################## diff --git a/linux/ecosystem/epicmorg/python/develop/3.12/Dockerfile b/linux/ecosystem/epicmorg/python/develop/3.12/Dockerfile new file mode 100644 index 000000000..b6fff4f36 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/develop/3.12/Dockerfile @@ -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 diff --git a/linux/ecosystem/epicmorg/python/develop/3.12/Makefile b/linux/ecosystem/epicmorg/python/develop/3.12/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/develop/3.12/Makefile @@ -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 diff --git a/linux/ecosystem/epicmorg/python/develop/3.12/docker-compose.yml b/linux/ecosystem/epicmorg/python/develop/3.12/docker-compose.yml new file mode 100644 index 000000000..d48ad969a --- /dev/null +++ b/linux/ecosystem/epicmorg/python/develop/3.12/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/python:3.11-develop" + build: + context: . diff --git a/linux/ecosystem/epicmorg/python/main/2.7/Dockerfile b/linux/ecosystem/epicmorg/python/main/2.7/Dockerfile index 9180ac64f..38a02d4b5 100644 --- a/linux/ecosystem/epicmorg/python/main/2.7/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/2.7/Dockerfile @@ -200,6 +200,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/epicmorg/python/main/3.10/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.10/Dockerfile index 05110a149..9d234a5bd 100644 --- a/linux/ecosystem/epicmorg/python/main/3.10/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/3.10/Dockerfile @@ -204,6 +204,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/epicmorg/python/main/3.11/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.11/Dockerfile index f161e0074..58030f809 100644 --- a/linux/ecosystem/epicmorg/python/main/3.11/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/3.11/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11-rc-bullseye +FROM python:3.11-bullseye ARG DEBIAN_FRONTEND=noninteractive LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" @@ -195,6 +195,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/epicmorg/python/main/3.12/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.12/Dockerfile new file mode 100644 index 000000000..186540113 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/Dockerfile @@ -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 diff --git a/linux/ecosystem/epicmorg/python/main/3.12/Makefile b/linux/ecosystem/epicmorg/python/main/3.12/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/Makefile @@ -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 diff --git a/linux/ecosystem/epicmorg/python/main/3.12/docker-compose.yml b/linux/ecosystem/epicmorg/python/main/3.12/docker-compose.yml new file mode 100644 index 000000000..fafc347e6 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/python:3.12" + build: + context: . diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until new file mode 100644 index 000000000..4e6d9209d --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until @@ -0,0 +1 @@ +Acquire::Check-Valid-Until no; diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list new file mode 100644 index 000000000..517c8fc52 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list @@ -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 diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list new file mode 100644 index 000000000..8cf93d426 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list @@ -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 diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg new file mode 100644 index 000000000..a4f2b1006 Binary files /dev/null and b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg differ diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg new file mode 100644 index 000000000..ce02b812e Binary files /dev/null and b/linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg differ diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen b/linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen new file mode 100644 index 000000000..02f100afa --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen @@ -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 diff --git a/linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen.full b/linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen.full new file mode 100644 index 000000000..602141659 --- /dev/null +++ b/linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen.full @@ -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 + diff --git a/linux/ecosystem/epicmorg/python/main/3.6/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.6/Dockerfile index f95cf00c3..08eb973e6 100644 --- a/linux/ecosystem/epicmorg/python/main/3.6/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/3.6/Dockerfile @@ -195,6 +195,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/epicmorg/python/main/3.7/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.7/Dockerfile index 5023779ac..4b2e4dcf8 100644 --- a/linux/ecosystem/epicmorg/python/main/3.7/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/3.7/Dockerfile @@ -195,6 +195,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/epicmorg/python/main/3.8/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.8/Dockerfile index a5c04689d..1dabd72fe 100644 --- a/linux/ecosystem/epicmorg/python/main/3.8/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/3.8/Dockerfile @@ -195,6 +195,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/epicmorg/python/main/3.9/Dockerfile b/linux/ecosystem/epicmorg/python/main/3.9/Dockerfile index 7a4021153..0543b7199 100644 --- a/linux/ecosystem/epicmorg/python/main/3.9/Dockerfile +++ b/linux/ecosystem/epicmorg/python/main/3.9/Dockerfile @@ -195,6 +195,7 @@ RUN apt-get update && \ git \ git-lfs && \ git --version && \ + git-lfs install --skip-repo && \ git-lfs --version ################################################################## diff --git a/linux/ecosystem/gitlab/README.md b/linux/ecosystem/gitlab/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/linux/ecosystem/gitlab/runner/latest/Dockerfile b/linux/ecosystem/gitlab/runner/latest/Dockerfile new file mode 100644 index 000000000..c642b4f67 --- /dev/null +++ b/linux/ecosystem/gitlab/runner/latest/Dockerfile @@ -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}"] diff --git a/linux/ecosystem/gitlab/runner/latest/Makefile b/linux/ecosystem/gitlab/runner/latest/Makefile new file mode 100644 index 000000000..7d2cd9dd3 --- /dev/null +++ b/linux/ecosystem/gitlab/runner/latest/Makefile @@ -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 diff --git a/linux/ecosystem/gitlab/runner/latest/README.md b/linux/ecosystem/gitlab/runner/latest/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/linux/ecosystem/gitlab/runner/latest/docker-compose.yml b/linux/ecosystem/gitlab/runner/latest/docker-compose.yml new file mode 100644 index 000000000..fb2055b9b --- /dev/null +++ b/linux/ecosystem/gitlab/runner/latest/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/gitlab-runner:latest" + build: + context: . diff --git a/linux/ecosystem/gitlab/runner/latest/docker-entrypoint.sh b/linux/ecosystem/gitlab/runner/latest/docker-entrypoint.sh new file mode 100755 index 000000000..53350fa8f --- /dev/null +++ b/linux/ecosystem/gitlab/runner/latest/docker-entrypoint.sh @@ -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 "$@" diff --git a/linux/ecosystem/gitlab/runner/latest/install-gitlab-runner.sh b/linux/ecosystem/gitlab/runner/latest/install-gitlab-runner.sh new file mode 100755 index 000000000..833bf928e --- /dev/null +++ b/linux/ecosystem/gitlab/runner/latest/install-gitlab-runner.sh @@ -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" diff --git a/linux/ecosystem/gitlab/runner/latest/run-docker.sh b/linux/ecosystem/gitlab/runner/latest/run-docker.sh new file mode 100755 index 000000000..41b5e68e5 --- /dev/null +++ b/linux/ecosystem/gitlab/runner/latest/run-docker.sh @@ -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 diff --git a/linux/ecosystem/nginx/latest/mainline/main/.env b/linux/ecosystem/nginx/latest/mainline/main/.env new file mode 100644 index 000000000..15b9807c4 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/.env @@ -0,0 +1,2 @@ +NGINX_VERSION=latest +NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz diff --git a/linux/ecosystem/nginx/latest/mainline/main/Dockerfile b/linux/ecosystem/nginx/latest/mainline/main/Dockerfile new file mode 100644 index 000000000..b0aa89885 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/Dockerfile @@ -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"] diff --git a/linux/ecosystem/nginx/latest/mainline/main/Makefile b/linux/ecosystem/nginx/latest/mainline/main/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/Makefile @@ -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 diff --git a/linux/ecosystem/nginx/latest/mainline/main/README.md b/linux/ecosystem/nginx/latest/mainline/main/README.md new file mode 100644 index 000000000..034784bc0 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/README.md @@ -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 +``` diff --git a/linux/ecosystem/nginx/latest/mainline/main/docker-compose.yml b/linux/ecosystem/nginx/latest/mainline/main/docker-compose.yml new file mode 100644 index 000000000..4d5d761fb --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/docker-compose.yml @@ -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} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/main/docker-entrypoint.sh b/linux/ecosystem/nginx/latest/mainline/main/docker-entrypoint.sh new file mode 100755 index 000000000..9ebcd6a91 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/docker-entrypoint.sh @@ -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;' diff --git a/linux/ecosystem/nginx/latest/mainline/main/pre/ip2location-description-pak b/linux/ecosystem/nginx/latest/mainline/main/pre/ip2location-description-pak new file mode 100644 index 000000000..e93eb7783 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/pre/ip2location-description-pak @@ -0,0 +1 @@ +Custom build of ip2location lib by EpicMorg. diff --git a/linux/ecosystem/nginx/latest/mainline/main/pre/luajit2-description-pak b/linux/ecosystem/nginx/latest/mainline/main/pre/luajit2-description-pak new file mode 100644 index 000000000..4305e8e88 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/pre/luajit2-description-pak @@ -0,0 +1 @@ +Custom build of luajit2 for Nginx module, by EpicMorg. diff --git a/linux/ecosystem/nginx/latest/mainline/main/pre/nginx-description-pak b/linux/ecosystem/nginx/latest/mainline/main/pre/nginx-description-pak new file mode 100644 index 000000000..b6c186ed8 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/main/pre/nginx-description-pak @@ -0,0 +1 @@ +Custom build of Nginx with some modules by EpicMorg. \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/main/pre/ngninx.pre.tar.gz b/linux/ecosystem/nginx/latest/mainline/main/pre/ngninx.pre.tar.gz new file mode 100644 index 000000000..bf9c27351 Binary files /dev/null and b/linux/ecosystem/nginx/latest/mainline/main/pre/ngninx.pre.tar.gz differ diff --git a/linux/ecosystem/nginx/latest/mainline/php/.env b/linux/ecosystem/nginx/latest/mainline/php/.env new file mode 100644 index 000000000..15b9807c4 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/php/.env @@ -0,0 +1,2 @@ +NGINX_VERSION=latest +NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz diff --git a/linux/ecosystem/nginx/latest/mainline/php/Dockerfile b/linux/ecosystem/nginx/latest/mainline/php/Dockerfile new file mode 100644 index 000000000..c38584cc4 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/php/Dockerfile @@ -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"] \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/php/Makefile b/linux/ecosystem/nginx/latest/mainline/php/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/php/Makefile @@ -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 diff --git a/linux/ecosystem/nginx/latest/mainline/php/README.md b/linux/ecosystem/nginx/latest/mainline/php/README.md new file mode 100644 index 000000000..034784bc0 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/php/README.md @@ -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 +``` diff --git a/linux/ecosystem/nginx/latest/mainline/php/docker-compose.yml b/linux/ecosystem/nginx/latest/mainline/php/docker-compose.yml new file mode 100644 index 000000000..0968ca6c1 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/php/docker-compose.yml @@ -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} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/php/docker-entrypoint.sh b/linux/ecosystem/nginx/latest/mainline/php/docker-entrypoint.sh new file mode 100755 index 000000000..9ebcd6a91 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/php/docker-entrypoint.sh @@ -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;' diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/.env b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/.env new file mode 100644 index 000000000..15b9807c4 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/.env @@ -0,0 +1,2 @@ +NGINX_VERSION=latest +NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/Dockerfile b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/Dockerfile new file mode 100644 index 000000000..80f85590f --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/Dockerfile @@ -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"] diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/Makefile b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/Makefile @@ -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 diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/README.md b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/README.md new file mode 100644 index 000000000..d5a0ec5cc --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/README.md @@ -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://:/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://:1935/live/ + ``` + where `` is any stream key you specify. + + * **Configure [OBS](https://obsproject.com/) to stream content:**
+Go to Settings > Stream, choose the following settings: + * Service: Custom Streaming Server. + * Server: `rtmp://: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://:1935/live/` + Replace `` with the IP of where the server is running, and + `` with the stream key you used when setting up the stream. + * For HLS and DASH, the URLs are of the forms: + `http://:8080/hls/.m3u8` and + `http://:8080/dash/_src.mpd` respectively. + * Click Play. + +* **Using provided web players:**
+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. + + diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx.conf b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx.conf new file mode 100644 index 000000000..938da01e2 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx.conf @@ -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; + } + + } +} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_no-ffmpeg.conf b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_no-ffmpeg.conf new file mode 100644 index 000000000..99644e14f --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_no-ffmpeg.conf @@ -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; + } + + } +} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf new file mode 100644 index 000000000..780a1d1ff --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf @@ -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; + } + } +} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-compose.yml b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-compose.yml new file mode 100644 index 000000000..3c46aedbd --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-compose.yml @@ -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} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-entrypoint.sh b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-entrypoint.sh new file mode 100755 index 000000000..9ebcd6a91 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-entrypoint.sh @@ -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;' diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/dash.html b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/dash.html new file mode 100644 index 000000000..12b8df786 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/dash.html @@ -0,0 +1,23 @@ + + + + + DASH Live Streaming + + + + +

DASH Player

+ + + + + + + diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls.html b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls.html new file mode 100644 index 000000000..15d95b4c1 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls.html @@ -0,0 +1,23 @@ + + + + + HLS Live Streaming + + + + +

HLS Player

+ + + + + + + diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls_hlsjs.html b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls_hlsjs.html new file mode 100644 index 000000000..0237e7a52 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls_hlsjs.html @@ -0,0 +1,41 @@ + + + + + HLS streaming + + + + + + + + + + +

HLS Player (using hls.js)

+ +
+
+ +
+
+ + + + + + + diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp.html b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp.html new file mode 100644 index 000000000..d8ce85610 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp.html @@ -0,0 +1,24 @@ + + + + + RTMP Live Streaming + Live Streaming + + + + + + + +

RTMP Player

+ + + + + diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp_hls.html b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp_hls.html new file mode 100644 index 000000000..35617e913 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp_hls.html @@ -0,0 +1,30 @@ + + + + + Live Streaming + + + + + + + + +

RTMP Player

+ + +

HLS Player

+ + + + + diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.buster.list b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.buster.list new file mode 100644 index 000000000..412c35d1a --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.buster.list @@ -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 diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.sid.list b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.sid.list new file mode 100644 index 000000000..465c737af --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.sid.list @@ -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 diff --git a/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.stretch.list b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.stretch.list new file mode 100644 index 000000000..617bf9bb6 --- /dev/null +++ b/linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.stretch.list @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/main/.env b/linux/ecosystem/nginx/latest/quic/main/.env new file mode 100644 index 000000000..aa0831614 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/.env @@ -0,0 +1 @@ +NGINX_VERSION=quic diff --git a/linux/ecosystem/nginx/latest/quic/main/Dockerfile b/linux/ecosystem/nginx/latest/quic/main/Dockerfile new file mode 100644 index 000000000..106a11c27 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/Dockerfile @@ -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"] diff --git a/linux/ecosystem/nginx/latest/quic/main/Dockerfile.test b/linux/ecosystem/nginx/latest/quic/main/Dockerfile.test new file mode 100644 index 000000000..278d8c9f8 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/Dockerfile.test @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/main/Makefile b/linux/ecosystem/nginx/latest/quic/main/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/Makefile @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/main/README.md b/linux/ecosystem/nginx/latest/quic/main/README.md new file mode 100644 index 000000000..49377400f --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/README.md @@ -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 +``` diff --git a/linux/ecosystem/nginx/latest/quic/main/docker-compose.yml b/linux/ecosystem/nginx/latest/quic/main/docker-compose.yml new file mode 100644 index 000000000..4d5d761fb --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/docker-compose.yml @@ -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} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/main/docker-entrypoint.sh b/linux/ecosystem/nginx/latest/quic/main/docker-entrypoint.sh new file mode 100755 index 000000000..9ebcd6a91 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/docker-entrypoint.sh @@ -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;' diff --git a/linux/ecosystem/nginx/latest/quic/main/pre/ip2location-description-pak b/linux/ecosystem/nginx/latest/quic/main/pre/ip2location-description-pak new file mode 100644 index 000000000..e93eb7783 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/pre/ip2location-description-pak @@ -0,0 +1 @@ +Custom build of ip2location lib by EpicMorg. diff --git a/linux/ecosystem/nginx/latest/quic/main/pre/luajit2-description-pak b/linux/ecosystem/nginx/latest/quic/main/pre/luajit2-description-pak new file mode 100644 index 000000000..4305e8e88 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/pre/luajit2-description-pak @@ -0,0 +1 @@ +Custom build of luajit2 for Nginx module, by EpicMorg. diff --git a/linux/ecosystem/nginx/latest/quic/main/pre/nginx-description-pak b/linux/ecosystem/nginx/latest/quic/main/pre/nginx-description-pak new file mode 100644 index 000000000..b6c186ed8 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/main/pre/nginx-description-pak @@ -0,0 +1 @@ +Custom build of Nginx with some modules by EpicMorg. \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/main/pre/ngninx.pre.tar.gz b/linux/ecosystem/nginx/latest/quic/main/pre/ngninx.pre.tar.gz new file mode 100644 index 000000000..bf9c27351 Binary files /dev/null and b/linux/ecosystem/nginx/latest/quic/main/pre/ngninx.pre.tar.gz differ diff --git a/linux/ecosystem/nginx/latest/quic/php/.env b/linux/ecosystem/nginx/latest/quic/php/.env new file mode 100644 index 000000000..aa0831614 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/php/.env @@ -0,0 +1 @@ +NGINX_VERSION=quic diff --git a/linux/ecosystem/nginx/latest/quic/php/Dockerfile b/linux/ecosystem/nginx/latest/quic/php/Dockerfile new file mode 100644 index 000000000..c38584cc4 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/php/Dockerfile @@ -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"] \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/php/Makefile b/linux/ecosystem/nginx/latest/quic/php/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/php/Makefile @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/php/README.md b/linux/ecosystem/nginx/latest/quic/php/README.md new file mode 100644 index 000000000..034784bc0 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/php/README.md @@ -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 +``` diff --git a/linux/ecosystem/nginx/latest/quic/php/docker-compose.yml b/linux/ecosystem/nginx/latest/quic/php/docker-compose.yml new file mode 100644 index 000000000..0968ca6c1 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/php/docker-compose.yml @@ -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} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/php/docker-entrypoint.sh b/linux/ecosystem/nginx/latest/quic/php/docker-entrypoint.sh new file mode 100755 index 000000000..9ebcd6a91 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/php/docker-entrypoint.sh @@ -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;' diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/.env b/linux/ecosystem/nginx/latest/quic/rtmp-hls/.env new file mode 100644 index 000000000..aa0831614 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/.env @@ -0,0 +1 @@ +NGINX_VERSION=quic diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/Dockerfile b/linux/ecosystem/nginx/latest/quic/rtmp-hls/Dockerfile new file mode 100644 index 000000000..80f85590f --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/Dockerfile @@ -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"] diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/Makefile b/linux/ecosystem/nginx/latest/quic/rtmp-hls/Makefile new file mode 100644 index 000000000..9ef622aa9 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/Makefile @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/README.md b/linux/ecosystem/nginx/latest/quic/rtmp-hls/README.md new file mode 100644 index 000000000..d5a0ec5cc --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/README.md @@ -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://:/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://:1935/live/ + ``` + where `` is any stream key you specify. + + * **Configure [OBS](https://obsproject.com/) to stream content:**
+Go to Settings > Stream, choose the following settings: + * Service: Custom Streaming Server. + * Server: `rtmp://: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://:1935/live/` + Replace `` with the IP of where the server is running, and + `` with the stream key you used when setting up the stream. + * For HLS and DASH, the URLs are of the forms: + `http://:8080/hls/.m3u8` and + `http://:8080/dash/_src.mpd` respectively. + * Click Play. + +* **Using provided web players:**
+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. + + diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx.conf b/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx.conf new file mode 100644 index 000000000..938da01e2 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx.conf @@ -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; + } + + } +} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_no-ffmpeg.conf b/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_no-ffmpeg.conf new file mode 100644 index 000000000..99644e14f --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_no-ffmpeg.conf @@ -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; + } + + } +} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf b/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf new file mode 100644 index 000000000..780a1d1ff --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf @@ -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; + } + } +} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-compose.yml b/linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-compose.yml new file mode 100644 index 000000000..3c46aedbd --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-compose.yml @@ -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} \ No newline at end of file diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-entrypoint.sh b/linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-entrypoint.sh new file mode 100755 index 000000000..9ebcd6a91 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-entrypoint.sh @@ -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;' diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/dash.html b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/dash.html new file mode 100644 index 000000000..12b8df786 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/dash.html @@ -0,0 +1,23 @@ + + + + + DASH Live Streaming + + + + +

DASH Player

+ + + + + + + diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls.html b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls.html new file mode 100644 index 000000000..15d95b4c1 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls.html @@ -0,0 +1,23 @@ + + + + + HLS Live Streaming + + + + +

HLS Player

+ + + + + + + diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls_hlsjs.html b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls_hlsjs.html new file mode 100644 index 000000000..0237e7a52 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls_hlsjs.html @@ -0,0 +1,41 @@ + + + + + HLS streaming + + + + + + + + + + +

HLS Player (using hls.js)

+ +
+
+ +
+
+ + + + + + + diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp.html b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp.html new file mode 100644 index 000000000..d8ce85610 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp.html @@ -0,0 +1,24 @@ + + + + + RTMP Live Streaming + Live Streaming + + + + + + + +

RTMP Player

+ + + + + diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp_hls.html b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp_hls.html new file mode 100644 index 000000000..35617e913 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp_hls.html @@ -0,0 +1,30 @@ + + + + + Live Streaming + + + + + + + + +

RTMP Player

+ + +

HLS Player

+ + + + + diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.buster.list b/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.buster.list new file mode 100644 index 000000000..412c35d1a --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.buster.list @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.sid.list b/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.sid.list new file mode 100644 index 000000000..465c737af --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.sid.list @@ -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 diff --git a/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.stretch.list b/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.stretch.list new file mode 100644 index 000000000..617bf9bb6 --- /dev/null +++ b/linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.stretch.list @@ -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 diff --git a/linux/ecosystem/postgres/10/Dockerfile b/linux/ecosystem/postgres/10/Dockerfile index b69e1e80e..6eae65b1b 100644 --- a/linux/ecosystem/postgres/10/Dockerfile +++ b/linux/ecosystem/postgres/10/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/11/Dockerfile b/linux/ecosystem/postgres/11/Dockerfile index 5cbbc970d..0b77d3730 100644 --- a/linux/ecosystem/postgres/11/Dockerfile +++ b/linux/ecosystem/postgres/11/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/12/Dockerfile b/linux/ecosystem/postgres/12/Dockerfile index 37853d301..52fe8db0b 100644 --- a/linux/ecosystem/postgres/12/Dockerfile +++ b/linux/ecosystem/postgres/12/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/13/Dockerfile b/linux/ecosystem/postgres/13/Dockerfile index 02d213a3a..3667f9fa1 100644 --- a/linux/ecosystem/postgres/13/Dockerfile +++ b/linux/ecosystem/postgres/13/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/14/Dockerfile b/linux/ecosystem/postgres/14/Dockerfile index 4703e414a..b52166961 100644 --- a/linux/ecosystem/postgres/14/Dockerfile +++ b/linux/ecosystem/postgres/14/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/15/Dockerfile b/linux/ecosystem/postgres/15/Dockerfile index c4411e336..7b7f8189d 100644 --- a/linux/ecosystem/postgres/15/Dockerfile +++ b/linux/ecosystem/postgres/15/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/16/Dockerfile b/linux/ecosystem/postgres/16/Dockerfile index 2d997d896..0c86324e9 100644 --- a/linux/ecosystem/postgres/16/Dockerfile +++ b/linux/ecosystem/postgres/16/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### diff --git a/linux/ecosystem/postgres/8.2/Dockerfile b/linux/ecosystem/postgres/8.2/Dockerfile index 461d71fc7..00f2c8fda 100644 --- a/linux/ecosystem/postgres/8.2/Dockerfile +++ b/linux/ecosystem/postgres/8.2/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 8.2 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/8.3/Dockerfile b/linux/ecosystem/postgres/8.3/Dockerfile index df468711f..349e1e256 100644 --- a/linux/ecosystem/postgres/8.3/Dockerfile +++ b/linux/ecosystem/postgres/8.3/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -35,6 +25,7 @@ ENV PG_MAJOR 8.3 ENV PG_VERSION 8.3 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/8.4/Dockerfile b/linux/ecosystem/postgres/8.4/Dockerfile index f5992fc3f..5b908cd5e 100644 --- a/linux/ecosystem/postgres/8.4/Dockerfile +++ b/linux/ecosystem/postgres/8.4/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 8.4 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.0/Dockerfile b/linux/ecosystem/postgres/9.0/Dockerfile index 3bc65f070..3cc0bf83a 100644 --- a/linux/ecosystem/postgres/9.0/Dockerfile +++ b/linux/ecosystem/postgres/9.0/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 9.0 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.1/Dockerfile b/linux/ecosystem/postgres/9.1/Dockerfile index 0ae6111f0..e1bff95e0 100644 --- a/linux/ecosystem/postgres/9.1/Dockerfile +++ b/linux/ecosystem/postgres/9.1/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -35,6 +25,7 @@ ENV PG_MAJOR 9.1 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.2/Dockerfile b/linux/ecosystem/postgres/9.2/Dockerfile index 81545e57d..f0420c383 100644 --- a/linux/ecosystem/postgres/9.2/Dockerfile +++ b/linux/ecosystem/postgres/9.2/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 9.2 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.3/Dockerfile b/linux/ecosystem/postgres/9.3/Dockerfile index 5d571e52c..eed12706f 100644 --- a/linux/ecosystem/postgres/9.3/Dockerfile +++ b/linux/ecosystem/postgres/9.3/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 9.3 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.4/Dockerfile b/linux/ecosystem/postgres/9.4/Dockerfile index 9832ec6e4..45e73aab8 100644 --- a/linux/ecosystem/postgres/9.4/Dockerfile +++ b/linux/ecosystem/postgres/9.4/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 9.4 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.5/Dockerfile b/linux/ecosystem/postgres/9.5/Dockerfile index 037484fdd..f032049e4 100644 --- a/linux/ecosystem/postgres/9.5/Dockerfile +++ b/linux/ecosystem/postgres/9.5/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 9.5 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/9.6/Dockerfile b/linux/ecosystem/postgres/9.6/Dockerfile index eb935c013..5ab787dcf 100644 --- a/linux/ecosystem/postgres/9.6/Dockerfile +++ b/linux/ecosystem/postgres/9.6/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default #################################################################################################################################### @@ -34,6 +24,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F ENV PG_MAJOR 9.6 RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list && \ + echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-snapshot main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list && \ echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg-testing main' $PG_MAJOR >> /etc/apt/sources.list.d/pgdg.list RUN apt-get update \ diff --git a/linux/ecosystem/postgres/latest/Dockerfile b/linux/ecosystem/postgres/latest/Dockerfile index c4411e336..7b7f8189d 100644 --- a/linux/ecosystem/postgres/latest/Dockerfile +++ b/linux/ecosystem/postgres/latest/Dockerfile @@ -8,16 +8,6 @@ ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r postgres && useradd -r -g postgres postgres -#################################################################################################################################### -# grab gosu for easy step-down from root -#################################################################################################################################### -ENV GOSU_VER 1.14 - -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* \ - && 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 \ - && apt-get purge -y --auto-remove curl - #################################################################################################################################### # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default ####################################################################################################################################