DEV Community

Akshat Mehta
Akshat Mehta

Posted on

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

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Then:

sudo easynginx create
Enter fullscreen mode Exit fullscreen mode

Answer a few prompts:

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

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
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)