# Installing Nginx UI – An Open-Source WebUI for Nginx

> Source: <https://dev.to/vultr/installing-nginx-ui-an-open-source-webui-for-nginx-59j7>
> Published: 2026-07-31 12:38:42+00:00

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.

``` bash
$ 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.

``` bash
$ 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.

``` bash
$ 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):

``` bash
$ 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**:

``` bash
$ 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**.
