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.
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/letsencryptThis 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: changemeAfter 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: scoobydooExample 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: scoobydooNow 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: 3sSource Code
GitHub repository: https://github.com/NginxProxyManager/nginx-proxy-manager
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Architect's Guide
Dedicated to sharing programmer-architect skills—Java backend, system, microservice, and distributed architectures—to help you become a senior architect.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
