mirror of
https://github.com/EpicMorg/docker-scripts.git
synced 2024-12-24 13:45:32 +03:00
Merge branch 'develop'
This commit is contained in:
commit
364692280c
@ -1,30 +0,0 @@
|
||||
name: EpicMorg EcoSystem PostgreSQL 16 Test Image
|
||||
|
||||
on:
|
||||
# push:
|
||||
# branches:
|
||||
# - 'master'
|
||||
schedule:
|
||||
- cron: '5 5 * * 1,3,5'
|
||||
|
||||
jobs:
|
||||
|
||||
build-pgsql16-images:
|
||||
name: Build EpicMorg PostgreSQL 16 Test Image
|
||||
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 PostgreSQL 16 Image:"
|
||||
run: cd linux/ecosystem/postgres/16 && pwd && make build && make deploy
|
||||
|
||||
##################################################################################
|
||||
|
||||
- name: Cleanup
|
||||
run: make docker-clean
|
17
.github/workflows/epicmorg.base.images.web.yml
vendored
17
.github/workflows/epicmorg.base.images.web.yml
vendored
@ -88,13 +88,22 @@ jobs:
|
||||
run: make
|
||||
|
||||
- name: "Build and Deploy NginX Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/main && pwd && make build && make deploy
|
||||
run: cd linux/ecosystem/nginx/latest/mainline/main && pwd && make build && make deploy
|
||||
|
||||
- name: "Build and Deploy NginX + PHP Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/php && pwd && make build && make deploy
|
||||
- name: "Build and Deploy NginX + PHP7.4 Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/mainline/php && pwd && make build && make deploy
|
||||
|
||||
- name: "Build and Deploy NginX + RTMP-HLS Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/rtmp-hls && pwd && make build && make deploy
|
||||
run: cd linux/ecosystem/nginx/latest/mainline/rtmp-hls && pwd && make build && make deploy
|
||||
|
||||
- name: "Build and Deploy NginX (quic, http3) Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/quic/main && pwd && make build && make deploy
|
||||
|
||||
- name: "Build and Deploy NginX (quic, http3) + PHP7.4 Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/quic/php && pwd && make build && make deploy
|
||||
|
||||
- name: "Build and Deploy NginX (quic, http3) + RTMP-HLS Image:"
|
||||
run: cd linux/ecosystem/nginx/latest/quic/rtmp-hls && pwd && make build && make deploy
|
||||
|
||||
##################################################################################
|
||||
|
||||
|
@ -5,6 +5,8 @@
|
||||
* 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`
|
||||
* `oct`
|
||||
* just fixes
|
||||
* `sep`
|
||||
|
@ -1,45 +1,5 @@
|
||||
# [![Activity](https://img.shields.io/github/commit-activity/m/EpicMorg/docker-scripts?label=commits&style=flat-square)](https://github.com/EpicMorg/docker-scripts/commits) [![GitHub issues](https://img.shields.io/github/issues/EpicMorg/docker-scripts.svg?style=popout-square)](https://github.com/EpicMorg/docker-scripts/issues) [![GitHub forks](https://img.shields.io/github/forks/EpicMorg/docker-scripts.svg?style=popout-square)](https://github.com/EpicMorg/docker-scripts/network) [![GitHub stars](https://img.shields.io/github/stars/EpicMorg/docker-scripts.svg?style=popout-square)](https://github.com/EpicMorg/docker-scripts/stargazers) [![Size](https://img.shields.io/github/repo-size/EpicMorg/docker-scripts?label=size&style=flat-square)](https://github.com/EpicMorg/docker-scripts/archive/master.zip) [![Release](https://img.shields.io/github/v/release/EpicMorg/docker-scripts?style=flat-square)](https://github.com/EpicMorg/docker-scripts/releases) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3658/badge)](https://bestpractices.coreinfrastructure.org/projects/3658) [![CodeScene System Mastery](https://codescene.io/projects/6535/status-badges/system-mastery)](https://codescene.io/projects/6535) [![GitHub license](https://img.shields.io/github/license/EpicMorg/docker-scripts.svg?style=popout-square)](LICENSE.md) [![Changelog](https://img.shields.io/badge/Changelog-yellow.svg?style=popout-square)](CHANGELOG.md)
|
||||
|
||||
| Master | Develop |
|
||||
|:-------------|:-------------|
|
||||
| [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master-linux/master?label=build%20master-linux&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster-linux) | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/develop-linux/develop?label=build%20develop-linux&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Adevelop-linux)
|
||||
| [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master-win32/master?label=build%20master-win32&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster-win32) | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/develop-win32/develop?label=build%20develop-win32&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Adevelop-win32)
|
||||
|
||||
## Description
|
||||
A collection of docker images for production use. This repo contains 2 types of images - `advanced` and `ecosystem`. We support `linux x86_64` docker engine (`Win64` is still in the ***testing*** stage).
|
||||
|
||||
* `linux/advanced` folder contains improved images like `nextcloud` or `teamcity server`, `zabbix collection`, etc. These images just forked from original developers and patched a bit.
|
||||
* `linux/ecosystem` folder contains images developed by our team like full `Atlassian Stack`, compilled `nginx`, `php`, `testrail` and othres.
|
||||
|
||||
![](https://raw.githubusercontent.com/EpicMorg/docker-scripts/master/.github/logo.png)
|
||||
|
||||
## Quick navigation for sub-repositories
|
||||
Containers was Splited to another sub-repositories. Now current repo will be contain only fresh and latest versions of images. All older versions will be appeared in sub-repos. More fater building, less bad load to CI.
|
||||
|
||||
| Bitbucket | Confluence | Jira | EpicMorg |
|
||||
|-------------:|-------------:|:-------------|:-------------|
|
||||
| [![atlassian-bitbucket-7](https://img.shields.io/badge/Atlassian-Bitbucket%207-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/bitbucket/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![confluence-7](https://img.shields.io/badge/Atlassian-Confluence%207-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/confluence/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-8](https://img.shields.io/badge/Atlassian-Jira%208-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/jira/8) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![Deprecated](https://img.shields.io/badge/EpicMorg-Deprecated-red?style=popout-square)](https://github.com/EpicMorgVault/docker-deprecated-images) [![GHA](https://img.shields.io/badge/build-none-lightgrey?style=flat-square)](https://github.com/EpicMorgVault/docker-deprecated-images) |
|
||||
| [![atlassian-bitbucket-6](https://img.shields.io/badge/Atlassian-Bitbucket%206-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/bitbucket/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![confluence-6](https://img.shields.io/badge/Atlassian-Confluence%206-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/confluence/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-7](https://img.shields.io/badge/Atlassian-Jira%207-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/jira/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![Experimental](https://img.shields.io/badge/EpicMorg-Experimental-orange?style=popout-square)](https://github.com/EpicMorgVault/docker-experimental-images) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/testing/testing?label=build%20testing&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Atesting) |
|
||||
| ` ` | [![confluence-5](https://img.shields.io/badge/Atlassian-Confluence%205-orange?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/confluence/5) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-6](https://img.shields.io/badge/Atlassian-Jira%206-orange?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/jira/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![NextCloud](https://img.shields.io/badge/EpicMorg-NextCloud%20Backports-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/nextcloud) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) |
|
||||
| ` ` | ` ` | [![atlassian-jira-5](https://img.shields.io/badge/Atlassian-Jira%205-red?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/atlassian/jira/5) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![PostgreSQL](https://img.shields.io/badge/EpicMorg-PostgreSQL%20Backports-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/master/postgres) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | |
|
||||
|
||||
# Some popular products [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B81CUI4)
|
||||
|
||||
| Application | Pulls | Notes
|
||||
| ------ | ------ | ------
|
||||
| [![Atlassian Bitbucket](https://img.shields.io/badge/Atlassian%20Bitbucket--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/bitbucket/download) | [![](https://img.shields.io/docker/pulls/epicmorg/bitbucket.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/bitbucket/) | `Atlassian Bitbucket` server. You also can install `datacenter` edition.
|
||||
| [![Atlassian Confluence](https://img.shields.io/badge/Atlassian%20Confluence--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/confluence/download) | [![](https://img.shields.io/docker/pulls/epicmorg/confluence.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/confluence/) | `Atlassian Confluence` server. You also can install `datacenter` edition.
|
||||
| [![Atlassian Jira](https://img.shields.io/badge/Atlassian%20Jira--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/jira/download) | [![](https://img.shields.io/docker/pulls/epicmorg/jira.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/jira/) | `Atlassian Jira: Softrware` server. You also can install `servicedesk`, `core` or `datacenter` editions.
|
||||
| [![Nginx Mainline](https://img.shields.io/badge/Nginx--brightgreen.svg?style=popout-square)](https://nginx.org/en/download.html) | [![](https://img.shields.io/docker/pulls/epicmorg/nginx.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/nginx/) | Mainline custom build by [EpicMorg Team](https://github.com/EpicMorg) with http2 support and some modules.
|
||||
| [![Apache2](https://img.shields.io/badge/Apache2--brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/apache2.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/apache2/ ) | Latest pure apache2.
|
||||
| [![php7](https://img.shields.io/badge/php7--brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/apache2.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/apache2/ ) | php 7.3 custom build by [Ondrej Sury](https://launchpad.net/~ondrej). Component of container above.
|
||||
| [![nc](https://img.shields.io/badge/NextCloud--brightgreen.svg?style=popout-square)](https://hub.docker.com/_/nextcloud) | [![](https://img.shields.io/docker/pulls/epicmorg/nextcloud.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/nextcloud/ ) | Fixed `nextcloud:latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-agent](https://img.shields.io/badge/Zabbix%20Agent--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-agent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-agent/ ) | Fixed `zabbix/zabbix-agent:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-server](https://img.shields.io/badge/Zabbix%20Server--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-server-mysql.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-server-mysql/ ) | Fixed `zabbix/zabbix-server-mysql:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-web](https://img.shields.io/badge/Zabbix%20Web--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-web-apache-mysql.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-web-apache-mysql/ ) | Fixed `zabbix/zabbix-web-apache-mysql:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-java-gateway](https://img.shields.io/badge/Zabbix%20JavaGW--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-java-gateway.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-java-gateway/ ) | Fixed `zabbix/zabbix-java-gateway:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![teamcity-agent](https://img.shields.io/badge/TeamCity%20Agent--brightgreen.svg?style=popout-square)](https://github.com/JetBrains/teamcity-docker-agent) | [![](https://img.shields.io/docker/pulls/epicmorg/teamcity-agent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/teamcity-agent/ ) | Custom build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![qbittorrent](https://img.shields.io/badge/qBittorrent--brightgreen.svg?style=popout-square)](https://github.com/qbittorrent/qBittorrent) | [![](https://img.shields.io/docker/pulls/epicmorg/qbittorrent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/qbittorrent/ ) | Custom build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
|
||||
# Containers Map
|
||||
|
||||
|
116
Makefile
116
Makefile
@ -79,11 +79,103 @@ advanced-redash-images:
|
||||
cd `pwd`/linux/advanced/redash && pwd && make sync && make patch && make build && make deploy
|
||||
|
||||
advanced-zabbix-images:
|
||||
cd `pwd`/linux/advanced/zabbix/agent && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/java-gateway && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/proxy && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/server && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/web && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/agent && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/agent2 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/java-gateway && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/proxy-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/proxy-sqlite3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/latest/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/3.0/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/3.0/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/3.0/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/3.0/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/3.0/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/4.0/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/4.0/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/4.0/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/4.0/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/4.0/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/5.0/proxy-sqlite3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.0/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.0/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.0/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.0/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.0/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/5.2/proxy-sqlite3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.2/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.2/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.2/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.2/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.2/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/5.4/proxy-sqlite3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.4/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.4/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.4/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.4/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/5.4/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/6.0/proxy-sqlite3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.0/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.0/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.0/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.0/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.0/web-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/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
|
||||
cd `pwd`/linux/advanced/zabbix/6.2/proxy-sqlite3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.2/server-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.2/server-pgsql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.2/snmptraps && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.2/web-mysql && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/zabbix/6.2/web-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
|
||||
@ -110,6 +202,7 @@ advanced-nextcloud-patched-images:
|
||||
cd `pwd`/linux/advanced/nextcloud/patched/22 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/nextcloud/patched/23 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/nextcloud/patched/24 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/advanced/nextcloud/patched/25 && pwd && make build && make deploy
|
||||
|
||||
ecosystem-images:
|
||||
make bundle-base-images
|
||||
@ -252,6 +345,7 @@ ecosystem-php-images:
|
||||
cd `pwd`/linux/ecosystem/php/php7.3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/php/php7.4 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/php/php8.0 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/php/php8.1 && pwd && make build && make deploy
|
||||
|
||||
ecosystem-apache2-images:
|
||||
cd `pwd`/linux/ecosystem/apache2/latest && pwd && make build && make deploy
|
||||
@ -259,6 +353,7 @@ ecosystem-apache2-images:
|
||||
cd `pwd`/linux/ecosystem/apache2/php7.3 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/apache2/php7.4 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/apache2/php8.0 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/apache2/php8.1 && pwd && make build && make deploy
|
||||
|
||||
ecosystem-testrail-images:
|
||||
cd `pwd`/linux/ecosystem/cassandra/3.11 && pwd && make build && make deploy
|
||||
@ -328,7 +423,7 @@ ecosystem-postgres-images:
|
||||
cd `pwd`/linux/ecosystem/postgres/13 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/postgres/14 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/postgres/15 && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/postgres/16 && pwd && make build && make deploy
|
||||
# cd `pwd`/linux/ecosystem/postgres/16 && pwd && make build && make deploy
|
||||
|
||||
ecosystem-teamcity-agent-images:
|
||||
cd `pwd`/linux/ecosystem/teamcity/agent/latest && pwd && make build && make deploy
|
||||
@ -349,9 +444,12 @@ ecosystem-teamcity-agent-images:
|
||||
cd `pwd`/linux/ecosystem/teamcity/agent/steam-sdk && pwd && make build && make deploy
|
||||
|
||||
ecosystem-nginx-images:
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/main && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/php && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/rtmp-hls && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/mainline/main && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/mainline/php && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/mainline/rtmp-hls && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/quic/main && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/quic/php && pwd && make build && make deploy
|
||||
cd `pwd`/linux/ecosystem/nginx/latest/quic/rtmp-hls && pwd && make build && make deploy
|
||||
|
||||
ecosystem-vscode-server-images:
|
||||
cd `pwd`/linux/advanced/vscode-server/latest && pwd && make build && make deploy
|
||||
|
34
README.md
34
README.md
@ -7,17 +7,45 @@ A collection of docker images for production use. This repo contains 2 types of
|
||||
* `linux/advanced` folder contains improved images like `nextcloud` or `teamcity server`, `zabbix collection`, etc. These images just forked from original developers and patched a bit.
|
||||
* `linux/ecosystem` folder contains images developed by our team like full `Atlassian Stack`, compilled `nginx`, `php`, `testrail` and othres.
|
||||
|
||||
See more at [DESCRIPTION.md](DESCRIPTION.md)
|
||||
|
||||
![](https://raw.githubusercontent.com/EpicMorg/docker-scripts/master/.github/logo.png)
|
||||
|
||||
# Few popular products [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B81CUI4)
|
||||
# CI Status
|
||||
|
||||
| `Advanced` | `EcoSystem` |
|
||||
|:-------------|:-------------|
|
||||
| [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Advanced%20Images?label=EpicMorg%20Advanced%20Images&logo=EpicMorg%20Advanced%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/blob/master/.github/workflows/epicmorg.advanced.images.yml) | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Debian%2010%20Images?label=Debian%2010%20Images&logo=Debian%2010%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.current.debian10.yml)
|
||||
| [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Advanced%20Nextcloud%20Images?label=Nextcloud%20Images&logo=Nextcloud%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.advanced.nextcloud.images.yml) | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Debian%2011%20Images?label=Debian%2011%20Images&logo=Debian%2011%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.current.debian11.yml)
|
||||
| [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Advanced%20Vscode%20Server%20Images?label=Vscode%20Server%20Images&logo=Vscode%20Server%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.advanced.vscode.images.yml) | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Debian%2012%20Images?label=Debian%2012%20Images&logo=Debian%2012%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.current.debian12.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Debian%20Legacy%20Images?label=Debian%20Legacy%20Images&logo=Debian%20Legacy%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.legacy.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20Debian%20Python%20Images?label=Debian%20Python%20Images&logo=Debian%20Python%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.python.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Misc%20Images?label=EcoSystem%20Misc%20Images&logo=EcoSystem%20Misc%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.ecosysctem.misc.images.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Atlassian%20Main%20Images?label=Atlassian%20Images&logo=Atlassian%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.current.atlassian.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20NodeJS%20Images?label=NodeJS%20Images&logo=NodeJS%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.nodejs.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Perfocre%20Images?label=Perfocre%20Images&logo=Perfocre%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.perforce.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20PostgreSQL%20Images?label=PostgreSQL%20Images&logo=PostgreSQL%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.postgresql.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20TeamCity%20Agents%20Images?label=TeamCity%20Agents%20Images&logo=TeamCity%20Agents%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.teamcity.agents.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Testrail%20Images?label=Testrail%20Images&logo=Testrail%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.testrail.yml)
|
||||
| ` ` | [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/EpicMorg%20EcoSystem%20Web%20Images?label=Web%20Images&logo=Web%20Images&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions/workflows/epicmorg.base.images.web.yml)
|
||||
|
||||
|
||||
# Few popular products [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B81CUI4)
|
||||
|
||||
| Application | Pulls | Notes
|
||||
| ------ | ------ | ------
|
||||
| [![Atlassian Bitbucket](https://img.shields.io/badge/Atlassian%20Bitbucket--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/bitbucket/download) | [![](https://img.shields.io/docker/pulls/epicmorg/bitbucket.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/bitbucket/) | `Atlassian Bitbucket` server. You also can install `datacenter` edition.
|
||||
| [![Atlassian Confluence](https://img.shields.io/badge/Atlassian%20Confluence--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/confluence/download) | [![](https://img.shields.io/docker/pulls/epicmorg/confluence.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/confluence/) | `Atlassian Confluence` server. You also can install `datacenter` edition.
|
||||
| [![Atlassian Jira](https://img.shields.io/badge/Atlassian%20Jira--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/jira/download) | [![](https://img.shields.io/docker/pulls/epicmorg/jira.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/jira/) | `Atlassian Jira: Softrware` server. You also can install `servicedesk`, `core` or `datacenter` editions.
|
||||
| [![Nginx Mainline](https://img.shields.io/badge/Nginx--brightgreen.svg?style=popout-square)](https://nginx.org/en/download.html) | [![](https://img.shields.io/docker/pulls/epicmorg/nginx.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/nginx/) | Mainline custom build by [EpicMorg Team](https://github.com/EpicMorg) with http2 support and some modules.
|
||||
| [![Apache2](https://img.shields.io/badge/Apache2--brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/apache2.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/apache2/ ) | Latest pure apache2.
|
||||
| [![php7](https://img.shields.io/badge/php7--brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/apache2.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/apache2/ ) | php 7.3 custom build by [Ondrej Sury](https://launchpad.net/~ondrej). Component of container above.
|
||||
| [![nc](https://img.shields.io/badge/NextCloud--brightgreen.svg?style=popout-square)](https://hub.docker.com/_/nextcloud) | [![](https://img.shields.io/docker/pulls/epicmorg/nextcloud.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/nextcloud/ ) | Fixed `nextcloud:latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-agent](https://img.shields.io/badge/Zabbix%20Agent--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-agent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-agent/ ) | Fixed `zabbix/zabbix-agent:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-server](https://img.shields.io/badge/Zabbix%20Server--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-server-mysql.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-server-mysql/ ) | Fixed `zabbix/zabbix-server-mysql:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-web](https://img.shields.io/badge/Zabbix%20Web--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-web-apache-mysql.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-web-apache-mysql/ ) | Fixed `zabbix/zabbix-web-apache-mysql:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![zabbix-java-gateway](https://img.shields.io/badge/Zabbix%20JavaGW--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-java-gateway.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-java-gateway/ ) | Fixed `zabbix/zabbix-java-gateway:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![teamcity-agent](https://img.shields.io/badge/TeamCity%20Agent--brightgreen.svg?style=popout-square)](https://github.com/JetBrains/teamcity-docker-agent) | [![](https://img.shields.io/docker/pulls/epicmorg/teamcity-agent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/teamcity-agent/ ) | Custom build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
| [![qbittorrent](https://img.shields.io/badge/qBittorrent--brightgreen.svg?style=popout-square)](https://github.com/qbittorrent/qBittorrent) | [![](https://img.shields.io/docker/pulls/epicmorg/qbittorrent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/qbittorrent/ ) | Custom build by [EpicMorg Team](https://github.com/EpicMorg) with benefits.
|
||||
|
||||
|
||||
# Stargazers
|
||||
[![Stargazers repo roster for @EpicMorg/docker-scripts](https://reporoster.com/stars/dark/EpicMorg/docker-scripts)](https://github.com/EpicMorg/docker-scripts/stargazers)
|
||||
|
@ -1,2 +0,0 @@
|
||||
NGINX_VERSION=latest
|
||||
NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz
|
@ -1,254 +0,0 @@
|
||||
##################################################################
|
||||
# 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/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"]
|
@ -1,19 +0,0 @@
|
||||
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
|
@ -1,30 +0,0 @@
|
||||
# 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
|
||||
```
|
@ -1,9 +0,0 @@
|
||||
version: '3.9'
|
||||
services:
|
||||
app:
|
||||
image: "epicmorg/nginx:${NGINX_VERSION}"
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
NGINX_VERSION: ${NGINX_VERSION}
|
||||
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||
chown www-data:www-data /var/www -R
|
||||
echo "[nginx] Done"
|
||||
else
|
||||
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||
fi
|
||||
|
||||
echo "[nginx] Starting up"
|
||||
nginx -g 'daemon off;'
|
@ -1 +0,0 @@
|
||||
Custom build of ip2location lib by EpicMorg.
|
@ -1 +0,0 @@
|
||||
Custom build of luajit2 for Nginx module, by EpicMorg.
|
@ -1 +0,0 @@
|
||||
Custom build of Nginx with some modules by EpicMorg.
|
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
NGINX_VERSION=latest
|
||||
NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz
|
@ -1,265 +0,0 @@
|
||||
##################################################################
|
||||
# Set Global ARG to build process
|
||||
##################################################################
|
||||
ARG NGINX_VERSION
|
||||
|
||||
##################################################################
|
||||
# Start build process
|
||||
##################################################################
|
||||
FROM epicmorg/debian:bullseye-develop AS builder
|
||||
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
##################################################################
|
||||
# ARGuments
|
||||
##################################################################
|
||||
ENV BuildDocker true
|
||||
|
||||
ARG BUILDS_DIR=/builds
|
||||
ARG SRC_DIR=${BUILDS_DIR}/src
|
||||
ARG EXPORT_DIR=${BUILDS_DIR}/export
|
||||
ARG P4API_DIR=${SRC_DIR}/p4api
|
||||
ARG P4PHP_DIR=${SRC_DIR}/p4php
|
||||
ARG MAKE_DIR=${SRC_DIR}/p4php-7.4
|
||||
|
||||
ARG P4API_VER=r20.1
|
||||
ARG P4API_URL=http://filehost.perforce.com/perforce/${P4API_VER}/bin.linux26x86_64/p4api.tgz
|
||||
|
||||
ARG P4PHP_VER=r20.1
|
||||
ARG P4PHP_URL=http://filehost.perforce.com/perforce/${P4PHP_VER}/bin.tools/p4php-php7.tgz
|
||||
|
||||
ARG PHP_MODULE_PATH=/usr/lib/php/20190902
|
||||
|
||||
##################################################################
|
||||
# Files and folders
|
||||
##################################################################
|
||||
RUN mkdir -p ${BUILDS_DIR} ${SRC_DIR} ${EXPORT_DIR} ${MAKE_DIR} ${P4API_DIR} ${P4PHP_DIR}
|
||||
|
||||
##################################################################
|
||||
# Installing PHP7
|
||||
##################################################################
|
||||
#installing php repo
|
||||
|
||||
#Install base packages
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --allow-unauthenticated \
|
||||
libmemcached-dev \
|
||||
smbclient libsmbclient libsmbclient-dev \
|
||||
php7.4 \
|
||||
php7.4-dev \
|
||||
php7.4-fpm \
|
||||
php7.4-cli \
|
||||
php7.4-cgi
|
||||
|
||||
##################################################################
|
||||
# preparing p4src
|
||||
##################################################################
|
||||
RUN wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${P4API_DIR} && \
|
||||
wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \
|
||||
wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${P4PHP_DIR} && \
|
||||
wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \
|
||||
cd ${P4API_DIR} && \
|
||||
ls -las && \
|
||||
cd ${P4PHP_DIR} && \
|
||||
ls -las && \
|
||||
cd ${MAKE_DIR} && \
|
||||
ls -las && \
|
||||
cd ${SRC_DIR} && \
|
||||
ls -las
|
||||
|
||||
##################################################################
|
||||
# compilling p4src
|
||||
##################################################################
|
||||
RUN cd ${MAKE_DIR} && \
|
||||
ls -las && \
|
||||
phpize && \
|
||||
./configure --with-perforce=${P4API_DIR} && \
|
||||
make && \
|
||||
make test && \
|
||||
make install && \
|
||||
cp ${PHP_MODULE_PATH}/perforce.so ${EXPORT_DIR}
|
||||
|
||||
|
||||
##################################################################
|
||||
# compilling smbclient
|
||||
##################################################################
|
||||
RUN pecl install smbclient && \
|
||||
cp ${PHP_MODULE_PATH}/smbclient.so ${EXPORT_DIR}
|
||||
|
||||
##################################################################
|
||||
##################################################################
|
||||
##################################################################
|
||||
|
||||
FROM epicmorg/nginx:${NGINX_VERSION}
|
||||
LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
##################################################################
|
||||
# Installing php fpm for nginx from deb
|
||||
##################################################################
|
||||
ARG PHP_MODULE_PATH=/usr/lib/php/20190902
|
||||
ARG PHP_VER=7.4
|
||||
ARG PHP_DIR=/etc/php/${PHP_VER}
|
||||
ARG P4_PHP_INI=${PHP_DIR}/mods-available/perfroce.ini
|
||||
ARG SMB_PHP_INI=${PHP_DIR}/mods-available/smbclient.ini
|
||||
|
||||
##################################################################
|
||||
# Installing PHP7
|
||||
##################################################################
|
||||
#Install base packages
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --allow-unauthenticated \
|
||||
php7.4 \
|
||||
php7.4-dev \
|
||||
php7.4-fpm \
|
||||
php7.4-cli \
|
||||
php7.4-cgi \
|
||||
php-pear \
|
||||
php7.4-gmp \
|
||||
php7.4-snmp \
|
||||
php7.4-ldap \
|
||||
php7.4-mail \
|
||||
php7.4-soap \
|
||||
php7.4-mysql \
|
||||
php7.4-memcached \
|
||||
php7.4-memcache \
|
||||
php7.4-igbinary \
|
||||
php7.4-interbase \
|
||||
php7.4-curl \
|
||||
php7.4-gd \
|
||||
php7.4-intl \
|
||||
php7.4-zip \
|
||||
php7.4-bcmath \
|
||||
php7.4-imap \
|
||||
php7.4-pspell \
|
||||
php7.4-sqlite3 \
|
||||
php7.4-tidy \
|
||||
php7.4-xmlrpc \
|
||||
php7.4-xml \
|
||||
php7.4-mbstring \
|
||||
php7.4-apcu \
|
||||
php7.4-common \
|
||||
php7.4-json \
|
||||
php7.4-readline \
|
||||
php7.4-enchant \
|
||||
php7.4-ssh2 \
|
||||
php7.4-oauth \
|
||||
php7.4-gmagick \
|
||||
php7.4-gnupg \
|
||||
php7.4-redis \
|
||||
smbclient libsmbclient \
|
||||
# php-smbclient \
|
||||
php7.4-yaml \
|
||||
php7.4-geoip \
|
||||
sendmail && \
|
||||
update-alternatives --set php /usr/bin/php7.4 && \
|
||||
phpenmod \
|
||||
snmp \
|
||||
gmp \
|
||||
calendar \
|
||||
ldap \
|
||||
curl \
|
||||
exif \
|
||||
ftp \
|
||||
fileinfo \
|
||||
gd \
|
||||
geoip \
|
||||
gnupg \
|
||||
iconv \
|
||||
imap \
|
||||
json \
|
||||
mbstring \
|
||||
memcached \
|
||||
mysqli \
|
||||
mysqlnd \
|
||||
oauth \
|
||||
pdo_mysql \
|
||||
pdo_sqlite \
|
||||
phar \
|
||||
posix \
|
||||
readline \
|
||||
redis \
|
||||
simplexml \
|
||||
sockets \
|
||||
sqlite3 \
|
||||
ssh2 \
|
||||
tokenizer \
|
||||
xml \
|
||||
xmlreader \
|
||||
xmlrpc \
|
||||
xmlwriter \
|
||||
xsl \
|
||||
yaml && \
|
||||
ln -sf /etc/ssl/dhparam.pem /etc/php/dhparam.pem && \
|
||||
php -v
|
||||
|
||||
##################################################################
|
||||
# Installing IOnCube addon
|
||||
##################################################################
|
||||
ADD https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz /tmp/ioncube.tar.gz
|
||||
RUN tar -C /tmp -xvf /tmp/ioncube.tar.gz && \
|
||||
cp /tmp/ioncube/ioncube_loader_lin_7.4.so ${PHP_MODULE_PATH} && \
|
||||
# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/apache2/php.ini && \
|
||||
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cgi/php.ini && \
|
||||
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cli/php.ini && \
|
||||
echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/fpm/php.ini && \
|
||||
php -m && \
|
||||
php -v
|
||||
|
||||
##################################################################
|
||||
# Installing P4 addon
|
||||
##################################################################
|
||||
COPY --from=builder /builds/export/perforce.so ${PHP_MODULE_PATH}
|
||||
RUN echo "extension=perforce.so" > ${P4_PHP_INI} && \
|
||||
ln -sf ${P4_PHP_INI} ${PHP_DIR}/cgi/conf.d/perforce.ini && \
|
||||
ln -sf ${P4_PHP_INI} ${PHP_DIR}/cli/conf.d/perforce.ini && \
|
||||
ln -sf ${P4_PHP_INI} ${PHP_DIR}/fpm/conf.d/perforce.ini && \
|
||||
php -m && \
|
||||
php -v
|
||||
|
||||
##################################################################
|
||||
# Installing smbclient addon
|
||||
##################################################################
|
||||
COPY --from=builder /builds/export/smbclient.so ${PHP_MODULE_PATH}
|
||||
RUN echo "extension=smbclient.so" > ${SMB_PHP_INI} && \
|
||||
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cgi/conf.d/smbclient.ini && \
|
||||
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cli/conf.d/smbclient.ini && \
|
||||
ln -sf ${SMB_PHP_INI} ${PHP_DIR}/fpm/conf.d/smbclient.ini && \
|
||||
php -m && \
|
||||
php -v
|
||||
|
||||
|
||||
|
||||
##################################################################
|
||||
# Installing Composer addon
|
||||
##################################################################
|
||||
RUN cd /tmp && \
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
|
||||
php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
|
||||
rm /tmp/composer-setup.php
|
||||
|
||||
##################################################################
|
||||
# cleaninig up
|
||||
##################################################################
|
||||
RUN apt clean -y && \
|
||||
apt autoclean -y && \
|
||||
rm -rfv /var/lib/apt/lists/* && \
|
||||
rm -rfv /var/cache/apt/archives/*.deb && \
|
||||
rm -rfv /tmp/deb/* && \
|
||||
rm -rfv /tmp/ioncube/* && \
|
||||
rm -rfv /tmp/composer-setup.php && \
|
||||
rm -rfv /tmp/ioncube.tar.gz
|
||||
|
||||
#healthcheck. good practice
|
||||
HEALTHCHECK --interval=2m --timeout=3s CMD curl -f http://localhost:80/ || exit 1
|
||||
|
||||
# Add image configuration and scripts
|
||||
COPY docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
|
||||
RUN chmod 755 /usr/bin/docker-entrypoint.sh
|
||||
|
||||
#Final config
|
||||
VOLUME ["/var/cache/nginx"]
|
||||
EXPOSE 80 443
|
||||
|
||||
ENTRYPOINT ["tini", "-s", "--", "docker-entrypoint.sh"]
|
||||
CMD ["docker-entrypoint.sh"]
|
@ -1,19 +0,0 @@
|
||||
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
|
@ -1,30 +0,0 @@
|
||||
# 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
|
||||
```
|
@ -1,9 +0,0 @@
|
||||
version: '3.9'
|
||||
services:
|
||||
app:
|
||||
image: "epicmorg/nginx:${NGINX_VERSION}-php"
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
NGINX_VERSION: ${NGINX_VERSION}
|
||||
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||
chown www-data:www-data /var/www -R
|
||||
echo "[nginx] Done"
|
||||
else
|
||||
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||
fi
|
||||
|
||||
echo "[nginx] Starting up"
|
||||
nginx -g 'daemon off;'
|
@ -1,2 +0,0 @@
|
||||
NGINX_VERSION=quic
|
||||
NGINX_DOWNLOAD_URL=https://github.com/VKCOM/nginx-quic/archive/refs/heads/master.tar.gz
|
@ -1,26 +0,0 @@
|
||||
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://boringssl.googlesource.com/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 && \
|
||||
hg clone https://hg.nginx.org/nginx-quic && \
|
||||
hg clone http://hg.nginx.org/njs && \
|
||||
cd nginx-quic && \
|
||||
hg update quic && \
|
||||
auto/configure `nginx -V 2>&1 | sed "s/ \-\-/ \\\ \n\t--/g" | grep "\-\-" | grep -ve opt= -e param= -e build=` \
|
||||
--build=nginx-quic --with-debug \
|
||||
--with-http_v3_module --with-http_quic_module --with-stream_quic_module \
|
||||
--with-cc-opt="-I/src/boringssl/include" --with-ld-opt="-L/src/boringssl/build/ssl -L/src/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
|
@ -1,325 +0,0 @@
|
||||
##################################################################
|
||||
# Set Global ARG to build process
|
||||
##################################################################
|
||||
ARG NGINX_VERSION
|
||||
|
||||
##################################################################
|
||||
# Start build process
|
||||
##################################################################
|
||||
FROM epicmorg/devel 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 BSSL_SRC_DIR=${SRC_DIR}/boringssl
|
||||
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
|
||||
ARG DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
##################################################################
|
||||
# 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}
|
||||
ADD pre/boringssl-build.sh ${SRC_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
|
||||
|
||||
|
||||
##################################################################
|
||||
# BotingSSL - google fork with quic
|
||||
##################################################################
|
||||
|
||||
# compile from sources
|
||||
RUN cd ${SRC_DIR} && \
|
||||
./boringssl-build.sh
|
||||
|
||||
# git clone https://github.com/google/boringssl.git boringssl && \
|
||||
# apt-get update && \
|
||||
# apt-get install -y git gcc make g++ cmake perl libunwind-dev golang && \
|
||||
# cd boringssl && \
|
||||
# mkdir build && \
|
||||
# cd build && \
|
||||
# pwd && \
|
||||
# cmake .. && \
|
||||
# make
|
||||
# cmake -GNinja .. && \
|
||||
# ninja
|
||||
# cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -GNinja .. && \
|
||||
# ninja
|
||||
# cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 .. && \
|
||||
# make
|
||||
|
||||
# Make an .openssl directory for nginx and then symlink BoringSSL's include directory tree
|
||||
#RUN mkdir -p ${BSSL_SRC_DIR}/.openssl/lib && \
|
||||
# ln -sf ${BSSL_SRC_DIR}/include ${BSSL_SRC_DIR}/.openssl/include
|
||||
|
||||
# Copy the BoringSSL crypto libraries to .openssl/lib so nginx can find them
|
||||
#RUN cp -rfv ${BSSL_SRC_DIR}/build/crypto/libcrypto.a ${BSSL_SRC_DIR}/.openssl/lib && \
|
||||
# cp -rfv ${BSSL_SRC_DIR}/build/ssl/libssl.a ${BSSL_SRC_DIR}/.openssl/lib
|
||||
|
||||
# Fix "Error 127" during build
|
||||
#RUN touch ${BSSL_SRC_DIR}/include/openssl/ssl.h
|
||||
#RUN touch ${BSSL_SRC_DIR}/.openssl/include/openssl/ssl.h
|
||||
|
||||
|
||||
##################################################################
|
||||
# quictls/openssl - community fork with quic
|
||||
##################################################################
|
||||
|
||||
#RUN printf "\n--------------------------------\nPreinstlalled openssl version is: $(openssl version)\n--------------------------------\n\n"
|
||||
#RUN cd ${SRC_DIR} && \
|
||||
# git clone https://github.com/quictls/openssl.git openssl && \
|
||||
# cd openssl && \
|
||||
# pwd && \
|
||||
# ./Configure
|
||||
# && \
|
||||
# make && \
|
||||
# make test
|
||||
# && \
|
||||
# make install
|
||||
|
||||
#RUN printf "\n--------------------------------\nCurrent openssl version is: $(openssl version)\n--------------------------------\n\n"
|
||||
|
||||
#RUN openssl fipsinstall
|
||||
|
||||
#RUN openssl version
|
||||
|
||||
##################################################################
|
||||
# nginx preparing
|
||||
##################################################################
|
||||
#RUN wget -qO - ${NGINX_DOWNLOAD_URL} | tar -zxv --strip-components=1 -C ${NGINX_SRC_DIR} && \
|
||||
RUN cd ${SRC_DIR} && \
|
||||
hg clone https://hg.nginx.org/nginx-quic nginx && \
|
||||
cd ${NGINX_SRC_DIR} && \
|
||||
hg update quic && \
|
||||
hg clone http://hg.nginx.org/njs && \
|
||||
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/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} && \
|
||||
./auto/configure `nginx -V 2>&1 | sed "s/ \-\-/ \\\ \n\t--/g" | grep "\-\-" | grep -ve opt= -e param= -e build=` \
|
||||
--build=nginx-quic \
|
||||
--add-module=./njs/nginx \
|
||||
--with-openssl=/builds/src/boringssl \
|
||||
--with-http_v3_module \
|
||||
--with-http_quic_module \
|
||||
--with-stream_quic_module \
|
||||
--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 -I/builds/src/nginx/boringssl/include -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 -L /builds/src/nginx/boringssl/build/ssl -L/builds/src/nginx/boringssl/build/crypto' \
|
||||
--with-cc-opt='-I/usr/local/include/luajit-2.1 -I/builds/src/boringssl/include -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/builds/src/boringssl/build/ssl -L/builds/src/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_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 && \
|
||||
# dpkg-buildpackage -b && \
|
||||
make && \
|
||||
# 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 && \
|
||||
rm -rfv /tmp/*
|
||||
|
||||
##################################################################
|
||||
##################################################################
|
||||
##################################################################
|
||||
|
||||
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/* && \
|
||||
rm -rfv /tmp/*
|
||||
|
||||
#Final config
|
||||
VOLUME ["/var/cache/nginx"]
|
||||
EXPOSE 80 443
|
||||
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
@ -1,19 +0,0 @@
|
||||
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
|
@ -1,291 +0,0 @@
|
||||
# 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
|
||||
```
|
@ -1,9 +0,0 @@
|
||||
version: '3.9'
|
||||
services:
|
||||
app:
|
||||
image: "epicmorg/nginx:${NGINX_VERSION}"
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
NGINX_VERSION: ${NGINX_VERSION}
|
||||
NGINX_DOWNLOAD_URL: ${NGINX_DOWNLOAD_URL}
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||
chown www-data:www-data /var/www -R
|
||||
echo "[nginx] Done"
|
||||
else
|
||||
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||
fi
|
||||
|
||||
echo "[nginx] Starting up"
|
||||
nginx -g 'daemon off;'
|
@ -1,111 +0,0 @@
|
||||
#!/bin/sh
|
||||
WORKDIRECTORY=$PWD
|
||||
ARCH=$(uname -m)
|
||||
if command -v git > /dev/null 2>&1; then
|
||||
echo "Checking git: OK"
|
||||
else
|
||||
echo "Checking git: FAILED, please install git"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if command -v cmake > /dev/null 2>&1; then
|
||||
echo "Checking cmake: OK"
|
||||
else
|
||||
echo "Checking cmake: FAILED, please install cmake"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if command -v curl > /dev/null 2>&1; then
|
||||
echo "Checking curl: OK"
|
||||
else
|
||||
echo "Checking curl: FAILED, please install curl"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d $WORKDIRECTORY/go ]; then
|
||||
PATH=$WORKDIRECTORY/go/bin:$PATH
|
||||
GOROOT=$WORKDIRECTORY/go
|
||||
if [ -z $GOROOT ];then
|
||||
NO_GOROOT_SYSTEM=true
|
||||
fi
|
||||
else
|
||||
if [ -z $GOROOT ];then
|
||||
if [ "$ARCH" = "x86_64" ]; then
|
||||
GOURL="https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-amd64.tar.gz"
|
||||
fi
|
||||
if [ "$ARCH" = "i386" ]; then
|
||||
GOURL="https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-386.tar.gz"
|
||||
fi
|
||||
if [ "$ARCH" = "armv6l" ]; then
|
||||
GOURL="https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-armv6l.tar.gz"
|
||||
fi
|
||||
if [ "$ARCH" = "armv7l" ]; then
|
||||
GOURL="https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-armv6l.tar.gz"
|
||||
fi
|
||||
if [ "$ARCH" = "" ]; then
|
||||
echo "Your architecture is not supported"
|
||||
fi
|
||||
echo "Downloading golang"
|
||||
curl -so $WORKDIRECTORY/go.tar.gz $GOURL
|
||||
tar -xzf $WORKDIRECTORY/go.tar.gz
|
||||
rm -rf $WORKDIRECTORY/go.tar.gz
|
||||
PATH=$WORKDIRECTORY/go/bin:$PATH
|
||||
GOROOT=$WORKDIRECTORY/go
|
||||
NO_GOROOT_SYSTEM=true
|
||||
fi
|
||||
fi
|
||||
|
||||
NETWORK_CHECK=$(curl -I -s --connect-timeout 5 https://github.com -w %{http_code} | tail -n1)
|
||||
|
||||
if [ -d $WORKDIRECTORY/boringssl ]; then
|
||||
cd $WORKDIRECTORY/boringssl
|
||||
git pull
|
||||
git reset --hard origin/master
|
||||
git am $WORKDIRECTORY/*.patch
|
||||
rm -rf $WORKDIRECTORY/boringssl/build
|
||||
rm -rf $WORKDIRECTORY/boringssl/build2
|
||||
rm -rf $WORKDIRECTORY/boringssl/.openssl
|
||||
else
|
||||
if [ "$NETWORK_CHECK" = "200" ]; then
|
||||
git clone --depth 1 https://github.com/google/boringssl.git $WORKDIRECTORY/boringssl
|
||||
cd $WORKDIRECTORY/boringssl
|
||||
git am $WORKDIRECTORY/*.patch
|
||||
else
|
||||
echo "Unable to connect to GitHub, please check your Internet availability"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir $WORKDIRECTORY/boringssl/build
|
||||
cd $WORKDIRECTORY/boringssl/build
|
||||
echo "Building Static libraries"
|
||||
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||
make -j`nproc`
|
||||
mkdir $WORKDIRECTORY/boringssl/build2
|
||||
cd $WORKDIRECTORY/boringssl/build2
|
||||
echo "Building Shared objects"
|
||||
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1
|
||||
make -j`nproc`
|
||||
mkdir $WORKDIRECTORY/boringssl/.openssl
|
||||
mkdir $WORKDIRECTORY/boringssl/.openssl/include
|
||||
mkdir $WORKDIRECTORY/boringssl/.openssl/include/openssl
|
||||
cd $WORKDIRECTORY/boringssl/.openssl/include/openssl
|
||||
ln $WORKDIRECTORY/boringssl/include/openssl/* .
|
||||
mkdir $WORKDIRECTORY/boringssl/.openssl/lib
|
||||
mkdir $WORKDIRECTORY/boringssl/lib
|
||||
cp $WORKDIRECTORY/boringssl/build/crypto/libcrypto.a $WORKDIRECTORY/boringssl/.openssl/lib/libcrypto.a
|
||||
cp $WORKDIRECTORY/boringssl/build/ssl/libssl.a $WORKDIRECTORY/boringssl/.openssl/lib/libssl.a
|
||||
cp $WORKDIRECTORY/boringssl/build2/crypto/libcrypto.so $WORKDIRECTORY/boringssl/.openssl/lib/libcrypto.so
|
||||
cp $WORKDIRECTORY/boringssl/build2/ssl/libssl.so $WORKDIRECTORY/boringssl/.openssl/lib/libssl.so
|
||||
|
||||
echo "If you want to compile nginx"
|
||||
echo "git am nginx-boringssl/*.patch in nginx source directory"
|
||||
echo "and"
|
||||
echo "Configure nginx with \"--with-openssl=$WORKDIRECTORY/boringssl\". Use nginx version >= 1.15 for best result."
|
||||
echo ""
|
||||
#if [ "$NO_GOROOT_SYSTEM" = "true" ]; then
|
||||
#echo "Runing"
|
||||
#echo "export PATH=$WORKDIRECTORY/go/bin:\$PATH"
|
||||
#echo "export GOROOT=$WORKDIRECTORY/go"
|
||||
#echo "If you want to compile nginx"
|
||||
#fi
|
@ -1 +0,0 @@
|
||||
Custom build of ip2location lib by EpicMorg.
|
@ -1 +0,0 @@
|
||||
Custom build of luajit2 for Nginx module, by EpicMorg.
|
@ -1 +0,0 @@
|
||||
Custom build of Nginx with some modules by EpicMorg.
|
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
NGINX_VERSION=latest
|
||||
NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.23.2.tar.gz
|
@ -1,131 +0,0 @@
|
||||
##################################################################
|
||||
# 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"]
|
@ -1,19 +0,0 @@
|
||||
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
|
@ -1,78 +0,0 @@
|
||||
# RTMP-HLS Docker
|
||||
|
||||
**BASED ON** [TareqAlqutami/rtmp-hls-server](https://github.com/TareqAlqutami/rtmp-hls-server)
|
||||
|
||||
**Docker image for video streaming server that supports RTMP, HLS, and DASH streams.**
|
||||
|
||||
## Description
|
||||
|
||||
This Docker image can be used to create a video streaming server that supports [**RTMP**](https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol), [**HLS**](https://en.wikipedia.org/wiki/HTTP_Live_Streaming), [**DASH**](https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP) out of the box.
|
||||
It also allows adaptive streaming and custom transcoding of video streams.
|
||||
All modules are built from source on Debian and Alpine Linux base images.
|
||||
|
||||
## Features
|
||||
* The backend is [**Nginx**](http://nginx.org/en/) with [**nginx-rtmp-module**](https://github.com/arut/nginx-rtmp-module).
|
||||
* [**FFmpeg**](https://www.ffmpeg.org/) for transcoding and adaptive streaming.
|
||||
* Default settings:
|
||||
* RTMP is ON
|
||||
* HLS is ON (adaptive, 5 variants)
|
||||
* DASH is ON
|
||||
* Other Nginx configuration files are also provided to allow for RTMP-only streams or no-FFmpeg transcoding.
|
||||
* Statistic page of RTMP streams at `http://<server ip>:<server port>/stats`.
|
||||
* Available web video players (based on [video.js](https://videojs.com/) and [hls.js](https://github.com/video-dev/hls.js/)) at `/usr/share/nginx/html/players`.
|
||||
|
||||
## Usage
|
||||
|
||||
### To run the server
|
||||
```
|
||||
docker run -d -p 1935:1935 -p 8080:8080 epicmorg/balancer:rtmp-hls
|
||||
```
|
||||
|
||||
To run with custom conf file:
|
||||
```
|
||||
docker run -d -p 1935:1935 -p 8080:8080 -v custom.conf:/etc/nginx/nginx.conf epicmorg/balancer:rtmp-hls
|
||||
```
|
||||
where `custom.conf` is the new conf file for Nginx.
|
||||
|
||||
### To stream to the server
|
||||
* **Stream live RTMP content to:**
|
||||
```
|
||||
rtmp://<server ip>:1935/live/<stream_key>
|
||||
```
|
||||
where `<stream_key>` is any stream key you specify.
|
||||
|
||||
* **Configure [OBS](https://obsproject.com/) to stream content:** <br />
|
||||
Go to Settings > Stream, choose the following settings:
|
||||
* Service: Custom Streaming Server.
|
||||
* Server: `rtmp://<server ip>:1935/live`.
|
||||
* Stream key: anything you want, however provided video players assume stream key is `test`
|
||||
|
||||
### To view the stream
|
||||
* **Using [VLC](https://www.videolan.org/vlc/index.html):**
|
||||
* Go to Media > Open Network Stream.
|
||||
* Enter the streaming URL: `rtmp://<server ip>:1935/live/<stream-key>`
|
||||
Replace `<server ip>` with the IP of where the server is running, and
|
||||
`<stream-key>` with the stream key you used when setting up the stream.
|
||||
* For HLS and DASH, the URLs are of the forms:
|
||||
`http://<server ip>:8080/hls/<stream-key>.m3u8` and
|
||||
`http://<server ip>:8080/dash/<stream-key>_src.mpd` respectively.
|
||||
* Click Play.
|
||||
|
||||
* **Using provided web players:** <br/>
|
||||
The provided demo players assume the stream-key is called `test` and the player is opened in localhost.
|
||||
* To play RTMP content (requires Flash): `http://localhost:8080/players/rtmp.html`
|
||||
* To play HLS content: `http://localhost:8080/players/hls.html`
|
||||
* To play HLS content using hls.js library: `http://localhost:8080/players/hls_hlsjs.html`
|
||||
* To play DASH content: `http://localhost:8080/players/dash.html`
|
||||
* To play RTMP and HLS contents on the same page: `http://localhost:8080/players/rtmp_hls.html`
|
||||
|
||||
**Notes:**
|
||||
|
||||
* These web players are hardcoded to play stream key "test" at localhost.
|
||||
* To change the stream source for these players. Download the html files and modify the `src` attribute in the video tag in the html file. You can then mount the modified files to the container as follows:
|
||||
```
|
||||
docker run -d -p 1935:1935 -p 8080:8080 -v custom_players:/usr/share/nginx/html/players epicmorg/balancer:rtmp-hls
|
||||
```
|
||||
where `custom_players` is the directory holding the modified html files.
|
||||
|
||||
|
@ -1,134 +0,0 @@
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,118 +0,0 @@
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
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}
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z "${FIX_WWW_DATA}" ]]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is not set. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "false" ]; then
|
||||
echo "[nginx] env FIX_WWW_DATA is set to false. Skipping..."
|
||||
elif [ "${FIX_WWW_DATA}" == "true" ]; then
|
||||
echo "[nginx] Changing permissions for /var/www path. Dont worry, please wait."
|
||||
chown www-data:www-data /var/www -R
|
||||
echo "[nginx] Done"
|
||||
else
|
||||
echo "[nginx] env FIX_WWW_DATA is set to strange value. Skipping..."
|
||||
fi
|
||||
|
||||
echo "[nginx] Starting up"
|
||||
nginx -g 'daemon off;'
|
@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>DASH Live Streaming</title>
|
||||
<link href="https://vjs.zencdn.net/7.5.5/video-js.css" rel="stylesheet">
|
||||
<script src="https://vjs.zencdn.net/7.5.5/video.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>DASH Player</h1>
|
||||
<video id="player" class="video-js vjs-default-skin" width="720" controls preload="auto">
|
||||
<source src="/dash/test_src.mpd" type="application/dash+xml" />
|
||||
</video>
|
||||
<script>
|
||||
var player = videojs('#player');
|
||||
</script>
|
||||
|
||||
<div id="footer">
|
||||
<font size="2"> Tareq-Alqutami - 2019</font>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>HLS Live Streaming</title>
|
||||
<link href="https://vjs.zencdn.net/7.5.5/video-js.css" rel="stylesheet">
|
||||
<script src="https://vjs.zencdn.net/7.5.5/video.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>HLS Player</h1>
|
||||
<video id="player" class="video-js vjs-default-skin" width="720" controls preload="auto">
|
||||
<source src="/hls/test.m3u8" type="application/x-mpegURL" />
|
||||
</video>
|
||||
<script>
|
||||
var player = videojs('#player');
|
||||
</script>
|
||||
|
||||
<div id="footer">
|
||||
<font size="2"> Tareq-Alqutami - 2019</font>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,41 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>HLS streaming</title>
|
||||
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>HLS Player (using hls.js)</h1>
|
||||
|
||||
<div class="well">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<video id="video" style="max-height: 50%" class="embed-responsive-item video-js vjs-default-skin" controls muted="muted"></video>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
if(Hls.isSupported()) {
|
||||
var video = document.getElementById('video');
|
||||
var hls = new Hls();
|
||||
hls.loadSource('/hls/test.m3u8');
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="footer">
|
||||
<font size="2">Tareq-Alqutami - 2019</font>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,24 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>RTMP Live Streaming</title>
|
||||
<title>Live Streaming</title>
|
||||
<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
|
||||
<script src="https://unpkg.com/video.js/dist/video.js"></script>
|
||||
<script src="https://unpkg.com/videojs-flash/dist/videojs-flash.min.js"></script>
|
||||
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>RTMP Player</h1>
|
||||
<video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="720"
|
||||
data-setup='{"techOrder": ["html5","flash"]}'>
|
||||
<source src="rtmp://127.0.0.1:1935/live/test" type="rtmp/mp4">
|
||||
</video>
|
||||
|
||||
<div id="footer">
|
||||
<font size="2">Tareq Alqutami - 2019</font>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,30 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Live Streaming</title>
|
||||
<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
|
||||
<script src="https://unpkg.com/video.js/dist/video.js"></script>
|
||||
<script src="https://unpkg.com/videojs-flash/dist/videojs-flash.min.js"></script>
|
||||
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>RTMP Player</h1>
|
||||
<video id="rtmp_video" class="video-js vjs-default-skin" controls preload="auto" width="720"
|
||||
data-setup='{"techOrder": ["html5","flash"]}'>
|
||||
<source src="rtmp://127.0.0.1:1935/live/test" type="rtmp/mp4">
|
||||
</video>
|
||||
|
||||
<h1>HLS Player</h1>
|
||||
<video id="hls_video" class="video-js vjs-default-skin" controls preload="auto" width="720"
|
||||
data-setup='{"techOrder": ["html5","flash"]}'>
|
||||
<source src="http://127.0.0.1:8080/hls/test.m3u8" type="application/x-mpegURL">
|
||||
</video>
|
||||
|
||||
<div id="footer">
|
||||
<font size="2">Tareq Alqutami - 2019</font>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,19 +0,0 @@
|
||||
#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
|
@ -1,19 +0,0 @@
|
||||
#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
|
@ -1,19 +0,0 @@
|
||||
#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
|
Loading…
Reference in New Issue
Block a user