Nginx Proxy Manager (NPM) is a tool that lets you expose your private web services on your network with free SSL, Docker, and multiple users. You can configure and manage your proxy hosts with a beautiful UI and a simple Docker image.
The dashboard is now deployed on
http://{serverIP}:81
. The username is [email protected] and the password is changeme. After you login you will be forced to change your password.
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
container_name: npm
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /mnt/tank/configs/npm/data:/data
- /mnt/tank/configs/npm/letsencrypt:/etc/letsencrypt
The dashboard is now deployed on
http://{serverIP}:81
. The username is [email protected] and the password is changeme. After you login you will be forced to change your password.
In order to reverse proxy your content, you must have ports 80 and 443 properly forwarded to the IP of the host running NPM as well as have a fully qualified domain name (FQDN) DNS entry pointed at the external IP of the router.
Whoever manages your domain should have an area for the DNS entries. In order to use nginx properly, we need two records in our DNS table. The first is the A record which points anyone going to example.com to the IP of our server. The second is a CNAME record for *.example.com which means any subdomain (like cloud.example.com) will also point to the IP address of example.com. The picture below is what this looks like on Cloudflare.
A and CNAME records for Cloudflare
To setup a reverse proxy to a container, add a proxy host.
Add the domain, the internal IP and port number
In the event you want to edit the headers, that can only be done in Custom Locations. For example, in the event you want to bypass caching for media servers.
Now request a new SSL:
You don’t have to move these sliders - but it is highly recommended
Done! Now navigate to your site and you are connected via SSL by Let’s Encrypt! The certs auto-renew before the 90 days are up so do not worry about updating them manually.
Add this line to increase upload limits: client_max_body_size 5G;