{"id":19374607,"url":"https://github.com/ditatompel/nginx-kickstart","last_synced_at":"2026-05-12T20:38:32.587Z","repository":{"id":236114060,"uuid":"790724784","full_name":"ditatompel/nginx-kickstart","owner":"ditatompel","description":"A bash script that helped me install Nginx + GeoIP module from official repository and optionally compile VTS module on FRESH Debian or Ubuntu system.","archived":false,"fork":false,"pushed_at":"2024-06-07T16:06:29.000Z","size":57,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-07T03:00:05.448Z","etag":null,"topics":["kickstart","nginx","nginx-configuration","nginx-vts"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/ditatompel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-23T12:15:12.000Z","updated_at":"2024-06-07T16:02:20.000Z","dependencies_parsed_at":"2024-06-07T16:05:12.399Z","dependency_job_id":"328698a1-7b2c-4df2-977b-1bfef49876ec","html_url":"https://github.com/ditatompel/nginx-kickstart","commit_stats":null,"previous_names":["ditatompel/ngx-kickstart","ditatompel/nginx-kickstart"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fnginx-kickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fnginx-kickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fnginx-kickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fnginx-kickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ditatompel","download_url":"https://codeload.github.com/ditatompel/nginx-kickstart/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240501648,"owners_count":19811648,"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":["kickstart","nginx","nginx-configuration","nginx-vts"],"created_at":"2024-11-10T08:35:41.811Z","updated_at":"2026-05-12T20:38:32.548Z","avatar_url":"https://github.com/ditatompel.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nginx Kickstart\n\n![Test Action](https://github.com/ditatompel/nginx-kickstart/actions/workflows/test.yml/badge.svg?branch=main)\n\nA bash script that helped me install Nginx + GeoIP module (and optionally compile VTS module, with example config) on FRESH **Debian** or **Ubuntu** system.\n\n\u003e **NOTE**: Only tested on **Debian** `12` and **Ubuntu** `22.04`.\n\u003e\n\u003e **WARNING**: **DO NOT** run this script if you:\n\u003e\n\u003e - Already have Nginx installed using distribution-provided package.\n\u003e - Have process that use port 80 and 443.\n\u003e\n\u003e **WARNING**: Using a dynamic module with Nginx will prevent it from starting\n\u003e if there is an update (for example, from 1.26.0 to 1.26.1). In this case,\n\u003e downtime can't be avoided and you need to recompile the dynamic module again.\n\u003e To recompile the module, you can re-execute `sudo ./kickstart.sh -V` again.\n\n## What does this script do?\n\nWhen you run the `kickstart.sh` script with `-I` option:\n\n1. Update your system packages and install required packages.\n2. Import official Nginx signing key to `/usr/share/keyrings/nginx-archive-keyring.gpg`.\n3. Add Nginx apt repository to `/etc/apt/sources.list.d/nginx.list`.\n4. Prioritize Nginx official packages over distribution-provided ones.\n5. Install `nginx` and `nginx-module-geoip`.\n6. Create \"boilerplate\" directory (`/etc/nginx/{certs,sites-enabled,snippets}`).\n7. Generate self-signed certificate and DH Params key exchange.\n\nWhen you run the `kickstart.sh` scipt with `-V` option:\n\n1. Install required packages to compile Nginx VTS module (`git`, `build-essential`, `libpcre3-dev`, `zlib1g-dev`, and `libssl-dev`).\n2. Download your current running Nginx version archive from `https://nginx.org/download` and place it to `./compile` directory.\n3. Clone [vozlt/nginx-module-vts](https://github.com/vozlt/nginx-module-vts.git) and compile the dynamic module.\n4. Copy compiled VTS module to `/etc/nginx/modules/ngx_http_vhost_traffic_status_module.so`.\n5. Restart nginx service\n\n## Usage\n\n```shell\n# Clone this repository\ngit clone https://github.com/ditatompel/nginx-kickstart.git \u0026\u0026 cd nginx-kickstart\n# To install Nginx with GeoIP module\nsudo ./kickstart.sh -I\n# To compile Nginx VTS module\nsudo ./kickstart.sh -V\n```\n\nIf this is your first time running the script and don't have any existing Nginx configuration that you already set, you can simply copy files and directory under [./etc/nginx](./etc/nginx) to your `/etc/nginx` directory by issuing this command:\n\n```\nsudo cp -rT ./etc/nginx /etc/nginx \u0026\u0026 \\\n    sudo /etc/nginx/cloudflare-ips.sh\n```\n\nBy default, Nginx VTS module is not loaded, search for `vhost_traffic_status` keywords in [./etc/nginx/nginx.conf](./etc/nginx/nginx.conf), [./etc/nginx/conf.d/default.conf](./etc/nginx/conf.d/default.conf), and [./etc/nginx/sites-available/example.local.conf](./etc/nginx/sites-available/example.local.conf) and uncomment that configuration example.\n\nIf you following usage instruction above, your `/etc/nginx` directory structure should similar like this:\n\n```\n.\n|-- cloudflare-ips.sh\n|-- conf.d\n|   `-- default.conf\n|-- fastcgi_params\n|-- mime.types\n|-- modules -\u003e /usr/lib/nginx/modules\n|-- nginx.conf\n|-- scgi_params\n|-- sites-available\n|   `-- example.local.conf\n|-- sites-enabled\n|-- snippets\n|   |-- cloudflare_geoip_proxy.conf\n|   |-- cloudflare_real_ips.conf\n|   |-- cloudflare_whitelist.conf\n|   `-- ssl-params.conf\n|-- certs\n|   |-- dhparam.pem\n|   |-- fullchain.pem\n|   `-- privkey.pem\n`-- uwsgi_params\n```\n\n## Attributions and Resources\n\n- [nginx.org](https://nginx.org/en/).\n- [vozlt/nginx-module-vts](https://github.com/vozlt/nginx-module-vts): Nginx virtual host traffic status module.\n- [itsjfx/cloudflare-nginx-ips](https://github.com/itsjfx/cloudflare-nginx-ips.git).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fditatompel%2Fnginx-kickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fditatompel%2Fnginx-kickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fditatompel%2Fnginx-kickstart/lists"}