Published

Homelab

Nginx Proxy Manager With Docker (Free SSL for Every App)

Nginx Proxy Manager gives every self-hosted app its own domain name and a free Let's Encrypt certificate, from a simple web page.

1. docker-compose.yml

Create a folder and this compose file.

services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    ports: ["80:80", "81:81", "443:443"]
    volumes: ["./data:/data", "./letsencrypt:/etc/letsencrypt"]
    restart: unless-stopped

2. Start it

Then open the admin page on port 81 and create your admin account.

docker compose up -d   # http://SERVER-IP:81

3. Add a proxy host

Hosts > Proxy Hosts > Add: domain app.yourdomain.com, forward to the app's IP and port.

app.yourdomain.com  ->  192.168.1.50:8080

4. Free SSL

In the SSL tab choose Request a new SSL certificate and Force SSL. Ports 80 and 443 must reach this server.

SSL > Request new certificate > Force SSL

FAQ

What's the default login?

Current versions ask you to create the admin account on first visit. Older versions used admin@example.com / changeme; change it immediately.

Can I use it without opening ports?

For internal-only names use a DNS challenge certificate, or combine it with Cloudflare Tunnel or Tailscale.