{"id":22317525,"url":"https://github.com/k44sh/nginx","last_synced_at":"2026-04-10T21:05:46.545Z","repository":{"id":214406726,"uuid":"736439352","full_name":"k44sh/nginx","owner":"k44sh","description":"Docker of the NGINX web server based on Alpine Linux","archived":false,"fork":false,"pushed_at":"2024-10-20T18:02:27.000Z","size":117831,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T04:07:56.964Z","etag":null,"topics":["alpine","docker","geoip2","nginx","php","rtmp","web"],"latest_commit_sha":null,"homepage":"","language":"XSLT","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/k44sh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"k44sh","custom":"https://www.paypal.me/k4sh"}},"created_at":"2023-12-27T23:08:09.000Z","updated_at":"2024-10-20T20:34:52.000Z","dependencies_parsed_at":"2024-07-19T10:24:21.682Z","dependency_job_id":null,"html_url":"https://github.com/k44sh/nginx","commit_stats":null,"previous_names":["k44sh/nginx"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k44sh%2Fnginx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k44sh%2Fnginx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k44sh%2Fnginx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k44sh%2Fnginx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/k44sh","download_url":"https://codeload.github.com/k44sh/nginx/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245585806,"owners_count":20639671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","docker","geoip2","nginx","php","rtmp","web"],"created_at":"2024-12-03T23:09:59.609Z","updated_at":"2026-04-10T21:05:46.489Z","avatar_url":"https://github.com/k44sh.png","language":"XSLT","funding_links":["https://github.com/sponsors/k44sh","https://www.paypal.me/k4sh"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/k44sh/nginx\" target=\"_blank\"\u003e\u003cimg width=\"800\" src=\".screens/nginx.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-Alpine%20Linux-blue?logo=alpinelinux\" alt=\"Alpine Linux\"\u003e\n  \u003ca href=\"https://gitlab.com/cyberpnkz/nginx/-/pipelines/latest\"\u003e\u003cimg src=\"https://img.shields.io/gitlab/pipeline-status/cyberpnkz/nginx?logo=gitlab\u0026label=Build\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/k44sh/nginx\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/k44sh/nginx?logo=github\u0026label=Stars\" alt=\"Github Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://raw.githubusercontent.com/k44sh/nginx/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/k44sh/nginx?label=License\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://hub.docker.com/r/k44sh/nginx/tags?page=1\u0026ordering=last_updated\"\u003e\u003cimg src=\"https://img.shields.io:/docker/v/k44sh/nginx/latest?logo=docker\u0026label=Version\" alt=\"Latest Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/k44sh/nginx/tags\"\u003e\u003cimg src=\"https://img.shields.io:/docker/image-size/k44sh/nginx/latest?logo=docker\u0026label=Size\" alt=\"Docker Size\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/k44sh/nginx/tags\"\u003e\u003cimg src=\"https://img.shields.io:/docker/pulls/k44sh/nginx?logo=docker\u0026label=Pull\" alt=\"Docker Pulls\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## About\n\n[NGINX](https://nginx.org/) and [PHP](https://www.php.net/) Docker image based on [Alpine Linux](https://www.alpinelinux.org/).\u003cbr/\u003e\n___\n\n## Features\n\n* Latest [NGINX](https://nginx.org/download) with latest [PHP 8.3](https://www.php.net/releases/8.1/en.php) from `Alpine` repository\n* [GeoIP2](https://www.maxmind.com/en/geoip-databases) database by [MaxMind](https://www.maxmind.com) (Update with your own key)\n* [s6-overlay](https://github.com/just-containers/s6-overlay) process supervisor\n* Run as non-root user\n* Multi-platform image\n\n## Modules\n\n| **Module**                                                                            | **Desctiption**                                               |\n| :------------------------------------------------------------------------------------ | :------------------------------------------------------------ |\n| [nginx-mod-http-brotli](https://github.com/google/ngx_brotli)                         | Serves compressed responses with brotli (`Google`)            |\n| [nginx-mod-http-auth-jwt](https://github.com/kjdev/nginx-auth-jwt)                    | Client authorization (JSON Web Token (JWT) / OpenID Connect)  |\n| [nginx-mod-http-cookie-flag](https://github.com/AirisX/nginx_cookie_flag_module)      | Set the flags `HttpOnly`, `secure and` `SameSite` for cookies |\n| [nginx-mod-http-dav-ext](https://github.com/arut/nginx-dav-ext-module)                | Additional implementation for full WebDav compatibility       |\n| [nginx-mod-http-fancyindex](https://github.com/aperezdc/ngx-fancyindex)               | Like the built-in autoindex module, but fancier               |\n| [nginx-mod-http-geoip2](https://github.com/leev/ngx_http_geoip2_module)               | City and country code lookups via the MaxMind GeoIP2          |\n| [nginx-mod-http-headers-more](https://github.com/openresty/headers-more-nginx-module) | Set and clear input and output headers                        |\n| [nginx-mod-http-vts](https://github.com/vozlt/nginx-module-vts)                       | Virtual host and upstream traffic status                      |\n| [nginx-mod-rtmp](https://github.com/arut/nginx-rtmp-module)                           | RTMP protocol support. Live streaming and video on demand     |\n\n### Example\n\n#### VTS Module\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gitlab.com/cyberpnkz/nginx\" target=\"_blank\"\u003e\u003cimg width=\"60%\" src=\".screens/stats.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Supported platforms\n\n* linux/amd64\n* linux/arm64\n* linux/arm/v7\n\n## Usage\n\n### Docker Compose\n\nDocker compose is the recommended way to run this image.\n\nEdit the compose file with your preferences and run the following command:\n\n```shell\ngit clone https://github.com/k44sh/nginx.git\nmkdir -p {config,data}\ndocker-compose up -d\ndocker-compose logs -f\n```\n\n### Upgrade\n\nTo upgrade, pull the newer image and launch the container:\n\n```shell\ndocker-compose pull\ndocker-compose up -d\n```\n\n### Command line\n\nYou can also use the following minimal command:\n\n```shell\ndocker run --rm -d --name nginx \\\n  -p 80:8080/tcp \\\n  -p 1935:1935 \\\n  -e TZ=\"America/Toronto\" \\\n  k44sh/nginx \u0026\u0026 \\\n  docker logs -f nginx\n```\n\nOr this one for more customization:\n\n```shell\ndocker run --rm -d --name nginx \\\n  --ulimit nproc=65535 \\\n  --ulimit nofile=32000:40000 \\\n  --memory=2g \\\n  --cpus=4 \\\n  -p 80:8000/tcp \\\n  -p 1935:1935 \\\n  -e TZ=\"America/Toronto\" \\\n  -e PORT=\"8000\" \\\n  -e PUID=\"1002\" \\\n  -e PGID=\"1002\" \\\n  -e USER=\"docker\" \\\n  -e MM_ACCOUNT=\"XXXXXX\" \\\n  -e MM_LICENSE=\"xxxxxxxxxxxx\" \\\n  -e MEMORY_LIMIT=\"1024M\" \\\n  -e UPLOAD_MAX_SIZE=\"100M\" \\\n  k44sh/nginx \u0026\u0026 \\\n  docker logs -f nginx\n```\n\n## Environment Variables\n\n| **Variable**       | **Description**                                                                  |\n| :----------------- | :------------------------------------------------------------------------------- |\n| `TZ`               | The timezone assigned to the container (default `UTC`)                           |\n| `PORT`             | NGINX listening port (default `8080`)                                            |\n| `PUID`             | NGINX user id (default `1000`)                                                   |\n| `PGID`             | NGINX group id (default `1000`)                                                  |\n| `USER`             | The user name assigned to the container (default `docker`)                       |\n| `GEOIP2_CONF`      | Path to GeoIP2 configuration file (default `/etc/geoip2.conf`)                   |\n| `GEOIP2_PATH`      | Path to the GeoIP2 data directory (default `/geoip2`)                            |\n| `MM_ACCOUNT`       | **Your** MaxMind account ID                                                      |\n| `MM_LICENSE`       | **Your** MaxMind license key                                                     |\n| `MEMORY_LIMIT`     | PHP memory limit (default `512M`)                                                |\n| `UPLOAD_MAX_SIZE`  | Upload max size (default `16M`)                                                  |\n| `CLEAR_ENV`        | Clear environment in FPM workers (default `yes`)                                 |\n| `OPCACHE_MEM_SIZE` | PHP OpCache memory consumption (default `256`)                                   |\n| `MAX_FILE_UPLOADS` | The maximum number of files allowed to be uploaded simultaneously (default `50`) |\n\n### RTMP (Streaming)\n\n* `/var/www/stream/play.php`: Internal authentication to add an authentication when publishing a stream\n* `/var/www/stream/publish.php`: Internal authentication to add authentication to watch a stream\n\n```php\n// Accounts\n$accounts  =  array(\n  0  =\u003e  array(\n    \"name\"  =\u003e  \"user1\",\n    \"pass\"  =\u003e  \"xxxxxxxxxxxxxxxx\"\n  ),\n[...]\n```\n\nYou can configure OBS like this:\n\n* Server Example: `rtmp://192.168.1.1/stream`\n* Key Example: `user1?name=user1\u0026key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gitlab.com/cyberpnkz/nginx\" target=\"_blank\"\u003e\u003cimg src=\".screens/obs.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nYou can watch a stream like this:\n\n* Network URL: `rtmp://192.168.1.1/stream/user1?name=user1\u0026pass=xxxxxxxxxxxxxxxx`\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gitlab.com/cyberpnkz/nginx\" target=\"_blank\"\u003e\u003cimg src=\".screens/vlc.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nIf you want remove authentication, just comment the following directives in `nginx.conf`:\n\n* `on_publish` http://127.0.0.1:8080/stream/publish.php;\n* `on_play` http://127.0.0.1:8080/stream/play.php;\n\nDocumentation: [https://github.com/arut/nginx-rtmp-module/wiki/Directives](https://github.com/arut/nginx-rtmp-module/wiki/Directives)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk44sh%2Fnginx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk44sh%2Fnginx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk44sh%2Fnginx/lists"}