From 165b38f95afdea921505c4b9250bf268f7d44c2c Mon Sep 17 00:00:00 2001 From: Zimovskii Anatolii Date: Mon, 14 Nov 2022 22:12:31 +0300 Subject: [PATCH] improvements --- .../epicmorg.base.images.giltab.runners.yml | 93 ++++ .../workflows/epicmorg.base.images.python.yml | 6 + .../epicmorg.base.images.teamcity.agents.yml | 3 + CHANGELOG.md | 20 +- Makefile | 61 ++- README.md | 1 + .../debian/06-squeeze/main/Dockerfile | 16 + .../epicmorg/debian/07-wheezy/main/Dockerfile | 16 + .../epicmorg/debian/08-jessie/main/Dockerfile | 17 + .../debian/09-stretch/main/Dockerfile | 17 + .../epicmorg/debian/10-buster/main/Dockerfile | 18 + .../debian/11-bullseye/main/Dockerfile | 17 + .../debian/12-bookworm/main/Dockerfile | 17 + .../epicmorg/python/develop/3.12/Dockerfile | 148 ++++++ .../epicmorg/python/develop/3.12/Makefile | 19 + .../python/develop/3.12/docker-compose.yml | 6 + .../epicmorg/python/main/2.7/Dockerfile | 1 + .../epicmorg/python/main/3.10/Dockerfile | 1 + .../epicmorg/python/main/3.11/Dockerfile | 3 +- .../epicmorg/python/main/3.12/Dockerfile | 258 +++++++++ .../epicmorg/python/main/3.12/Makefile | 19 + .../python/main/3.12/docker-compose.yml | 6 + .../apt/apt.conf.d/99-no-check-valid-until | 1 + .../python/main/3.12/etc/apt/sources.list | 22 + .../apt/sources.list.d/github_git-lfs.list | 2 + .../trusted.gpg.d/deb-multimedia-keyring.gpg | Bin 0 -> 7607 bytes .../githubcli-archive-keyring.gpg | Bin 0 -> 1795 bytes .../epicmorg/python/main/3.12/etc/locale.gen | 12 + .../python/main/3.12/etc/locale.gen.full | 496 ++++++++++++++++++ .../epicmorg/python/main/3.6/Dockerfile | 1 + .../epicmorg/python/main/3.7/Dockerfile | 1 + .../epicmorg/python/main/3.8/Dockerfile | 1 + .../epicmorg/python/main/3.9/Dockerfile | 1 + linux/ecosystem/gitlab/README.md | 0 .../ecosystem/gitlab/runner/latest/Dockerfile | 75 +++ linux/ecosystem/gitlab/runner/latest/Makefile | 19 + .../ecosystem/gitlab/runner/latest/README.md | 0 .../gitlab/runner/latest/docker-compose.yml | 6 + .../gitlab/runner/latest/docker-entrypoint.sh | 22 + .../runner/latest/install-gitlab-runner.sh | 10 + .../gitlab/runner/latest/run-docker.sh | 7 + .../ecosystem/nginx/latest/mainline/main/.env | 2 + .../nginx/latest/mainline/main/Dockerfile | 255 +++++++++ .../nginx/latest/mainline/main/Makefile | 19 + .../nginx/latest/mainline/main/README.md | 30 ++ .../latest/mainline/main/docker-compose.yml | 9 + .../latest/mainline/main/docker-entrypoint.sh | 16 + .../main/pre/ip2location-description-pak | 1 + .../mainline/main/pre/luajit2-description-pak | 1 + .../mainline/main/pre/nginx-description-pak | 1 + .../mainline/main/pre/ngninx.pre.tar.gz | Bin 0 -> 9573 bytes .../ecosystem/nginx/latest/mainline/php/.env | 2 + .../nginx/latest/mainline/php/Dockerfile | 263 ++++++++++ .../nginx/latest/mainline/php/Makefile | 19 + .../nginx/latest/mainline/php/README.md | 30 ++ .../latest/mainline/php/docker-compose.yml | 9 + .../latest/mainline/php/docker-entrypoint.sh | 16 + .../nginx/latest/mainline/rtmp-hls/.env | 2 + .../nginx/latest/mainline/rtmp-hls/Dockerfile | 131 +++++ .../nginx/latest/mainline/rtmp-hls/Makefile | 19 + .../nginx/latest/mainline/rtmp-hls/README.md | 78 +++ .../latest/mainline/rtmp-hls/conf/nginx.conf | 134 +++++ .../rtmp-hls/conf/nginx_no-ffmpeg.conf | 118 +++++ .../conf/nginx_rtmp_minimal_no-stats.conf | 16 + .../mainline/rtmp-hls/docker-compose.yml | 9 + .../mainline/rtmp-hls/docker-entrypoint.sh | 16 + .../mainline/rtmp-hls/players/dash.html | 23 + .../latest/mainline/rtmp-hls/players/hls.html | 23 + .../mainline/rtmp-hls/players/hls_hlsjs.html | 41 ++ .../mainline/rtmp-hls/players/rtmp.html | 24 + .../mainline/rtmp-hls/players/rtmp_hls.html | 30 ++ .../sources.list.d/sources.buster.list | 19 + .../rtmp-hls/sources.list.d/sources.sid.list | 19 + .../sources.list.d/sources.stretch.list | 19 + linux/ecosystem/nginx/latest/quic/main/.env | 1 + .../nginx/latest/quic/main/Dockerfile | 276 ++++++++++ .../nginx/latest/quic/main/Dockerfile.test | 29 + .../ecosystem/nginx/latest/quic/main/Makefile | 19 + .../nginx/latest/quic/main/README.md | 291 ++++++++++ .../nginx/latest/quic/main/docker-compose.yml | 9 + .../latest/quic/main/docker-entrypoint.sh | 16 + .../quic/main/pre/ip2location-description-pak | 1 + .../quic/main/pre/luajit2-description-pak | 1 + .../quic/main/pre/nginx-description-pak | 1 + .../latest/quic/main/pre/ngninx.pre.tar.gz | Bin 0 -> 9573 bytes linux/ecosystem/nginx/latest/quic/php/.env | 1 + .../nginx/latest/quic/php/Dockerfile | 263 ++++++++++ .../ecosystem/nginx/latest/quic/php/Makefile | 19 + .../ecosystem/nginx/latest/quic/php/README.md | 30 ++ .../nginx/latest/quic/php/docker-compose.yml | 9 + .../latest/quic/php/docker-entrypoint.sh | 16 + .../ecosystem/nginx/latest/quic/rtmp-hls/.env | 1 + .../nginx/latest/quic/rtmp-hls/Dockerfile | 131 +++++ .../nginx/latest/quic/rtmp-hls/Makefile | 19 + .../nginx/latest/quic/rtmp-hls/README.md | 78 +++ .../latest/quic/rtmp-hls/conf/nginx.conf | 134 +++++ .../quic/rtmp-hls/conf/nginx_no-ffmpeg.conf | 118 +++++ .../conf/nginx_rtmp_minimal_no-stats.conf | 16 + .../latest/quic/rtmp-hls/docker-compose.yml | 9 + .../latest/quic/rtmp-hls/docker-entrypoint.sh | 16 + .../latest/quic/rtmp-hls/players/dash.html | 23 + .../latest/quic/rtmp-hls/players/hls.html | 23 + .../quic/rtmp-hls/players/hls_hlsjs.html | 41 ++ .../latest/quic/rtmp-hls/players/rtmp.html | 24 + .../quic/rtmp-hls/players/rtmp_hls.html | 30 ++ .../sources.list.d/sources.buster.list | 19 + .../rtmp-hls/sources.list.d/sources.sid.list | 19 + .../sources.list.d/sources.stretch.list | 19 + linux/ecosystem/postgres/10/Dockerfile | 10 - linux/ecosystem/postgres/11/Dockerfile | 10 - linux/ecosystem/postgres/12/Dockerfile | 10 - linux/ecosystem/postgres/13/Dockerfile | 10 - linux/ecosystem/postgres/14/Dockerfile | 10 - linux/ecosystem/postgres/15/Dockerfile | 10 - linux/ecosystem/postgres/16/Dockerfile | 10 - linux/ecosystem/postgres/8.2/Dockerfile | 11 +- linux/ecosystem/postgres/8.3/Dockerfile | 11 +- linux/ecosystem/postgres/8.4/Dockerfile | 11 +- linux/ecosystem/postgres/9.0/Dockerfile | 11 +- linux/ecosystem/postgres/9.1/Dockerfile | 11 +- linux/ecosystem/postgres/9.2/Dockerfile | 11 +- linux/ecosystem/postgres/9.3/Dockerfile | 11 +- linux/ecosystem/postgres/9.4/Dockerfile | 11 +- linux/ecosystem/postgres/9.5/Dockerfile | 11 +- linux/ecosystem/postgres/9.6/Dockerfile | 11 +- linux/ecosystem/postgres/latest/Dockerfile | 10 - 126 files changed, 4509 insertions(+), 216 deletions(-) create mode 100644 .github/workflows/epicmorg.base.images.giltab.runners.yml create mode 100644 linux/ecosystem/epicmorg/python/develop/3.12/Dockerfile create mode 100644 linux/ecosystem/epicmorg/python/develop/3.12/Makefile create mode 100644 linux/ecosystem/epicmorg/python/develop/3.12/docker-compose.yml create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/Dockerfile create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/Makefile create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/docker-compose.yml create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen create mode 100644 linux/ecosystem/epicmorg/python/main/3.12/etc/locale.gen.full create mode 100644 linux/ecosystem/gitlab/README.md create mode 100644 linux/ecosystem/gitlab/runner/latest/Dockerfile create mode 100644 linux/ecosystem/gitlab/runner/latest/Makefile create mode 100644 linux/ecosystem/gitlab/runner/latest/README.md create mode 100644 linux/ecosystem/gitlab/runner/latest/docker-compose.yml create mode 100755 linux/ecosystem/gitlab/runner/latest/docker-entrypoint.sh create mode 100755 linux/ecosystem/gitlab/runner/latest/install-gitlab-runner.sh create mode 100755 linux/ecosystem/gitlab/runner/latest/run-docker.sh create mode 100644 linux/ecosystem/nginx/latest/mainline/main/.env create mode 100644 linux/ecosystem/nginx/latest/mainline/main/Dockerfile create mode 100644 linux/ecosystem/nginx/latest/mainline/main/Makefile create mode 100644 linux/ecosystem/nginx/latest/mainline/main/README.md create mode 100644 linux/ecosystem/nginx/latest/mainline/main/docker-compose.yml create mode 100755 linux/ecosystem/nginx/latest/mainline/main/docker-entrypoint.sh create mode 100644 linux/ecosystem/nginx/latest/mainline/main/pre/ip2location-description-pak create mode 100644 linux/ecosystem/nginx/latest/mainline/main/pre/luajit2-description-pak create mode 100644 linux/ecosystem/nginx/latest/mainline/main/pre/nginx-description-pak create mode 100644 linux/ecosystem/nginx/latest/mainline/main/pre/ngninx.pre.tar.gz create mode 100644 linux/ecosystem/nginx/latest/mainline/php/.env create mode 100644 linux/ecosystem/nginx/latest/mainline/php/Dockerfile create mode 100644 linux/ecosystem/nginx/latest/mainline/php/Makefile create mode 100644 linux/ecosystem/nginx/latest/mainline/php/README.md create mode 100644 linux/ecosystem/nginx/latest/mainline/php/docker-compose.yml create mode 100755 linux/ecosystem/nginx/latest/mainline/php/docker-entrypoint.sh create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/.env create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/Dockerfile create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/Makefile create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/README.md create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx.conf create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_no-ffmpeg.conf create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-compose.yml create mode 100755 linux/ecosystem/nginx/latest/mainline/rtmp-hls/docker-entrypoint.sh create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/dash.html create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls.html create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/hls_hlsjs.html create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp.html create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/players/rtmp_hls.html create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.buster.list create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.sid.list create mode 100644 linux/ecosystem/nginx/latest/mainline/rtmp-hls/sources.list.d/sources.stretch.list create mode 100644 linux/ecosystem/nginx/latest/quic/main/.env create mode 100644 linux/ecosystem/nginx/latest/quic/main/Dockerfile create mode 100644 linux/ecosystem/nginx/latest/quic/main/Dockerfile.test create mode 100644 linux/ecosystem/nginx/latest/quic/main/Makefile create mode 100644 linux/ecosystem/nginx/latest/quic/main/README.md create mode 100644 linux/ecosystem/nginx/latest/quic/main/docker-compose.yml create mode 100755 linux/ecosystem/nginx/latest/quic/main/docker-entrypoint.sh create mode 100644 linux/ecosystem/nginx/latest/quic/main/pre/ip2location-description-pak create mode 100644 linux/ecosystem/nginx/latest/quic/main/pre/luajit2-description-pak create mode 100644 linux/ecosystem/nginx/latest/quic/main/pre/nginx-description-pak create mode 100644 linux/ecosystem/nginx/latest/quic/main/pre/ngninx.pre.tar.gz create mode 100644 linux/ecosystem/nginx/latest/quic/php/.env create mode 100644 linux/ecosystem/nginx/latest/quic/php/Dockerfile create mode 100644 linux/ecosystem/nginx/latest/quic/php/Makefile create mode 100644 linux/ecosystem/nginx/latest/quic/php/README.md create mode 100644 linux/ecosystem/nginx/latest/quic/php/docker-compose.yml create mode 100755 linux/ecosystem/nginx/latest/quic/php/docker-entrypoint.sh create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/.env create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/Dockerfile create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/Makefile create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/README.md create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx.conf create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_no-ffmpeg.conf create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/conf/nginx_rtmp_minimal_no-stats.conf create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-compose.yml create mode 100755 linux/ecosystem/nginx/latest/quic/rtmp-hls/docker-entrypoint.sh create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/players/dash.html create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls.html create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/players/hls_hlsjs.html create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp.html create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/players/rtmp_hls.html create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.buster.list create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.sid.list create mode 100644 linux/ecosystem/nginx/latest/quic/rtmp-hls/sources.list.d/sources.stretch.list 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 0000000000000000000000000000000000000000..a4f2b1006e8a1c556adb8801ed5ac01fc4124d96 GIT binary patch literal 7607 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 Vq3;xM{p)VR8fciw*Mont`WIgEFnRz0 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bf9c2735172faf460d34cb157f13291f42cdef88 GIT binary patch literal 9573 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 ${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 0000000000000000000000000000000000000000..bf9c2735172faf460d34cb157f13291f42cdef88 GIT binary patch literal 9573 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 ${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 ####################################################################################################################################