[GH-ISSUE #1412] Wizard fails during installation #5213

Closed
opened 2026-03-01 15:40:21 +03:00 by kerem · 11 comments
Owner

Originally created by @enwikuna on GitHub (Oct 28, 2025).
Original GitHub issue: https://github.com/0xJacky/nginx-ui/issues/1412

Describe the bug
The initial setup wizard (“Self Check” screen) in uozi/nginx-ui:latest never finishes and never allows proceeding to the actual UI. It always reports failing checks like “PID path not exist”, “Config directory not exist”, “Sites-available directory not exist”, even though Nginx is actually running in the container, the config directory is mounted correctly, and all required paths and files exist.

Because the wizard never turns green, there is no way to complete installation through the normal flow.

Additionally, /install does not present a normal “create admin user” wizard. Instead, calling / or /install returns {"message":"not found"} until the Self Check is passed — which in this case is impossible.

It looks like the wizard fails to parse live Nginx info even though Nginx is there and working.

To Reproduce

  1. Start nginx-ui using the official uozi/nginx-ui:latest image with a bind-mount for /etc/nginx and /etc/nginx-ui, plus published ports 8080→80 and 8443→443.
  2. Make sure /etc/nginx (on host we mount /opt/system/nginx-ui/nginx) is populated with a normal Nginx config:
    • nginx.conf with pid /var/run/nginx.pid;
    • conf.d/, sites-available/, sites-enabled/, etc.
  3. Browse to http://SERVER_IP:8080 or via SSH tunnel (ssh -L 8080:127.0.0.1:8080 root@SERVER_IP) and let nginx-ui show the installer “Self Check”.
  4. The Self Check shows multiple items:
    • “Config directory not exist”
    • “Sites-available directory not exist”
    • “Failed to read nginx.conf”
    • “PID path not exist”
  5. Click “Attempt to fix” on each item. The UI still reports .
  6. Click “Recheck”. Still .
  7. You cannot advance past this screen.

Meanwhile, inside the running nginx-ui container:

  • The config dir and files exist and are readable:
    docker exec -it nginx-ui ls /etc/nginx
    # conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params
    # sites-available  sites-enabled  streams-available  streams-enabled  uwsgi_params
    
  • The PID path exists and contains the actual master PID:
    docker exec -it nginx-ui sh -c 'cat /etc/nginx/nginx.conf | grep pid'
    # pid        /var/run/nginx.pid;
    
    docker exec -it nginx-ui ls -l /run /var/run
    # /var/run -> /run
    # /run/nginx.pid (present, contains PID)
    
  • nginx -V from inside the container clearly shows correct build flags:
    --conf-path=/etc/nginx/nginx.conf
    --pid-path=/run/nginx.pid
    --error-log-path=/var/log/nginx/error.log
    --http-log-path=/var/log/nginx/access.log
    

But nginx-ui logs spam errors like:

ERROR ... internal/nginx/resolve_path.go:91    nginx.GetConfEntryPath len(match) < 1
ERROR ... internal/nginx/resolve_path.go:67    nginx.GetConfPath len(match) < 1
ERROR ... internal/nginx/resolve_path.go:109   pid path not found in nginx -V output
...
PID path not exist

So nginx-ui fails to “see” the exact same paths it just printed from nginx -V. It never marks the PID path as valid, and because of that the wizard refuses to continue. The admin user screen is never reachable.

Expected behavior

  • The installer should accept a valid, already-running Nginx config when:
    • /etc/nginx/nginx.conf exists and is readable,
    • /etc/nginx/sites-available and /etc/nginx/sites-enabled exist (they do),
    • the PID file path in nginx.conf exists and contains a PID (/var/run/nginx.pid -> /run/nginx.pid exists).
  • Clicking “Attempt to fix” should populate any missing internal settings so that “Recheck” turns green and allows proceeding.
  • If Nginx is already running and we’re just attaching nginx-ui to manage it, the wizard should not block forever.

Additionally:
If the project has moved to a “headless install” flow (env vars like NGINX_UI_NODE_SKIP_INSTALLATION, NGINX_UI_PREDEFINED_USER_NAME, etc.), then the wizard should either:

  • honour those env vars and skip itself entirely, OR
  • surface a login page directly, instead of trapping the user on Self Check.

Right now, the wizard is a dead end for me.

Screenshots

  • Wizard Self Check screen shows many such as:
    • “Config directory not exist”
    • “Sites-available directory not exist”
    • “Nginx PID path exists: PID path not exist”
      even though /etc/nginx contains full config and /run/nginx.pid exists in the container.
  • Clicking “Attempt to fix” does not flip them to .
Image

Info (please complete the following information):

  • Server OS: Ubuntu 22.04 LTS (x86_64)
  • Server Arch: x86_64
  • Nginx UI Version: uozi/nginx-ui:latest as of 2025-10-28
  • Your Browser: Firefox latest on desktop
  • Docker runtime: compose v2, container runs in a custom external network proxy-tier

Relevant container logs at startup:

ERROR ... internal/nginx/resolve_path.go:91    nginx.GetConfEntryPath len(match) < 1
ERROR ... internal/nginx/resolve_path.go:67    nginx.GetConfPath len(match) < 1
ERROR ... internal/nginx/resolve_path.go:109   pid path not found in nginx -V output
DEBUG ... nginx version: nginx/1.29.1
...
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
 --conf-path=/etc/nginx/nginx.conf
 --error-log-path=/var/log/nginx/error.log
 --http-log-path=/var/log/nginx/access.log
 --pid-path=/run/nginx.pid
...
PID path not exist

As you can see, nginx-ui itself prints --pid-path=/run/nginx.pid from nginx -V, and /var/run/nginx.pid actually exists (with /var/run symlinked to /run), but the wizard still errors “PID path not exist” and never proceeds.

Additional context
Below is our docker-compose.yml snippet we use to run nginx-ui side-by-side with an existing nginx proxy. We mount empty host dirs into /etc/nginx and /etc/nginx-ui, then nginx-ui populates them. Ports 8080/8443 are for testing before we swap it to :80/:443 in production:

  nginx-ui:
    image: uozi/nginx-ui:latest
    container_name: nginx-ui
    restart: always
    environment:
      - TZ=Europe/Berlin
      # (we also tried without predefined vars, and with predefined vars)
      # - NGINX_UI_PREDEFINED_USER_NAME=enwikuna
      # - NGINX_UI_PREDEFINED_USER_PASSWORD=SuperSecret123!
      # - NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - /opt/system/nginx-ui/nginx:/etc/nginx
      - /opt/system/nginx-ui/ui:/etc/nginx-ui
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - proxy-tier

networks:
  proxy-tier:
    external: true

Inside nginx-ui, after first start, /etc/nginx looks like this (bind-mounted from host):

conf.d
fastcgi_params
mime.types
modules
nginx.conf
scgi_params
sites-available
sites-enabled
streams-available
streams-enabled
uwsgi_params

nginx.conf contains:

pid        /var/run/nginx.pid;
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;

And /run/nginx.pid exists and holds the current master PID.

TL;DR

  • nginx-ui installer refuses to accept a perfectly valid running Nginx.
  • It never advances past the Self Check.
  • It incorrectly reports “PID path not exist” even though /var/run/nginx.pid (→ /run/nginx.pid) is present.
  • There is no way to reach the login / dashboard without manually setting a bunch of undocumented env vars to skip the installation wizard.

It would help if:

  • the wizard accepted /var/run symlinking to /run, or
  • the wizard let us continue after manual confirmation, or
  • these config paths could be entered in the wizard UI directly, or
  • the documented env vars for non-interactive install were mentioned prominently so we can bypass the wizard cleanly.
Originally created by @enwikuna on GitHub (Oct 28, 2025). Original GitHub issue: https://github.com/0xJacky/nginx-ui/issues/1412 **Describe the bug** The initial setup wizard (“Self Check” screen) in `uozi/nginx-ui:latest` never finishes and never allows proceeding to the actual UI. It always reports failing checks like “PID path not exist”, “Config directory not exist”, “Sites-available directory not exist”, even though Nginx is actually running in the container, the config directory is mounted correctly, and all required paths and files exist. Because the wizard never turns green, there is no way to complete installation through the normal flow. Additionally, `/install` does not present a normal “create admin user” wizard. Instead, calling `/` or `/install` returns `{"message":"not found"}` until the Self Check is passed — which in this case is impossible. It looks like the wizard fails to parse live Nginx info even though Nginx is there and working. **To Reproduce** 1. Start `nginx-ui` using the official `uozi/nginx-ui:latest` image with a bind-mount for `/etc/nginx` and `/etc/nginx-ui`, plus published ports 8080→80 and 8443→443. 2. Make sure `/etc/nginx` (on host we mount `/opt/system/nginx-ui/nginx`) is populated with a normal Nginx config: - `nginx.conf` with `pid /var/run/nginx.pid;` - `conf.d/`, `sites-available/`, `sites-enabled/`, etc. 3. Browse to `http://SERVER_IP:8080` or via SSH tunnel (`ssh -L 8080:127.0.0.1:8080 root@SERVER_IP`) and let nginx-ui show the installer “Self Check”. 4. The Self Check shows multiple ❌ items: - “Config directory not exist” - “Sites-available directory not exist” - “Failed to read nginx.conf” - “PID path not exist” 5. Click “Attempt to fix” on each item. The UI still reports ❌. 6. Click “Recheck”. Still ❌. 7. You cannot advance past this screen. Meanwhile, inside the running `nginx-ui` container: - The config dir and files exist and are readable: ```bash docker exec -it nginx-ui ls /etc/nginx # conf.d fastcgi_params mime.types modules nginx.conf scgi_params # sites-available sites-enabled streams-available streams-enabled uwsgi_params ``` - The PID path exists and contains the actual master PID: ```bash docker exec -it nginx-ui sh -c 'cat /etc/nginx/nginx.conf | grep pid' # pid /var/run/nginx.pid; docker exec -it nginx-ui ls -l /run /var/run # /var/run -> /run # /run/nginx.pid (present, contains PID) ``` - `nginx -V` from inside the container clearly shows correct build flags: ``` --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log ``` But nginx-ui logs spam errors like: ```text ERROR ... internal/nginx/resolve_path.go:91 nginx.GetConfEntryPath len(match) < 1 ERROR ... internal/nginx/resolve_path.go:67 nginx.GetConfPath len(match) < 1 ERROR ... internal/nginx/resolve_path.go:109 pid path not found in nginx -V output ... PID path not exist ``` So nginx-ui fails to “see” the exact same paths it just printed from `nginx -V`. It never marks the PID path as valid, and because of that the wizard refuses to continue. The admin user screen is never reachable. **Expected behavior** - The installer should accept a valid, already-running Nginx config when: - `/etc/nginx/nginx.conf` exists and is readable, - `/etc/nginx/sites-available` and `/etc/nginx/sites-enabled` exist (they do), - the PID file path in `nginx.conf` exists and contains a PID (`/var/run/nginx.pid` -> `/run/nginx.pid` exists). - Clicking “Attempt to fix” should populate any missing internal settings so that “Recheck” turns green and allows proceeding. - If Nginx is already running and we’re just attaching nginx-ui to manage it, the wizard should not block forever. Additionally: If the project has moved to a “headless install” flow (env vars like `NGINX_UI_NODE_SKIP_INSTALLATION`, `NGINX_UI_PREDEFINED_USER_NAME`, etc.), then the wizard should either: - honour those env vars and skip itself entirely, OR - surface a login page directly, instead of trapping the user on Self Check. Right now, the wizard is a dead end for me. **Screenshots** - Wizard Self Check screen shows many ❌ such as: - “Config directory not exist” - “Sites-available directory not exist” - “Nginx PID path exists: PID path not exist” even though `/etc/nginx` contains full config and `/run/nginx.pid` exists in the container. - Clicking “Attempt to fix” does not flip them to ✅. <img width="899" height="894" alt="Image" src="https://github.com/user-attachments/assets/71ed8ab2-6553-417b-8170-10379022ace6" /> **Info (please complete the following information):** - Server OS: Ubuntu 22.04 LTS (x86_64) - Server Arch: x86_64 - Nginx UI Version: `uozi/nginx-ui:latest` as of 2025-10-28 - Your Browser: Firefox latest on desktop - Docker runtime: compose v2, container runs in a custom external network `proxy-tier` Relevant container logs at startup: ```text ERROR ... internal/nginx/resolve_path.go:91 nginx.GetConfEntryPath len(match) < 1 ERROR ... internal/nginx/resolve_path.go:67 nginx.GetConfPath len(match) < 1 ERROR ... internal/nginx/resolve_path.go:109 pid path not found in nginx -V output DEBUG ... nginx version: nginx/1.29.1 ... configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid ... PID path not exist ``` As you can see, nginx-ui itself prints `--pid-path=/run/nginx.pid` from `nginx -V`, and `/var/run/nginx.pid` actually exists (with `/var/run` symlinked to `/run`), but the wizard still errors “PID path not exist” and never proceeds. **Additional context** Below is our `docker-compose.yml` snippet we use to run nginx-ui side-by-side with an existing nginx proxy. We mount empty host dirs into `/etc/nginx` and `/etc/nginx-ui`, then nginx-ui populates them. Ports 8080/8443 are for testing before we swap it to :80/:443 in production: ```yaml nginx-ui: image: uozi/nginx-ui:latest container_name: nginx-ui restart: always environment: - TZ=Europe/Berlin # (we also tried without predefined vars, and with predefined vars) # - NGINX_UI_PREDEFINED_USER_NAME=enwikuna # - NGINX_UI_PREDEFINED_USER_PASSWORD=SuperSecret123! # - NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui ports: - "8080:80" - "8443:443" volumes: - /opt/system/nginx-ui/nginx:/etc/nginx - /opt/system/nginx-ui/ui:/etc/nginx-ui - /var/run/docker.sock:/var/run/docker.sock networks: - proxy-tier networks: proxy-tier: external: true ``` Inside `nginx-ui`, after first start, `/etc/nginx` looks like this (bind-mounted from host): ```text conf.d fastcgi_params mime.types modules nginx.conf scgi_params sites-available sites-enabled streams-available streams-enabled uwsgi_params ``` `nginx.conf` contains: ```nginx pid /var/run/nginx.pid; ... include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*.conf; ``` And `/run/nginx.pid` exists and holds the current master PID. **TL;DR** - nginx-ui installer refuses to accept a perfectly valid running Nginx. - It never advances past the Self Check. - It incorrectly reports “PID path not exist” even though `/var/run/nginx.pid` (→ `/run/nginx.pid`) is present. - There is no way to reach the login / dashboard without manually setting a bunch of undocumented env vars to skip the installation wizard. It would help if: - the wizard accepted `/var/run` symlinking to `/run`, or - the wizard let us continue after manual confirmation, or - these config paths could be entered in the wizard UI directly, or - the documented env vars for non-interactive install were mentioned prominently so we can bypass the wizard cleanly.
kerem 2026-03-01 15:40:21 +03:00
Author
Owner

@enwikuna commented on GitHub (Oct 28, 2025):

I hope this can be fixed fast. I'm not able to setup a server. If there is no fix, I sadly need to go with the plain NGINX which would be mad because I always love effort in this kind of projects.

<!-- gh-comment-id:3459043620 --> @enwikuna commented on GitHub (Oct 28, 2025): I hope this can be fixed fast. I'm not able to setup a server. If there is no fix, I sadly need to go with the plain NGINX which would be mad because I always love effort in this kind of projects.
Author
Owner

@enwikuna commented on GitHub (Oct 29, 2025):

Hi there,

here is additional context from my environment that might help you reproduce the installer issue.

Summary

The first-time installation wizard (“Self Check”) never lets me proceed. It keeps showing red for things like:

  • “Failed to read nginx.conf”
  • “Config directory not exist”
  • “PID path not exist”
  • “Nginx.conf includes sites-enabled directory”

Even though:

  • /etc/nginx exists and is mounted
  • /etc/nginx/nginx.conf exists and is readable
  • /etc/nginx/conf.d and /etc/nginx/sites-enabled exist
  • /var/run/nginx.pid exists and contains the running Nginx PID
  • Nginx is actually running inside the same container

Because the wizard never turns green, I never reach the actual UI unless I skip the wizard using environment variables.

Possibly relevant: parsing logic

From looking at internal/nginx/resolve_path.go, functions like GetConfPath(), GetConfEntryPath(), and GetPIDPath() try to detect paths by parsing the output of nginx -V using regex.

Example from the code:

r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)")
match := r.FindStringSubmatch(out)
if len(match) < 1 {
    logger.Error("nginx.GetConfPath len(match) < 1")
    return ""
}

and:

r, _ := regexp.Compile("--pid-path=(.*.pid)")
match := r.FindStringSubmatch(out)
if len(match) < 1 {
    logger.Error("pid path not found in nginx -V output")
    return ""
}

In my logs I repeatedly get:

  • nginx.GetConfPath len(match) < 1
  • nginx.GetConfEntryPath len(match) < 1
  • pid path not found in nginx -V output

After that, the wizard reports the checks as failed and will not continue.

The important part

Inside the container, nginx -V returns:

nginx version: nginx/1.29.1
built by gcc 12.2.0 (Debian 12.2.0-14+deb12u1)
built with OpenSSL 3.0.16 11 Feb 2025 (running with OpenSSL 3.0.17 1 Jul 2025)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_v3_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/home/builder/debuild/nginx-1.29.1/debian/debuild-base/nginx-1.29.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

So --conf-path=/etc/nginx/nginx.conf and --pid-path=/run/nginx.pid are clearly present.

But the current regex logic in GetConfPath(), GetConfEntryPath(), and GetPIDPath() still fails to detect them and returns "", which then causes the installer UI to say these paths don’t exist.

As a result:

  • The wizard reports “PID path not exist” even though /var/run/nginx.pid exists ( /var/run/run symlink ).
  • The wizard reports “Failed to read nginx.conf” even though /etc/nginx/nginx.conf exists and includes:
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
    

Practical impact

Because these functions return "" instead of falling back to sane defaults (like /etc/nginx, /etc/nginx/nginx.conf, /var/run/nginx.pid), the wizard is effectively a dead-end. You cannot reach the login screen or dashboard.

The only way I can currently use Nginx UI is to skip the installer completely and inject all paths + an admin user via environment variables, e.g.:

NGINX_UI_NODE_SKIP_INSTALLATION=true
NGINX_UI_PREDEFINED_USER_NAME=...
NGINX_UI_PREDEFINED_USER_PASSWORD=...
NGINX_UI_NGINX_CONFIG_DIR=/etc/nginx
NGINX_UI_NGINX_CONFIG_FILE=/etc/nginx/nginx.conf
NGINX_UI_NGINX_PID_PATH=/var/run/nginx.pid
NGINX_UI_NGINX_SBIN_PATH=/usr/sbin/nginx
NGINX_UI_NGINX_ACCESS_LOG_PATH=/var/log/nginx/access.log
NGINX_UI_NGINX_ERROR_LOG_PATH=/var/log/nginx/error.log
NGINX_UI_NGINX_LOG_DIR_WHITE_LIST=/var/log/nginx
NGINX_UI_NGINX_TEST_CONFIG_CMD=nginx -t
NGINX_UI_NGINX_RELOAD_CMD=nginx -s reload
NGINX_UI_NGINX_RESTART_CMD=nginx -s reload
NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui

That works (I get a login form and can use the UI), but it bypasses the installer entirely.

What would fix this (from my perspective)

It would probably be enough to make the detection functions more forgiving:

  • In GetConfPath():

    • Use a simpler regex like --conf-path=([^\s]+) to grab the full value (e.g. /etc/nginx/nginx.conf) and then filepath.Dir(...).
    • If no match, fall back to /etc/nginx instead of returning "".
  • In GetConfEntryPath():

    • Parse --conf-path=... the same way.
    • If no match, fall back to <ConfPath>/nginx.conf.
    • Only log an error if that ALSO fails.
  • In GetPIDPath():

    • Parse --pid-path=([^\s]+).
    • If no match, try common defaults /var/run/nginx.pid and /run/nginx.pid before returning "" (on my system /var/run/nginx.pid exists and contains the PID).

This way the wizard would be able to continue with sane defaults, instead of blocking forever.

So in short:

  • The core issue is not my Nginx.
  • The core issue is that the first-time setup wizard can get stuck because the regex in resolve_path.go fails to parse nginx -V, and when that happens it returns "" instead of providing a fallback.
  • The UI then reports “not found” and never advances.

Hope this helps, and thank you for building this project.

<!-- gh-comment-id:3459131614 --> @enwikuna commented on GitHub (Oct 29, 2025): Hi there, here is additional context from my environment that might help you reproduce the installer issue. ### Summary The first-time installation wizard (“Self Check”) never lets me proceed. It keeps showing red ❌ for things like: - “Failed to read nginx.conf” - “Config directory not exist” - “PID path not exist” - “Nginx.conf includes sites-enabled directory” Even though: - `/etc/nginx` exists and is mounted - `/etc/nginx/nginx.conf` exists and is readable - `/etc/nginx/conf.d` and `/etc/nginx/sites-enabled` exist - `/var/run/nginx.pid` exists and contains the running Nginx PID - Nginx is actually running inside the same container Because the wizard never turns green, I never reach the actual UI unless I skip the wizard using environment variables. ### Possibly relevant: parsing logic From looking at `internal/nginx/resolve_path.go`, functions like `GetConfPath()`, `GetConfEntryPath()`, and `GetPIDPath()` try to detect paths by parsing the output of `nginx -V` using regex. Example from the code: ```go r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)") match := r.FindStringSubmatch(out) if len(match) < 1 { logger.Error("nginx.GetConfPath len(match) < 1") return "" } ``` and: ```go r, _ := regexp.Compile("--pid-path=(.*.pid)") match := r.FindStringSubmatch(out) if len(match) < 1 { logger.Error("pid path not found in nginx -V output") return "" } ``` In my logs I repeatedly get: - `nginx.GetConfPath len(match) < 1` - `nginx.GetConfEntryPath len(match) < 1` - `pid path not found in nginx -V output` After that, the wizard reports the checks as failed and will not continue. ### The important part Inside the container, `nginx -V` returns: ```text nginx version: nginx/1.29.1 built by gcc 12.2.0 (Debian 12.2.0-14+deb12u1) built with OpenSSL 3.0.16 11 Feb 2025 (running with OpenSSL 3.0.17 1 Jul 2025) TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_v3_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/home/builder/debuild/nginx-1.29.1/debian/debuild-base/nginx-1.29.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' ``` So `--conf-path=/etc/nginx/nginx.conf` and `--pid-path=/run/nginx.pid` are clearly present. But the current regex logic in `GetConfPath()`, `GetConfEntryPath()`, and `GetPIDPath()` still fails to detect them and returns `""`, which then causes the installer UI to say these paths don’t exist. As a result: - The wizard reports “PID path not exist” even though `/var/run/nginx.pid` exists ( `/var/run` → `/run` symlink ). - The wizard reports “Failed to read nginx.conf” even though `/etc/nginx/nginx.conf` exists and includes: ```nginx include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*.conf; ``` ### Practical impact Because these functions return `""` instead of falling back to sane defaults (like `/etc/nginx`, `/etc/nginx/nginx.conf`, `/var/run/nginx.pid`), the wizard is effectively a dead-end. You cannot reach the login screen or dashboard. The only way I can currently use Nginx UI is to skip the installer completely and inject all paths + an admin user via environment variables, e.g.: ```yaml NGINX_UI_NODE_SKIP_INSTALLATION=true NGINX_UI_PREDEFINED_USER_NAME=... NGINX_UI_PREDEFINED_USER_PASSWORD=... NGINX_UI_NGINX_CONFIG_DIR=/etc/nginx NGINX_UI_NGINX_CONFIG_FILE=/etc/nginx/nginx.conf NGINX_UI_NGINX_PID_PATH=/var/run/nginx.pid NGINX_UI_NGINX_SBIN_PATH=/usr/sbin/nginx NGINX_UI_NGINX_ACCESS_LOG_PATH=/var/log/nginx/access.log NGINX_UI_NGINX_ERROR_LOG_PATH=/var/log/nginx/error.log NGINX_UI_NGINX_LOG_DIR_WHITE_LIST=/var/log/nginx NGINX_UI_NGINX_TEST_CONFIG_CMD=nginx -t NGINX_UI_NGINX_RELOAD_CMD=nginx -s reload NGINX_UI_NGINX_RESTART_CMD=nginx -s reload NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui ``` That works (I get a login form and can use the UI), but it bypasses the installer entirely. ### What would fix this (from my perspective) It would probably be enough to make the detection functions more forgiving: - In `GetConfPath()`: - Use a simpler regex like `--conf-path=([^\s]+)` to grab the full value (e.g. `/etc/nginx/nginx.conf`) and then `filepath.Dir(...)`. - If no match, fall back to `/etc/nginx` instead of returning `""`. - In `GetConfEntryPath()`: - Parse `--conf-path=...` the same way. - If no match, fall back to `<ConfPath>/nginx.conf`. - Only log an error if that ALSO fails. - In `GetPIDPath()`: - Parse `--pid-path=([^\s]+)`. - If no match, try common defaults `/var/run/nginx.pid` and `/run/nginx.pid` before returning `""` (on my system `/var/run/nginx.pid` exists and contains the PID). This way the wizard would be able to continue with sane defaults, instead of blocking forever. So in short: - The core issue is not my Nginx. - The core issue is that the first-time setup wizard can get stuck because the regex in `resolve_path.go` fails to parse `nginx -V`, and when that happens it returns `""` instead of providing a fallback. - The UI then reports “not found” and never advances. Hope this helps, and thank you for building this project.
Author
Owner

@enwikuna commented on GitHub (Oct 29, 2025):

Please see our fix #1414

Build locally and deployed to our server. Path is now resolving successfully.

With the latest image:

025-10-29 13:03:57.414 ERROR github.com/0xJacky/Nginx-UI/internal/nginx/resolve_path.go:67 nginx.GetConfPath len(match) < 1

With the fix:

2025-10-29 13:05:24.171 DEBUG github.com/0xJacky/Nginx-UI/internal/nginx/resolve_path.go:80 nginx.GetConfPath fallback used base /etc/nginx

<!-- gh-comment-id:3461151418 --> @enwikuna commented on GitHub (Oct 29, 2025): Please see our fix #1414 Build locally and deployed to our server. Path is now resolving successfully. With the latest image: `025-10-29 13:03:57.414 ERROR github.com/0xJacky/Nginx-UI/internal/nginx/resolve_path.go:67 nginx.GetConfPath len(match) < 1` With the fix: `2025-10-29 13:05:24.171 DEBUG github.com/0xJacky/Nginx-UI/internal/nginx/resolve_path.go:80 nginx.GetConfPath fallback used base /etc/nginx`
Author
Owner

@Yanik39 commented on GitHub (Nov 4, 2025):

I have similar problems. They came after update. Everything working just fine except self check.

Image
<!-- gh-comment-id:3484200766 --> @Yanik39 commented on GitHub (Nov 4, 2025): I have similar problems. They came after update. Everything working just fine except self check. <img width="2560" height="1253" alt="Image" src="https://github.com/user-attachments/assets/cb60b92d-4183-4352-88f5-60529aa5a7b7" />
Author
Owner

@enwikuna commented on GitHub (Nov 4, 2025):

I have similar problems. They came after update. Everything working just fine except self check.

Image

It’s a bug. I can confirm it since I fixed it myself locally with a Docker build. I you want I can provide a fixed version of the latest one to you until the guy of this is repo finds time to merge and release our two fix-pull-requests. I you want the fixed version, write me an email to: info[at]enwikuna.de and i will reply with an OneDrive link incl. short tutorial how to use it. Please note that you need to change the image At some point when the fix is merged to receive updates in the future.

<!-- gh-comment-id:3484243976 --> @enwikuna commented on GitHub (Nov 4, 2025): > I have similar problems. They came after update. Everything working just fine except self check. > > <img alt="Image" width="2000" height="1253" src="https://private-user-images.githubusercontent.com/12784047/509364562-cb60b92d-4183-4352-88f5-60529aa5a7b7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjIyNDEyODcsIm5iZiI6MTc2MjI0MDk4NywicGF0aCI6Ii8xMjc4NDA0Ny81MDkzNjQ1NjItY2I2MGI5MmQtNDE4My00MzUyLTg4ZjUtNjA1MjlhYTVhN2I3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTA0VDA3MjMwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhNzMxNzg2NDQwZDFlYTRkNTg0MDEyOGNhMjczYTY2ZmIzZGExZGZhZDRhNDMxNDgwZGRkNWQxYTZkMDA3NDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.e1nEjFU2t3womcSAjPqMeeRc8cD_nUi8o3UNyDzuZ04"> It’s a bug. I can confirm it since I fixed it myself locally with a Docker build. I you want I can provide a fixed version of the latest one to you until the guy of this is repo finds time to merge and release our two fix-pull-requests. I you want the fixed version, write me an email to: info[at]enwikuna.de and i will reply with an OneDrive link incl. short tutorial how to use it. Please note that you need to change the image At some point when the fix is merged to receive updates in the future.
Author
Owner

@Yanik39 commented on GitHub (Nov 4, 2025):

I have similar problems. They came after update. Everything working just fine except self check.
Image

It’s a bug. I can confirm it since I fixed it myself locally with a Docker build. I you want I can provide a fixed version of the latest one to you until the guy of this is repo finds time to merge and release our two fix-pull-requests. I you want the fixed version, write me an email to: info[at]enwikuna.de and i will reply with an OneDrive link incl. short tutorial how to use it. Please note that you need to change the image At some point when the fix is merged to receive updates in the future.

Thanks for your response. All my system is working. There is no effect to my sites etc. So its not urgent for me and would like to wait for official release. Thanks a lot for your suggestion.

<!-- gh-comment-id:3484269615 --> @Yanik39 commented on GitHub (Nov 4, 2025): > > I have similar problems. They came after update. Everything working just fine except self check. > > <img alt="Image" width="2000" height="1253" src="https://private-user-images.githubusercontent.com/12784047/509364562-cb60b92d-4183-4352-88f5-60529aa5a7b7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjIyNDEyODcsIm5iZiI6MTc2MjI0MDk4NywicGF0aCI6Ii8xMjc4NDA0Ny81MDkzNjQ1NjItY2I2MGI5MmQtNDE4My00MzUyLTg4ZjUtNjA1MjlhYTVhN2I3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTA0VDA3MjMwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhNzMxNzg2NDQwZDFlYTRkNTg0MDEyOGNhMjczYTY2ZmIzZGExZGZhZDRhNDMxNDgwZGRkNWQxYTZkMDA3NDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.e1nEjFU2t3womcSAjPqMeeRc8cD_nUi8o3UNyDzuZ04"> > > It’s a bug. I can confirm it since I fixed it myself locally with a Docker build. I you want I can provide a fixed version of the latest one to you until the guy of this is repo finds time to merge and release our two fix-pull-requests. I you want the fixed version, write me an email to: info[at]enwikuna.de and i will reply with an OneDrive link incl. short tutorial how to use it. Please note that you need to change the image At some point when the fix is merged to receive updates in the future. Thanks for your response. All my system is working. There is no effect to my sites etc. So its not urgent for me and would like to wait for official release. Thanks a lot for your suggestion.
Author
Owner

@0xJacky commented on GitHub (Nov 11, 2025):

I'm still curious about this issue. Using the latest image and starting directly, nginx-ui can function normally and successfully passed the self-check.

<!-- gh-comment-id:3514717138 --> @0xJacky commented on GitHub (Nov 11, 2025): I'm still curious about this issue. Using the latest image and starting directly, nginx-ui can function normally and successfully passed the self-check.
Author
Owner

@0xJacky commented on GitHub (Nov 11, 2025):

Docker version 28.3.3, build 980b856

services:
  nginx-ui:
    image: uozi/nginx-ui:latest
    container_name: nginx-ui-test-251111
    restart: always
    environment:
      - TZ=Asia/Shanghai
      # (we also tried without predefined vars, and with predefined vars)
      # - NGINX_UI_PREDEFINED_USER_NAME=enwikuna
      # - NGINX_UI_PREDEFINED_USER_PASSWORD=SuperSecret123!
      # - NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - ./nginx:/etc/nginx
      - ./nginx-ui:/etc/nginx-ui
      - /var/run/docker.sock:/var/run/docker.sock

Image
<!-- gh-comment-id:3514727832 --> @0xJacky commented on GitHub (Nov 11, 2025): Docker version 28.3.3, build 980b856 ``` services: nginx-ui: image: uozi/nginx-ui:latest container_name: nginx-ui-test-251111 restart: always environment: - TZ=Asia/Shanghai # (we also tried without predefined vars, and with predefined vars) # - NGINX_UI_PREDEFINED_USER_NAME=enwikuna # - NGINX_UI_PREDEFINED_USER_PASSWORD=SuperSecret123! # - NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui ports: - "8080:80" - "8443:443" volumes: - ./nginx:/etc/nginx - ./nginx-ui:/etc/nginx-ui - /var/run/docker.sock:/var/run/docker.sock ``` <img width="1026" height="2086" alt="Image" src="https://github.com/user-attachments/assets/d3b5af83-4fab-43a6-bcaa-1569c9196f48" />
Author
Owner

@0xJacky commented on GitHub (Nov 11, 2025):

I have similar problems. They came after update. Everything working just fine except self check.

Image

just click the "attampt fix" button to resolve the issues.

In additional, if the self check reports that sbin path is not exists, you can check the output of "nginx -V" if the --sbin-path is exists. Otherwise, you should modify the configuation of nginx-ui, to set the sbin path of nginx manually (https://nginxui.com/guide/config-nginx.html#sbinpath)

Image
<!-- gh-comment-id:3514738308 --> @0xJacky commented on GitHub (Nov 11, 2025): > I have similar problems. They came after update. Everything working just fine except self check. > > <img alt="Image" width="2000" height="1253" src="https://private-user-images.githubusercontent.com/12784047/509364562-cb60b92d-4183-4352-88f5-60529aa5a7b7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjI4MjgyOTYsIm5iZiI6MTc2MjgyNzk5NiwicGF0aCI6Ii8xMjc4NDA0Ny81MDkzNjQ1NjItY2I2MGI5MmQtNDE4My00MzUyLTg4ZjUtNjA1MjlhYTVhN2I3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTExVDAyMjYzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBhYmIwOTdmZjlkYWNiMWZmNzI0ZDZlNjE0MTYzNDhiNDM1NjdjMTFlNjEyNTA1MzJhY2JkMzY3YmE0MGVkY2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.6mWbczwj-xcH2rHjjq5gBsB560L1n8VWdPYEMhwPUUQ"> just click the "attampt fix" button to resolve the issues. In additional, if the self check reports that sbin path is not exists, you can check the output of "nginx -V" if the `--sbin-path` is exists. Otherwise, you should modify the configuation of nginx-ui, to set the sbin path of nginx manually (https://nginxui.com/guide/config-nginx.html#sbinpath) <img width="1436" height="524" alt="Image" src="https://github.com/user-attachments/assets/099bf8c0-1d6e-4f04-b783-abfe3dc2a3d4" />
Author
Owner

@0xJacky commented on GitHub (Nov 11, 2025):

@enwikuna Could you please provide the output of docker inspect nginx-ui?

<!-- gh-comment-id:3514740987 --> @0xJacky commented on GitHub (Nov 11, 2025): @enwikuna Could you please provide the output of `docker inspect nginx-ui`?
Author
Owner

@enwikuna commented on GitHub (Nov 11, 2025):

Docker version 28.3.3, build 980b856

services:
  nginx-ui:
    image: uozi/nginx-ui:latest
    container_name: nginx-ui-test-251111
    restart: always
    environment:
      - TZ=Asia/Shanghai
      # (we also tried without predefined vars, and with predefined vars)
      # - NGINX_UI_PREDEFINED_USER_NAME=enwikuna
      # - NGINX_UI_PREDEFINED_USER_PASSWORD=SuperSecret123!
      # - NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui
    ports:
      - "8080:80"
      - "8443:443"
    volumes:
      - ./nginx:/etc/nginx
      - ./nginx-ui:/etc/nginx-ui
      - /var/run/docker.sock:/var/run/docker.sock
Image

I did used the attempt fix button but no success. Only applying the fix I've told you about fixed the issue. This is the output you've asked for:

[
    {
        "Id": "7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b",
        "Created": "2025-11-07T12:30:22.327378763Z",
        "Path": "/init",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2498,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2025-11-07T12:33:01.634657621Z",
            "FinishedAt": "2025-11-07T12:32:06.255600065Z"
        },
        "Image": "sha256:6e0e00d352e0b5805f2c4565546bc50db8dd24372a13c3d0f276c36004e49d81",
        "ResolvConfPath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/hostname",
        "HostsPath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/hosts",
        "LogPath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b-json.log",
        "Name": "/nginx-ui",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/var/run/docker.sock:/var/run/docker.sock:rw",
                "/opt/system/nginx-ui/nginx:/etc/nginx:rw",
                "/opt/system/nginx-ui/ui:/etc/nginx-ui:rw",
                "/opt/system/nginx-ui/logs:/var/log/nginx:rw",
                "/srv:/srv:ro"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "proxy-tier",
            "PortBindings": {
                "443/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "443"
                    }
                ],
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "80"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [
                "172.17.0.3"
            ],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": [],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/interrupts",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap",
                "/sys/devices/system/cpu/cpu0/thermal_throttle",
                "/sys/devices/system/cpu/cpu1/thermal_throttle",
                "/sys/devices/system/cpu/cpu2/thermal_throttle",
                "/sys/devices/system/cpu/cpu3/thermal_throttle",
                "/sys/devices/system/cpu/cpu4/thermal_throttle",
                "/sys/devices/system/cpu/cpu5/thermal_throttle",
                "/sys/devices/system/cpu/cpu6/thermal_throttle",
                "/sys/devices/system/cpu/cpu7/thermal_throttle",
                "/sys/devices/system/cpu/cpu8/thermal_throttle",
                "/sys/devices/system/cpu/cpu9/thermal_throttle",
                "/sys/devices/system/cpu/cpu10/thermal_throttle",
                "/sys/devices/system/cpu/cpu11/thermal_throttle",
                "/sys/devices/system/cpu/cpu12/thermal_throttle",
                "/sys/devices/system/cpu/cpu13/thermal_throttle",
                "/sys/devices/system/cpu/cpu14/thermal_throttle",
                "/sys/devices/system/cpu/cpu15/thermal_throttle"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "ID": "7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b",
                "LowerDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429-init/diff:/var/lib/docker/overlay2/x1cd94n5am8d91hb48i7l5ylg/diff:/var/lib/docker/overlay2/xt0t2wflh7gc2m6xbu1mvxjxp/diff:/var/lib/docker/overlay2/jx9x8yvirgo98l7gddm66gz0a/diff:/var/lib/docker/overlay2/t2krueb6kmmmf86n9jpp7rzpd/diff:/var/lib/docker/overlay2/p5ufml4glfg2vno179xa3zru8/diff:/var/lib/docker/overlay2/mco07ymcmsu78281z2icu2rpv/diff:/var/lib/docker/overlay2/ovrl8fzcr7m399vvm1l0ae7vb/diff:/var/lib/docker/overlay2/yt4rl2mlsxhrq288occ6yazj4/diff:/var/lib/docker/overlay2/a14fdba4defe852af616c04877a73db18bb7a05a1a7daaae5669a7de27e10c1f/diff:/var/lib/docker/overlay2/f836c55fc635291e7b5f5e3cb2d836690197bb0aa0ea42d68a5609f0fd5ff7ba/diff:/var/lib/docker/overlay2/2b6bd9459a62fd6fc18652733f6b454745cc3722ecd461e66dc079b89c0a7813/diff:/var/lib/docker/overlay2/ebb4fef6c894d116b32abb0eae8c15da656b14c05ea61ead9a98b45549faa68d/diff:/var/lib/docker/overlay2/0ac84835f2aa6b3df77f7366271c30b816850b40beb095a4f970c1a796f3528d/diff:/var/lib/docker/overlay2/c73ddace1ad41c947cd8f0e7d521d82aa3b1a8030735e93d3d3406e5aeca9eb8/diff:/var/lib/docker/overlay2/682f88f8cbf6fbaa949aea32f47d338badb8f2bd034cd8737db91c470e18cf2f/diff:/var/lib/docker/overlay2/2068c7621400a8590adefc097530e1913f289b15d2cf22896081fd664a17bc30/diff:/var/lib/docker/overlay2/df39a161e923b34e3cf9a8e17b0e113c1723beb52f811afe3f467ccd400911ca/diff:/var/lib/docker/overlay2/e3d8754014e3f27f9d3ff04f009e6fb8a10865181432859b3de684109c9d9ac7/diff:/var/lib/docker/overlay2/1be9f32bb8ced757727308dfa0dd0c5bfbe3bf7eec101e830e6297de82a64d48/diff:/var/lib/docker/overlay2/a205d44ae88b5aebf7908f91b34a4a0afc588c16f6e6322ae73e7c09e421b8d3/diff:/var/lib/docker/overlay2/cdc660f615a3794dbb191fb3b16131596eb06d1ab421c0a677ac1c284c32a775/diff:/var/lib/docker/overlay2/07c7638ab7aedfc7173dd573bf06850af7db1485bd18e9dab6fada735a340c0a/diff:/var/lib/docker/overlay2/96e220a3249916441e17416e5f732121f139f16cc84cf2454eaf8018e8a2a97f/diff",
                "MergedDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429/merged",
                "UpperDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429/diff",
                "WorkDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/opt/system/nginx-ui/nginx",
                "Destination": "/etc/nginx",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/opt/system/nginx-ui/ui",
                "Destination": "/etc/nginx-ui",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/srv",
                "Destination": "/srv",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/opt/system/nginx-ui/logs",
                "Destination": "/var/log/nginx",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/var/run/docker.sock",
                "Destination": "/var/run/docker.sock",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "7cf7223afeff",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "443/tcp": {},
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "TZ=Europe/Berlin",
                "NGINX_UI_SERVER_RUN_MODE=release",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.29.3",
                "NJS_VERSION=0.9.4",
                "NJS_RELEASE=1~trixie",
                "PKG_RELEASE=1~trixie",
                "DYNPKG_RELEASE=1~trixie",
                "DEBIAN_FRONTEND=noninteractive",
                "GIN_MODE=release",
                "NGINX_UI_OFFICIAL_DOCKER=true",
                "NGINX_UI_WORKING_DIR=/var/run/"
            ],
            "Cmd": null,
            "Image": "nginx-ui-fixed:local",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/init"
            ],
            "OnBuild": null,
            "Labels": {
                "com.centurylinklabs.watchtower.enable": "true",
                "com.docker.compose.config-hash": "60f5000221f61c22ba9f22c52b719c85caa0de81e301e268013b62f3ad35fabc",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "",
                "com.docker.compose.image": "sha256:6e0e00d352e0b5805f2c4565546bc50db8dd24372a13c3d0f276c36004e49d81",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "nginx-ui",
                "com.docker.compose.project.config_files": "/opt/system/nginx-ui/docker-compose.yml",
                "com.docker.compose.project.working_dir": "/opt/system/nginx-ui",
                "com.docker.compose.replace": "nginx-ui",
                "com.docker.compose.service": "nginx-ui",
                "com.docker.compose.version": "2.40.3",
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "2680dba84c5e4ef3bb5127693bb0d03d82f2eeb06e6513e05744bd1ccfb41380",
            "SandboxKey": "/var/run/docker/netns/2680dba84c5e",
            "Ports": {
                "443/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "443"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "443"
                    }
                ],
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "80"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "80"
                    }
                ]
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "proxy-tier": {
                    "IPAMConfig": {
                        "IPv4Address": "172.17.0.200"
                    },
                    "Links": null,
                    "Aliases": [
                        "nginx-ui",
                        "nginx-ui"
                    ],
                    "MacAddress": "f2:a9:f2:e3:15:9e",
                    "DriverOpts": null,
                    "GwPriority": 0,
                    "NetworkID": "8006b0e80cf1a16c0f7db59646ea666a772b34c0c4922f038f45baf0e71c8d26",
                    "EndpointID": "8caf8d17dbf14590359a16a521c074906b303f156b24952e5fe6a1a2ed14a878",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.200",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": [
                        "nginx-ui",
                        "7cf7223afeff"
                    ]
                }
            }
        }
    }
]

Also, check this:

# nginx -V
nginx version: nginx/1.29.3
built by gcc 14.2.0 (Debian 14.2.0-19)
built with OpenSSL 3.5.1 1 Jul 2025
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_v3_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/home/builder/debuild/nginx-1.29.3/debian/debuild-base/nginx-1.29.3=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
<!-- gh-comment-id:3516397140 --> @enwikuna commented on GitHub (Nov 11, 2025): > Docker version 28.3.3, build 980b856 > > ``` > services: > nginx-ui: > image: uozi/nginx-ui:latest > container_name: nginx-ui-test-251111 > restart: always > environment: > - TZ=Asia/Shanghai > # (we also tried without predefined vars, and with predefined vars) > # - NGINX_UI_PREDEFINED_USER_NAME=enwikuna > # - NGINX_UI_PREDEFINED_USER_PASSWORD=SuperSecret123! > # - NGINX_UI_NGINX_CONTAINER_NAME=nginx-ui > ports: > - "8080:80" > - "8443:443" > volumes: > - ./nginx:/etc/nginx > - ./nginx-ui:/etc/nginx-ui > - /var/run/docker.sock:/var/run/docker.sock > ``` > > <img alt="Image" width="1026" height="2000" src="https://private-user-images.githubusercontent.com/13096985/512483979-d3b5af83-4fab-43a6-bcaa-1569c9196f48.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjI4NjAyMjYsIm5iZiI6MTc2Mjg1OTkyNiwicGF0aCI6Ii8xMzA5Njk4NS81MTI0ODM5NzktZDNiNWFmODMtNGZhYi00M2E2LWJjYWEtMTU2OWM5MTk2ZjQ4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTExVDExMTg0NlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ5ZjQyNjVkZjM5NGUxODFiZDhjZTI0NzA1NzE2ZmRjNGY5N2I3MGQ4NTc3NDM1ZTdjNWE4NWFkMWJjNWY5OGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ZiN2EgaGxPwQyogm4NVy7W9npAY0P-n5VGoWevuwKBU"> I did used the attempt fix button but no success. Only applying the fix I've told you about fixed the issue. This is the output you've asked for: ``` [ { "Id": "7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b", "Created": "2025-11-07T12:30:22.327378763Z", "Path": "/init", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 2498, "ExitCode": 0, "Error": "", "StartedAt": "2025-11-07T12:33:01.634657621Z", "FinishedAt": "2025-11-07T12:32:06.255600065Z" }, "Image": "sha256:6e0e00d352e0b5805f2c4565546bc50db8dd24372a13c3d0f276c36004e49d81", "ResolvConfPath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/resolv.conf", "HostnamePath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/hostname", "HostsPath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/hosts", "LogPath": "/var/lib/docker/containers/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b/7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b-json.log", "Name": "/nginx-ui", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "docker-default", "ExecIDs": null, "HostConfig": { "Binds": [ "/var/run/docker.sock:/var/run/docker.sock:rw", "/opt/system/nginx-ui/nginx:/etc/nginx:rw", "/opt/system/nginx-ui/ui:/etc/nginx-ui:rw", "/opt/system/nginx-ui/logs:/var/log/nginx:rw", "/srv:/srv:ro" ], "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "proxy-tier", "PortBindings": { "443/tcp": [ { "HostIp": "", "HostPort": "443" } ], "80/tcp": [ { "HostIp": "", "HostPort": "80" } ] }, "RestartPolicy": { "Name": "always", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "ConsoleSize": [ 0, 0 ], "CapAdd": null, "CapDrop": null, "CgroupnsMode": "private", "Dns": [ "172.17.0.3" ], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": [], "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": null, "BlkioDeviceReadBps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": null, "DeviceCgroupRules": null, "DeviceRequests": null, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": null, "PidsLimit": null, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/interrupts", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware", "/sys/devices/virtual/powercap", "/sys/devices/system/cpu/cpu0/thermal_throttle", "/sys/devices/system/cpu/cpu1/thermal_throttle", "/sys/devices/system/cpu/cpu2/thermal_throttle", "/sys/devices/system/cpu/cpu3/thermal_throttle", "/sys/devices/system/cpu/cpu4/thermal_throttle", "/sys/devices/system/cpu/cpu5/thermal_throttle", "/sys/devices/system/cpu/cpu6/thermal_throttle", "/sys/devices/system/cpu/cpu7/thermal_throttle", "/sys/devices/system/cpu/cpu8/thermal_throttle", "/sys/devices/system/cpu/cpu9/thermal_throttle", "/sys/devices/system/cpu/cpu10/thermal_throttle", "/sys/devices/system/cpu/cpu11/thermal_throttle", "/sys/devices/system/cpu/cpu12/thermal_throttle", "/sys/devices/system/cpu/cpu13/thermal_throttle", "/sys/devices/system/cpu/cpu14/thermal_throttle", "/sys/devices/system/cpu/cpu15/thermal_throttle" ], "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": { "ID": "7cf7223afeff0ecc48fc51b5f83ed26d45972b2398991f82d7a0680b46b8281b", "LowerDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429-init/diff:/var/lib/docker/overlay2/x1cd94n5am8d91hb48i7l5ylg/diff:/var/lib/docker/overlay2/xt0t2wflh7gc2m6xbu1mvxjxp/diff:/var/lib/docker/overlay2/jx9x8yvirgo98l7gddm66gz0a/diff:/var/lib/docker/overlay2/t2krueb6kmmmf86n9jpp7rzpd/diff:/var/lib/docker/overlay2/p5ufml4glfg2vno179xa3zru8/diff:/var/lib/docker/overlay2/mco07ymcmsu78281z2icu2rpv/diff:/var/lib/docker/overlay2/ovrl8fzcr7m399vvm1l0ae7vb/diff:/var/lib/docker/overlay2/yt4rl2mlsxhrq288occ6yazj4/diff:/var/lib/docker/overlay2/a14fdba4defe852af616c04877a73db18bb7a05a1a7daaae5669a7de27e10c1f/diff:/var/lib/docker/overlay2/f836c55fc635291e7b5f5e3cb2d836690197bb0aa0ea42d68a5609f0fd5ff7ba/diff:/var/lib/docker/overlay2/2b6bd9459a62fd6fc18652733f6b454745cc3722ecd461e66dc079b89c0a7813/diff:/var/lib/docker/overlay2/ebb4fef6c894d116b32abb0eae8c15da656b14c05ea61ead9a98b45549faa68d/diff:/var/lib/docker/overlay2/0ac84835f2aa6b3df77f7366271c30b816850b40beb095a4f970c1a796f3528d/diff:/var/lib/docker/overlay2/c73ddace1ad41c947cd8f0e7d521d82aa3b1a8030735e93d3d3406e5aeca9eb8/diff:/var/lib/docker/overlay2/682f88f8cbf6fbaa949aea32f47d338badb8f2bd034cd8737db91c470e18cf2f/diff:/var/lib/docker/overlay2/2068c7621400a8590adefc097530e1913f289b15d2cf22896081fd664a17bc30/diff:/var/lib/docker/overlay2/df39a161e923b34e3cf9a8e17b0e113c1723beb52f811afe3f467ccd400911ca/diff:/var/lib/docker/overlay2/e3d8754014e3f27f9d3ff04f009e6fb8a10865181432859b3de684109c9d9ac7/diff:/var/lib/docker/overlay2/1be9f32bb8ced757727308dfa0dd0c5bfbe3bf7eec101e830e6297de82a64d48/diff:/var/lib/docker/overlay2/a205d44ae88b5aebf7908f91b34a4a0afc588c16f6e6322ae73e7c09e421b8d3/diff:/var/lib/docker/overlay2/cdc660f615a3794dbb191fb3b16131596eb06d1ab421c0a677ac1c284c32a775/diff:/var/lib/docker/overlay2/07c7638ab7aedfc7173dd573bf06850af7db1485bd18e9dab6fada735a340c0a/diff:/var/lib/docker/overlay2/96e220a3249916441e17416e5f732121f139f16cc84cf2454eaf8018e8a2a97f/diff", "MergedDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429/merged", "UpperDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429/diff", "WorkDir": "/var/lib/docker/overlay2/3823ad8c4538a52f049a8c91e876697b443a6ecb4ea439a747a6a735da78d429/work" }, "Name": "overlay2" }, "Mounts": [ { "Type": "bind", "Source": "/opt/system/nginx-ui/nginx", "Destination": "/etc/nginx", "Mode": "rw", "RW": true, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/opt/system/nginx-ui/ui", "Destination": "/etc/nginx-ui", "Mode": "rw", "RW": true, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/srv", "Destination": "/srv", "Mode": "ro", "RW": false, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/opt/system/nginx-ui/logs", "Destination": "/var/log/nginx", "Mode": "rw", "RW": true, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/var/run/docker.sock", "Destination": "/var/run/docker.sock", "Mode": "rw", "RW": true, "Propagation": "rprivate" } ], "Config": { "Hostname": "7cf7223afeff", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "ExposedPorts": { "443/tcp": {}, "80/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "TZ=Europe/Berlin", "NGINX_UI_SERVER_RUN_MODE=release", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "NGINX_VERSION=1.29.3", "NJS_VERSION=0.9.4", "NJS_RELEASE=1~trixie", "PKG_RELEASE=1~trixie", "DYNPKG_RELEASE=1~trixie", "DEBIAN_FRONTEND=noninteractive", "GIN_MODE=release", "NGINX_UI_OFFICIAL_DOCKER=true", "NGINX_UI_WORKING_DIR=/var/run/" ], "Cmd": null, "Image": "nginx-ui-fixed:local", "Volumes": null, "WorkingDir": "", "Entrypoint": [ "/init" ], "OnBuild": null, "Labels": { "com.centurylinklabs.watchtower.enable": "true", "com.docker.compose.config-hash": "60f5000221f61c22ba9f22c52b719c85caa0de81e301e268013b62f3ad35fabc", "com.docker.compose.container-number": "1", "com.docker.compose.depends_on": "", "com.docker.compose.image": "sha256:6e0e00d352e0b5805f2c4565546bc50db8dd24372a13c3d0f276c36004e49d81", "com.docker.compose.oneoff": "False", "com.docker.compose.project": "nginx-ui", "com.docker.compose.project.config_files": "/opt/system/nginx-ui/docker-compose.yml", "com.docker.compose.project.working_dir": "/opt/system/nginx-ui", "com.docker.compose.replace": "nginx-ui", "com.docker.compose.service": "nginx-ui", "com.docker.compose.version": "2.40.3", "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>" }, "StopSignal": "SIGQUIT" }, "NetworkSettings": { "Bridge": "", "SandboxID": "2680dba84c5e4ef3bb5127693bb0d03d82f2eeb06e6513e05744bd1ccfb41380", "SandboxKey": "/var/run/docker/netns/2680dba84c5e", "Ports": { "443/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "443" }, { "HostIp": "::", "HostPort": "443" } ], "80/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "80" }, { "HostIp": "::", "HostPort": "80" } ] }, "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "proxy-tier": { "IPAMConfig": { "IPv4Address": "172.17.0.200" }, "Links": null, "Aliases": [ "nginx-ui", "nginx-ui" ], "MacAddress": "f2:a9:f2:e3:15:9e", "DriverOpts": null, "GwPriority": 0, "NetworkID": "8006b0e80cf1a16c0f7db59646ea666a772b34c0c4922f038f45baf0e71c8d26", "EndpointID": "8caf8d17dbf14590359a16a521c074906b303f156b24952e5fe6a1a2ed14a878", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.200", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "DNSNames": [ "nginx-ui", "7cf7223afeff" ] } } } } ] ``` Also, check this: ``` # nginx -V nginx version: nginx/1.29.3 built by gcc 14.2.0 (Debian 14.2.0-19) built with OpenSSL 3.5.1 1 Jul 2025 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_v3_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/home/builder/debuild/nginx-1.29.3/debian/debuild-base/nginx-1.29.3=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nginx-ui#5213
No description provided.