PRECISION

Initializing
Back to blog
1 min read|

I Built a Beginner-Friendly NGINX Automation CLI for Linux Servers

nginxlinuxdevopsOpen Source

I’ve configured NGINX manually more times than I can count.

Every server setup usually turns into the same repetitive process:

  • install nginx
  • configure virtual hosts
  • set up reverse proxies
  • issue SSL certificates
  • debug broken configs
  • reload nginx carefully
  • pray nginx -t succeeds

And for beginners, it gets worse fast.

Different Linux distros store configs differently.
Certbot behaves differently depending on packages.
One typo can break production.
Rollback is usually manual.

So instead of repeating the same setup process forever, I built EasyNGINX.

An automation-focused CLI that makes NGINX setup simpler, safer, and much faster across Linux distributions.


What It Does

EasyNGINX turns common NGINX operations into simple commands.

For example:

sudo easynginx create

That single command can:

  • generate reverse proxy configs
  • configure SSL automatically
  • validate configs before reload
  • open firewall ports
  • enable HTTPS
  • rollback safely if validation fails

Designed for Real Servers

One thing I specifically wanted to avoid was unsafe automation.

Every operation follows this workflow:

Snapshot → Write → nginx -t → Reload

If anything fails:

  • configs rollback automatically
  • nginx stays online
  • backups remain available

So the goal wasn't just convenience — it was reducing risk.


Supported Use Cases

EasyNGINX currently supports:

  • reverse proxies
  • static hosting
  • PHP-FPM
  • WebSockets
  • redirects
  • load balancing
  • SSL certificate management
  • backups & restore
  • security hardening
  • monitoring utilities

It also works across multiple Linux distributions including:

  • Ubuntu
  • Debian
  • Fedora
  • RHEL
  • Rocky Linux
  • AlmaLinux
  • Arch Linux

Example Workflow

Fresh VPS setup:

curl -fsSL https://raw.githubusercontent.com/nerkoux/EasyNGINX/main/install.sh | sudo bash

Then:

sudo easynginx create

Answer a few prompts:

Domain: api.example.com
Type: Reverse Proxy
Backend: http://127.0.0.1:3000
Enable SSL: Yes

And the site is live with HTTPS configured automatically.


Features I Personally Wanted

Some features were built specifically because I was tired of missing them in other tooling.

Automatic Rollback

Broken configs revert automatically.

Backup & Restore

sudo easynginx backup
sudo easynginx restore

Useful for migrations and recovery.

Security Features

Includes support for:

  • HSTS
  • fail2ban
  • ModSecurity
  • TLS profiles
  • bot blocking

Cluster Deployments

Deploy configurations across multiple servers with rollback support per host.


Tech Stack

Built using:

  • Python
  • Bash
  • NGINX
  • Certbot

Documentation is powered by Docusaurus and deployed using Vercel.


Open Source

GitHub:

https://github.com/nerkoux/EasyNGINX

Docs:

https://easynginx.akshatmehta.com

Feedback, ideas, and contributors are always welcome.