A Powerful Open‑Source Nginx Visual Management Platform with One‑Click Docker Deployment

This article introduces an out‑of‑the‑box Nginx visual management platform that can be deployed with a single Docker‑Compose command, offering a web UI for configuring reverse proxies, SSL termination, advanced settings, and includes step‑by‑step setup, Docker network tips, health‑check configuration, and a link to the GitHub repository.

Architect's Guide
Architect's Guide
Architect's Guide
A Powerful Open‑Source Nginx Visual Management Platform with One‑Click Docker Deployment

Project Overview

The project is ready for one‑click Docker deployment, providing a web interface to configure and manage Nginx services, including forwarding, redirection, SSL certificates, and advanced Nginx settings.

Project Goal

Offer a simple method to create reverse‑proxy hosts with SSL termination while keeping the setup minimal; advanced options are optional.

Key Features

Management UI built with Tabler.

Create forwarding domains, redirects, streams, and 404 hosts without Nginx knowledge.

Free Let’s Encrypt SSL certificates or custom certificates.

Access control lists and basic HTTP authentication per host.

Advanced Nginx configuration available to super‑users.

User management, permissions, and audit logs.

Quick Setup

Install Docker and Docker‑Compose.

Create a docker-compose.yml file such as:

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

This is the minimal required configuration.

Start the stack: docker-compose up -d or, if using the compose plugin: docker compose up -d Open the management UI at http://127.0.0.1:81. Default admin credentials are:

Email:    [email protected]
Password: changeme

After logging in, the system forces a password change.

Advanced Configuration

Using a Docker Network

Create a custom Docker network to avoid exposing upstream service ports on all host interfaces. docker network create scoobydoo Add the network definition to docker-compose.yml (and any other service files on the same host):

networks:
  default:
    external: true
    name: scoobydoo

Example with Portainer:

version: '3.8'
services:
  portainer:
    image: portainer/portainer
    privileged: true
    volumes:
      - './data:/data'
      - '/var/run/docker.sock:/var/run/docker.sock'
    restart: unless-stopped

networks:
  default:
    external: true
    name: scoobydoo

Now the NPM UI can create a proxy host using portainer as the hostname and port 9000. The service name acts as the hostname, so ensure uniqueness when sharing the network.

Docker Healthcheck

The project's Dockerfile does not include a HEALTHCHECK by default, but it can be added by extending the service definition:

healthcheck:
  test: ["CMD", "/bin/check-health"]
  interval: 10s
  timeout: 3s

Source Code

GitHub repository: https://github.com/NginxProxyManager/nginx-proxy-manager

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Dockeropen-sourceNginxSSLDocker ComposeWeb UIProxy Manager
Architect's Guide
Written by

Architect's Guide

Dedicated to sharing programmer-architect skills—Java backend, system, microservice, and distributed architectures—to help you become a senior architect.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.