Website • Documentation • GitHub
NGINX Proxy Manager provides a beautiful web interface for managing reverse proxies with automatic SSL certificates. Perfect for exposing your Docker services securely.
- Web Interface — Easy-to-use GUI for proxy management
- Free SSL — Automatic Let's Encrypt certificates
- Access Lists — IP-based access control
- Custom SSL — Upload your own certificates
- Redirections — HTTP to HTTPS and custom redirects
- Streams — TCP/UDP proxy support
- 404 Hosts — Custom 404 pages
- Docker and Docker Compose
- External Docker network
- Ports 80 and 443 available on your server
Edit docker-compose.yml:
- Replace
your-networkwith your Docker network name
docker compose up -d- Access the admin panel at
http://your-server:81 - Login with default credentials:
- Email:
admin@example.com - Password:
changeme
- Email:
- Immediately change the default email and password
- Go to "Proxy Hosts" → "Add Proxy Host"
- Enter your domain name
- Set the forward hostname/IP and port
- Enable SSL and select "Force SSL"
| Variable | Description | Default |
|---|---|---|
DISABLE_IPV6 |
Disable IPv6 support | true |
PUID |
User ID for file permissions | 1000 |
PGID |
Group ID for file permissions | 1000 |
| Port | Service | Description |
|---|---|---|
| 80 | HTTP | Web traffic (redirects to HTTPS) |
| 443 | HTTPS | Secure web traffic |
| 81 | HTTP | Admin panel |
| Path | Description |
|---|---|
./data |
NPM configuration and database |
./ssl |
SSL certificates |
- Deploy your service bound to localhost (e.g.,
127.0.0.1:8080) - In NPM, add a new Proxy Host:
- Domain:
service.yourdomain.com - Forward Hostname:
your-service-containerorhost.docker.internal - Forward Port:
8080
- Domain:
- Enable SSL with Let's Encrypt
- Go to "Access Lists" → "Add Access List"
- Add users with passwords
- Apply the access list to your proxy host
- Add a new SSL certificate
- Choose "Let's Encrypt" with DNS Challenge
- Enter
*.yourdomain.comas the domain - Configure your DNS provider credentials
For NPM to reach other containers, they must share a Docker network:
# In your service's docker-compose.yml
networks:
- your-network
networks:
your-network:
external: trueNGINX Proxy Manager is released under the MIT License.