cd /news/developer-tools/installing-nginx-ui-an-open-source-w… · home topics developer-tools article
[ARTICLE · art-81876] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Installing Nginx UI – An Open-Source WebUI for Nginx

Nginx UI, an open-source web GUI for managing Nginx, can be installed on Ubuntu 24.04 either as a system service or via Docker, with features including real-time stats, automatic Let's Encrypt TLS, performance monitoring, and LLM-assisted config editing. The guide covers setting up a reverse proxy with TLS, ACME certificate management, and creating a virtual host through the dashboard.

read2 min views1 publishedJul 31, 2026

Nginx UI is an open-source web GUI for managing Nginx, single-node or clustered, with real-time stats, automatic Let's Encrypt TLS, performance monitoring, and even LLM-assisted config editing. This guide installs it on Ubuntu 24.04, puts it behind a reverse proxy with TLS, sets up ACME certificate management, and creates a virtual host through the dashboard.

Prerequisites:an Ubuntu 24.04 server, non-root sudo user, a domain A record (e.g.nginx-ui.example.com

), Docker installed if you choose that install path.

$ sudo apt update
$ sudo apt install nginx -y

Pick one of the two install methods below.

Runs Nginx UI as a system service, managing the host's Nginx directly.

$ curl -O https://cloud.nginxui.com/install.sh
$ sudo bash install.sh install
$ nginx-ui --version
$ sudo systemctl start nginx-ui
$ sudo systemctl status nginx-ui

Runs as a container — you won't be able to edit the host's Nginx configs directly through it.

$ mkdir -p ~/nginx-ui-docker
$ cd ~/nginx-ui-docker
$ sudo mkdir -p /opt/nginx-ui/nginx
$ sudo mkdir -p /opt/nginx-ui/config
$ sudo mkdir -p /opt/nginx-ui/www
$ nano docker-compose.yml
version: '3.8'

services:
 nginx-ui:
   image: uozi/nginx-ui:latest
   container_name: nginx-ui
   restart: always
   environment:
     - TZ=UTC
   volumes:
     - /opt/nginx-ui/nginx:/etc/nginx
     - /opt/nginx-ui/config:/etc/nginx-ui
     - /opt/nginx-ui/www:/var/www
   ports:
     - "127.0.0.1:9000:80"
   networks:
     - nginx-ui-net

networks:
 nginx-ui-net:
   driver: bridge
bash
$ sudo docker compose up -d
$ sudo docker compose ps
$ curl -X GET http://localhost:9000

Nginx UI listens on localhost:9000

. Put it behind a public vhost with WebSocket support (needed for live stats/terminal):

$ cd /etc/nginx/sites-available
$ sudo nano nginx-ui.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen          80;
    listen          [::]:80;

    server_name     nginx-ui.example.com;

    location / {
        proxy_set_header    Host                $host;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        proxy_http_version  1.1;
        proxy_set_header    Upgrade             $http_upgrade;
        proxy_set_header    Connection          $connection_upgrade;
        proxy_pass          http://127.0.0.1:9000;
    }
}
bash
$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/nginx-ui.conf /etc/nginx/sites-enabled/
$ sudo nginx -t
$ sudo systemctl restart nginx
bash
$ sudo apt install certbot python3-certbot-nginx -y
$ sudo ufw allow 80,443/tcp
$ sudo ufw reload
$ sudo certbot --nginx -d nginx-ui.example.com -m admin@example.com --agree-tos --no-eff
$ sudo systemctl restart nginx-ui

Visit https://nginx-ui.example.com

:

https://acme-v02.api.letsencrypt.org/directory

, leave Proxy/EAB blank.1. Point a subdomain (e.g. app.example.com

) at your server, then via Nginx UI's Terminal:

$ sudo mkdir -p /var/www/app.example.com
$ sudo nano /var/www/app.example.com/index.html
<html>
<head>
<title>Sample Nginx Virtual Host Application</title>
</head>
<body>
<h1 align="center">Hello from your new virtual host!</h1>
</body>
</html>
bash
$ sudo chown -R www-data:www-data /var/www/app.example.com

2. Manage Sites → Sites List → Add:

server_name

= your domain, root

= /var/www/app.example.com

index.html

, index.htm

, index.php

Confirm the vhost shows Enabled, then visit https://app.example.com

to see the page live. Advanced Mode on the edit screen gives you raw Nginx config access if you need it.

Nginx UI is managing your server's Nginx config with automated TLS and a live dashboard. From here:

For the full guide, visit the original article on ** Vultr Docs**.

── more in #developer-tools 4 stories · sorted by recency
── more on @nginx ui 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/installing-nginx-ui-…] indexed:0 read:2min 2026-07-31 ·