0xJacky/nginx-ui

DevOps & Self-hosting

A web interface for managing Nginx servers, editing configurations, issuing certificates, and viewing logs from a browser.

11,722
911
Go
AGPL-3.0
5 years old

What it does

Nginx UI is a self-hosted web panel for managing Nginx. It bundles a Go backend and a Vue frontend into a single executable and covers the day-to-day work of running an Nginx server: editing site configurations, testing and reloading Nginx after saving, viewing logs, monitoring CPU, memory, load, and disk usage, and deploying or renewing Let's Encrypt certificates in one click. Configuration changes are backed up automatically with version comparison and restore, and encrypted Nginx / Nginx UI configuration exports help move a setup to another machine. Cluster management can mirror operations across multiple nodes.

Configuration editing has two modes: a block-style NgxConfigEditor for site files, and the Ace editor with Nginx syntax highlighting and LLM code completion. An in-app chat assistant (supporting multiple models, including DeepSeek-R1 chain-of-thought display) and an MCP server for AI agents are also included. The panel is intended for people running Nginx on their own servers who want a browser UI instead of hand-editing files, not for developers looking for an Nginx library.

Quick start

The quickest supported path on Linux is the install script, which also installs Nginx UI as a systemd service named nginx-ui:

bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install

After installation, open the panel in a browser to finish setup. The default listening port is 9000 and the default HTTP Challenge port is 9180. If either conflicts with existing services, edit /usr/local/etc/nginx-ui/app.ini and run systemctl restart nginx-ui.

Docker is an alternative when you want the panel to replace the host's Nginx. The uozi/nginx-ui:latest image is based on the latest Nginx image; publish container ports 80 and 443 and mount an empty directory to /etc/nginx on first use:

docker run -dit \
  --name=nginx-ui \
  --restart=always \
  -e TZ=Asia/Shanghai \
  -v /mnt/user/appdata/nginx:/etc/nginx \
  -v /mnt/user/appdata/nginx-ui:/etc/nginx-ui \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 8080:80 -p 8443:443 \
  uozi/nginx-ui:latest

Then log in at http://<your_server_ip>:8080/install (replace 8080 with whatever host port you mapped to container port 80). A hosted demo at demo.nginxui.com with credentials admin / admin lets you look around before installing. Prebuilt binaries for macOS, Windows, Linux, FreeBSD, OpenBSD, Dragonfly BSD, and OpenWrt are on the latest release; the executable can be started with nginx-ui -config app.ini. On first run, browse to http://<your_server_ip>:<listen_port> to complete configuration.

Configuration and compatibility

The panel follows the Debian web server layout: new site files go into sites-available under the detected Nginx configuration directory, and enabling a site creates a symlink in sites-enabled. On non-Debian systems, the usual nginx.conf include layout may need adjusting to match, for example:

http {
	# ...
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

If you upgrade from an older Docker image, the conf.d/nginx-ui.conf may need the Docker WebSocket fix. Building from source requires Make, Go, Bun, and Node.js; the frontend is built in the app directory, then the backend is built from the project root. The project is licensed under AGPL-3.0, so using, distributing, or contributing means accepting that license.

HotRepo's take

On the Go daily list for 2026-11-01, Nginx UI recorded 32 new stars and a best position of 13 within that list. That is a single day's record, so it supports noting that the project still draws steady attention from Go-ecosystem readers, not a claim about sustained growth. No all-language daily rank is available for the repository in HotRepo's records.

Written by AI from the project's README, updated . The project's own docs are the source of truth.