Self-host Nginx Proxy Manager
Put your self-hosted apps behind clean domains with automatic Let's Encrypt TLS — all from a point-and-click web UI. The fastest way to get HTTPS on a home server without touching a config file.
Key facts
Pick Nginx Proxy Manager when you want HTTPS in front of your apps without touching a config file: proxy hosts, redirections, streams, access lists and Let's Encrypt or custom certificates from a web UI on port 81, all in one MIT-licensed container with SQLite in `/data`. The author's stated goal is that it "had to be so easy that a monkey could do it", and it still is. When your stack is Docker-native and you would rather have TLS follow container labels, Traefik is the other answer.
Follow the Nginx Proxy Manager deploy guide →What you need
- Any VPS with at least 512 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Paid link — we earn a commission if you shop through it.
Install with Docker Compose
Save this as compose.yml and run docker compose up -d:
# Nginx Proxy Manager — reverse proxy with a web UI
services:
npm:
image: jc21/nginx-proxy-manager:latest
ports: ["80:80", "443:443", "81:81"]
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
restart: unless-stopped
# docker compose up -d → http://SERVER_IP:81
# first visit shows a setup screen that creates the admin accountWhat you take on
Nginx Proxy Manager has almost no operational surprises; the few there are come from its defaults and packaging: