Nginx UI: a self-hosted web interface for Nginx configuration, certificates and clusters
Yet another WebUI for Nginx. Online editing websites configurations with our self-designed **NgxConfigEditor** which is a user-friendly block editor for nginx configurations or **Ace Code Editor** which supports **LLM Code Completion** and highlighting nginx configuration syntax.
At a glance
- What is it?
- Nginx UI is a Go and Vue web interface that edits Nginx site files in the Debian sites-available layout, tests and reloads on save, and issues Let's Encrypt certificates. It is AGPL-3.0, ships as a single binary or a Docker image, and assumes you already know how Nginx works.
- Who is it for?
- Adopt Nginx UI if you already administer Nginx by hand on Debian-style hosts and want a UI for site files, certificate renewal and multi-node mirroring, and if AGPL-3.0 fits how you distribute the software. Skip it if you run a non-Debian layout you cannot convert, or if you want a proxy manager that hides Nginx entirely.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Nginx UI actually replaces in an Nginx workflow
The project calls itself "Yet another Nginx Web UI" and is maintained by 0xJacky, Hintay and Akino. It targets people who already run Nginx and are tired of SSH plus a text editor for every site change. The README lists the concrete chores it covers: server statistics for CPU, memory, load average and disk usage; automatic configuration backup after changes with version comparison and restore; cluster management that mirrors operations to multiple nodes; encrypted export of Nginx and Nginx UI configurations; one-click Let's Encrypt issuance and automatic renewal; online log viewing; a web terminal; and an automatic test-and-reload after saving a configuration. That last item is the core of the pitch. The failure mode it removes is the classic one: you edit a config, reload, and take the site down because of a typo. Nginx UI runs the test before reloading. It is not a tool for someone who has never written an Nginx block. The README's Before Use section assumes you understand the Debian file layout and are willing to adjust your own config to match it.
The Debian sites-available assumption and how config edits flow
Nginx UI follows the Debian web server configuration standard. Created site configuration files go into the sites-available folder under the Nginx configuration folder, which the app auto-detects, and enabling a site creates a soft link in sites-enabled. For non-Debian and non-Ubuntu systems, the README says you may need to change nginx.conf to the Debian style, and gives an http block example with include /etc/nginx/conf.d/*.conf; and an include for sites-enabled. This is the single largest constraint in the project, and it is a deliberate one. The UI is not a layer that reads arbitrary config trees; it expects that structure. Editing happens in one of two editors. NgxConfigEditor is a block editor built for Nginx directives, aimed at people who want form-like editing. Ace Code Editor is the alternative, with syntax highlighting and what the README describes as LLM code completion. Both feed the same save path: write the file, back it up, test the configuration, and reload Nginx. The Dockerfile shows the same layout is created inside the image, with mkdir for /etc/nginx/sites-available, /etc/nginx/sites-enabled, /etc/nginx/streams-available and /etc/nginx/streams-enabled, so stream blocks get the same treatment as http sites.
Installing Nginx UI and reaching the web interface for the first time
The README documents three routes: a single executable, systemd, and Docker. The repository also carries install.sh at its root and a Dockerfile that builds on the official nginx image. The Docker image is published as uozi/nginx-ui on Docker Hub. The Dockerfile sets NGINX_UI_OFFICIAL_DOCKER=true and NGINX_UI_WORKING_DIR=/var/run/, and exposes ports 80 and 443; the app's own listening port is not stated in the README, so check the documentation site at nginxui.com for the port your deployment should publish. The Dockerfile's own layout, with the Nginx configuration under /etc/nginx and the exposed ports, is the part you can copy directly:
ARG NGINX_VERSION=latest
FROM nginx:${NGINX_VERSION}
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG S6_OVERLAY_VERSION=3.2.1.0
EXPOSE 80 443
ENV DEBIAN_FRONTEND=noninteractive
ENV NGINX_UI_OFFICIAL_DOCKER=true
ENV NGINX_UI_WORKING_DIR=/var/run/Those environment variables and the exposed ports are the deployment contract of the official image. On a host, the README's install script route is install.sh; the executable route is a single binary you run directly. The README also points to a live demo at demo.nginxui.com with the username admin and password admin, which is the fastest way to see the editors and the certificate screens before you commit a server. Do not reuse those credentials anywhere real. The README does not document a rollback procedure for an upgrade, so export your configuration before changing versions.
Certificates, clusters and the AI features that sit on top
Let's Encrypt handling is one of the features the README lists explicitly: one-click deployment and automatic renewal. The Go module list includes github.com/go-acme/lego/v5, the ACME client, alongside DNS provider SDKs for Cloudflare, Azure, Alibaba Cloud and Huawei Cloud, which is consistent with DNS-01 style issuance across providers rather than HTTP-01 only. Cluster management mirrors operations to multiple nodes. The README describes it as supporting mirroring operations to multiple nodes to make multi-server environments easy to manage, which is a real convenience and also the riskiest feature in the product: a mirrored change is a change applied in several places at once, and the backup and version comparison features are what you rely on when one of those nodes rejects it. Separately, the project ships an MCP server, described as special interfaces for AI agents to interact with Nginx UI for automated configuration management and service control, and a ChatGPT-style assistant supporting multiple models. The go.mod file includes github.com/mark3labs/mcp-go, and the repository has a top-level mcp/ directory. Treat the agent interface as a second way to make the same changes the UI makes, with the same blast radius.
Where Nginx UI is the wrong tool
The Debian layout requirement is a hard boundary. If your Nginx configuration is generated by a template engine, managed by a configuration management system, or laid out in a way you cannot convert to sites-available and sites-enabled, Nginx UI will fight you, and converting nginx.conf to satisfy it may break the tooling that writes it. The second boundary is scope. Nginx UI edits Nginx; it does not abstract it away. Anyone who wants a reverse proxy panel where the underlying server is an implementation detail will find the block editor and the raw config editor more exposure than they wanted. Third, the bundled Docker image runs Nginx and Nginx UI under s6-overlay in one container, which is convenient for a single host and awkward if your platform expects one process per container or if you already run Nginx outside Docker. Fourth, the AI assistant and MCP server are additional attack surface on a service that holds your TLS private keys and can reload your web server. The README does not describe an approval step between an agent request and a reload. If you enable those interfaces, that gap is yours to close at the network layer.
Nginx UI compared with Nginx Proxy Manager
The comparison people search for is Nginx UI versus Nginx Proxy Manager, and the difference is the level of abstraction. Nginx Proxy Manager presents hosts, certificates and forward rules as its own data model and generates the Nginx configuration for you. Nginx UI exposes the Nginx configuration itself: the block editor maps to directives, the Ace editor shows the file, and the file lives in sites-available exactly as it would if you had written it over SSH. That means an Nginx UI user needs to know what a location block does; a Proxy Manager user can get by without it. The trade runs the other way too. Because Nginx UI keeps the real files, you can drop to a shell, edit a config by hand, and the UI will still see it, and you can take the configuration with you if you stop using the tool. The README's encrypted export feature exists for exactly that kind of migration. If your team already writes Nginx by hand and wants a UI on top, Nginx UI matches that mental model. If nobody on the team wants to read Nginx syntax, the abstraction is the point and this is not it.
Licence, maintenance and what an upgrade costs you
Nginx UI is licensed AGPL-3.0. The practical consequence, stated plainly and not as legal advice: if you modify the software and let users interact with it over a network, the AGPL's source-availability obligation is the thing to read before you ship it inside a product. Running it unmodified to administer your own servers is the ordinary case. On maintenance, the repository is not archived and the last push was on 2026-08-29, with releases v2.5.8, v2.5.9 and v2.5.10 landing between 2026-08-13 and 2026-08-21. That is a steady release cadence. The upgrade cost is not the binary swap; it is the configuration surface around it. The app has its own settings file, app.example.ini is in the repository root, and the Dockerfile sets environment variables such as NGINX_UI_WORKING_DIR, so a version that changes a setting key or a working directory assumption is a deployment change, not just a restart. The README does not document a rollback path for a bad upgrade, which makes the encrypted configuration export the practical safety net. Export before you upgrade, and keep the previous binary or image tag until the new one has served traffic.
Editorial conclusion
Adopt Nginx UI if you already administer Nginx by hand on Debian-style hosts and want a UI for site files, certificate renewal and multi-node mirroring, and if AGPL-3.0 fits how you distribute the software. Skip it if you run a non-Debian layout you cannot convert, or if you want a proxy manager that hides Nginx entirely. Before deploying, verify which port the app binds to and confirm your nginx.conf includes sites-enabled, because the README states created site files go to sites-available and are symlinked into sites-enabled, and a config that does not include that directory will not load them.
Frequently asked questions
What is Nginx UI?
It is a web interface for Nginx, written in Go and Vue and distributed as a single executable binary, that edits site configuration files, backs them up, tests and reloads Nginx after saving, and manages Let's Encrypt certificates. It follows the Debian sites-available and sites-enabled layout rather than abstracting Nginx away.
How do I install Nginx UI?
The README documents three routes: running the single executable, using systemd, or Docker. The repository also contains install.sh, and the image is published as uozi/nginx-ui on Docker Hub, built on the official nginx image with ports 80 and 443 exposed.
How do I access Nginx UI?
It serves a web interface on the port your deployment publishes; the Dockerfile exposes 80 and 443, and the README does not state the application's own port, so check nginxui.com for the value. A hosted demo is available at demo.nginxui.com with the username admin and password admin.
Is Nginx UI free?
It is open source under AGPL-3.0, so there is no licence fee. The README asks for sponsorship to support development, and the AGPL carries source-availability obligations if you modify the software and expose it to users over a network.
What are the key differences between NGINX Proxy Manager and NGINX UI?
Nginx Proxy Manager generates the Nginx configuration from its own host and certificate model, while Nginx UI edits the real Nginx files in sites-available and symlinks them into sites-enabled. Nginx UI therefore requires you to understand Nginx directives, but leaves you a configuration you can read and keep.
How do I set up Nginx UI on a non-Debian system?
The README states it follows the Debian configuration standard and that on non-Debian and non-Ubuntu systems you may need to change nginx.conf to the Debian style, including /etc/nginx/conf.d/*.conf and the sites-enabled directory, so that created site files are loaded.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/0xjacky-nginx-ui)