Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ditatompel/nginx-kickstart
A bash script that helped me install Nginx + GeoIP module from official repository and optionally compile VTS module on FRESH Debian or Ubuntu system.
https://github.com/ditatompel/nginx-kickstart
kickstart nginx nginx-configuration nginx-vts
Last synced: 24 days ago
JSON representation
A bash script that helped me install Nginx + GeoIP module from official repository and optionally compile VTS module on FRESH Debian or Ubuntu system.
- Host: GitHub
- URL: https://github.com/ditatompel/nginx-kickstart
- Owner: ditatompel
- License: mit
- Created: 2024-04-23T12:15:12.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-06-07T16:06:29.000Z (8 months ago)
- Last Synced: 2024-11-10T08:38:44.652Z (3 months ago)
- Topics: kickstart, nginx, nginx-configuration, nginx-vts
- Language: Shell
- Homepage:
- Size: 55.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Nginx Kickstart
![Test Action](https://github.com/ditatompel/nginx-kickstart/actions/workflows/test.yml/badge.svg?branch=main)
A bash script that helped me install Nginx + GeoIP module (and optionally compile VTS module, with example config) on FRESH **Debian** or **Ubuntu** system.
> **NOTE**: Only tested on **Debian** `12` and **Ubuntu** `22.04`.
>
> **WARNING**: **DO NOT** run this script if you:
>
> - Already have Nginx installed using distribution-provided package.
> - Have process that use port 80 and 443.
>
> **WARNING**: Using a dynamic module with Nginx will prevent it from starting
> if there is an update (for example, from 1.26.0 to 1.26.1). In this case,
> downtime can't be avoided and you need to recompile the dynamic module again.
> To recompile the module, you can re-execute `sudo ./kickstart.sh -V` again.## What does this script do?
When you run the `kickstart.sh` script with `-I` option:
1. Update your system packages and install required packages.
2. Import official Nginx signing key to `/usr/share/keyrings/nginx-archive-keyring.gpg`.
3. Add Nginx apt repository to `/etc/apt/sources.list.d/nginx.list`.
4. Prioritize Nginx official packages over distribution-provided ones.
5. Install `nginx` and `nginx-module-geoip`.
6. Create "boilerplate" directory (`/etc/nginx/{certs,sites-enabled,snippets}`).
7. Generate self-signed certificate and DH Params key exchange.When you run the `kickstart.sh` scipt with `-V` option:
1. Install required packages to compile Nginx VTS module (`git`, `build-essential`, `libpcre3-dev`, `zlib1g-dev`, and `libssl-dev`).
2. Download your current running Nginx version archive from `https://nginx.org/download` and place it to `./compile` directory.
3. Clone [vozlt/nginx-module-vts](https://github.com/vozlt/nginx-module-vts.git) and compile the dynamic module.
4. Copy compiled VTS module to `/etc/nginx/modules/ngx_http_vhost_traffic_status_module.so`.
5. Restart nginx service## Usage
```shell
# Clone this repository
git clone https://github.com/ditatompel/nginx-kickstart.git && cd nginx-kickstart
# To install Nginx with GeoIP module
sudo ./kickstart.sh -I
# To compile Nginx VTS module
sudo ./kickstart.sh -V
```If 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:
```
sudo cp -rT ./etc/nginx /etc/nginx && \
sudo /etc/nginx/cloudflare-ips.sh
```By 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.
If you following usage instruction above, your `/etc/nginx` directory structure should similar like this:
```
.
|-- cloudflare-ips.sh
|-- conf.d
| `-- default.conf
|-- fastcgi_params
|-- mime.types
|-- modules -> /usr/lib/nginx/modules
|-- nginx.conf
|-- scgi_params
|-- sites-available
| `-- example.local.conf
|-- sites-enabled
|-- snippets
| |-- cloudflare_geoip_proxy.conf
| |-- cloudflare_real_ips.conf
| |-- cloudflare_whitelist.conf
| `-- ssl-params.conf
|-- certs
| |-- dhparam.pem
| |-- fullchain.pem
| `-- privkey.pem
`-- uwsgi_params
```## Attributions and Resources
- [nginx.org](https://nginx.org/en/).
- [vozlt/nginx-module-vts](https://github.com/vozlt/nginx-module-vts): Nginx virtual host traffic status module.
- [itsjfx/cloudflare-nginx-ips](https://github.com/itsjfx/cloudflare-nginx-ips.git).