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.