ConfigsApr 15, 2026·3 min read

Nginx Proxy Manager — Web UI for Nginx Reverse Proxy

Docker container that gives you a polished web interface on top of Nginx, with automatic Let's Encrypt SSL, access lists, and streams.

TL;DR
Nginx Proxy Manager wraps Nginx in a Docker container with a web UI for managing proxy hosts, SSL, and access control.
§01

What it is

Nginx Proxy Manager (NPM) is a Docker-based application that puts a polished web interface on top of Nginx reverse proxy. Instead of editing nginx.conf files by hand, you create and manage proxy hosts, redirections, streams, and SSL certificates through a browser-based dashboard.

It is designed for self-hosters, homelab enthusiasts, and small teams who run multiple services behind a single public IP and want automatic HTTPS without manual certificate management.

§02

How it saves time or tokens

Manual Nginx configuration for reverse proxying involves writing server blocks, managing certificate renewals with certbot cron jobs, and debugging syntax errors. NPM reduces this to clicking through a form: enter your domain, point it to an internal IP and port, toggle SSL on, and the system handles Let's Encrypt issuance and renewal automatically. Adding a new service takes under a minute.

§03

How to use

  1. Deploy NPM using Docker Compose with the official image (jc21/nginx-proxy-manager:latest). Expose ports 80, 443, and 81 (admin UI).
  2. Log in to the admin panel at http://your-server:81 with default credentials (admin@example.com / changeme), then change your password.
  3. Add a proxy host: enter the domain name, set the forward hostname/IP and port, enable SSL with Let's Encrypt, and save.
§04

Example

# docker-compose.yml
version: '3.8'
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
§05

Related on TokRepo

§06

Common pitfalls

  • Port 80 must be reachable from the internet for Let's Encrypt HTTP-01 challenges. If your ISP blocks port 80, use DNS challenge instead via the advanced tab.
  • Running NPM behind another reverse proxy creates double-proxy issues. NPM should be the outermost proxy handling SSL termination.
  • Default credentials are well-known. Change the admin password immediately after first login to avoid unauthorized access.

Frequently Asked Questions

Does Nginx Proxy Manager support wildcard SSL certificates?+

Yes. NPM supports DNS challenge-based wildcard certificates through its advanced SSL settings. You need to configure a DNS provider plugin (Cloudflare, Route53, etc.) so NPM can create the required TXT records for wildcard validation.

Can I use Nginx Proxy Manager with Docker containers on the same host?+

Yes. Point the proxy host to the container name or internal Docker IP and its exposed port. If NPM and your services are on the same Docker network, you can use container names as hostnames directly.

How does automatic SSL renewal work?+

NPM uses Let's Encrypt and automatically renews certificates before they expire. The renewal process runs in the background with no manual intervention required. Certificates are stored in the mounted /etc/letsencrypt volume.

Is Nginx Proxy Manager suitable for production use?+

For small-to-medium deployments, yes. It runs production Nginx under the hood and handles SSL correctly. For high-traffic enterprise setups, teams typically manage Nginx configs directly or use dedicated load balancers with more granular control.

Can I add custom Nginx configuration directives?+

Yes. Each proxy host has an 'Advanced' tab where you can inject custom Nginx directives (headers, rate limiting, caching rules) directly into the generated server block.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets