Secure Services with Nginx Proxy Manager
Set up Nginx Proxy Manager as a reverse proxy to route traffic, enable HTTPS, and manage multiple services easily.
Introduction
Running multiple services on your homelab can quickly become overwhelming. Each app listens on a different port, you have to manage SSL certificates, and routing rules are scattered all over the place.
That’s where Nginx Proxy Manager (NPM) comes in.
It provides:
- A simple web UI for managing reverse proxies.
- Automatic SSL certificates via Let’s Encrypt.
- Centralized control of all your services.
If you want to expose apps securely without editing endless configuration files, NPM is an excellent starting point.
Quick Installation
Create a docker compose file
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
#environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencryptBring it up
docker compose up -dLog in for the first time
Default Credentials
| Password | |
|---|---|
| [email protected] | changeme |
Adding Services
Create a Proxy Host
In the NPM dashboard, go to Hosts → Proxy Hosts → Add Proxy Host.
- Enter your domain (e.g., grafana.local).
- Set the forwarding IP/hostname and port (e.g., 192.168.x.x:8080).
- Enable Block Common Exploits.
Enable SSL
Open the proxy host’s SSL tab.
- Choose Request a new SSL certificate.
- Tick Force SSL and HTTP/2 Support.
- NPM will automatically fetch and renew certificates via Let’s Encrypt.
Repeat for other apps
Add more services (Nextcloud, Portainer, Jellyfin, etc.) following the same steps. Each will be accessible at its own domain with HTTPS enabled.
Conclusion
With Nginx Proxy Manager, you’ve turned a messy collection of services into a unified, secure setup:
- All apps accessible via clean domain names.
- Automatic HTTPS without manual certificate handling.
- A simple UI that saves you from editing config files.
For small homelabs and self-hosted projects, NPM strikes the perfect balance between ease of use and functionality.