Nginx Proxy Manager
Expose your services easily and securely https://nginxproxymanager.com/
Gotta be honest, writing Nginx code was always a headache, but once I found this I never want to go back. This makes routing SSL certificates, and websockets a breeze.
App Network Routing
flowchart TB
%% Hardware
%% rpi("Raspberry Pi 🍓")
%% ice("Micro services Server")
%% mint("Media Server 💻")
router("Router ↔")
internet("ISP 🌐")
%% Apps
pihole("Pi-Hole 🕳")
vpn("PiVPN 🔐")
ha("Home Assistant 🤖")
nginx("Nginx Proxy Manager")
nextcloud("NextCloud ☁")
vaultwarden("Vaultwarden 🛡")
wordp("Wordpress 🕸")
plex("Plex.tv 📺")
jelly("Jellyfin 🐙")
subgraph Router
router
end
subgraph "Raspberry Pi 4 🍓"
pihole <-.-> router
vpn -.-> pihole
ha -.-> vpn
end
subgraph Intel NUC
nginx -.-> pihole
nextcloud -.-> nginx
vaultwarden -.-> nginx
wordp -.-> nginx
end
subgraph Ryzen 9
plex -.-> nginx
jelly -.-> nginx
end
router <-- fiber 400mbps --> internetconnections
- Pi-hole for local DNS. Make pretty URLs for local or public services
installation
compose.ymlvia Docker
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- ./css:/app/frontend/css # if you want to tweak the css for dark mode B-)
Default Admin User:
Email: admin@example.com
Password: changeme
Publicly Facing Apps
Pretty URLs for Local Apps
- Pi-hole DNS setup
- Nginx to link Port number
Leveraging Docker's Internal DNS routing
for example vaultwarden I do not specify a port number. instead I use the container_name: vaultwarden as a DNS entry I can use in Nginx Proxy Manager
Making Certs The Easy way
Using your DNS provider's API you can automatically pull a wildcard domain for sub and apex to use for multiple domains
Let's Encrypt via DNS and Porkbun API
Dark Mode
This is for the people that may want to customize their CSS
There isn't an official dark mode, but with a bit of file digging, you too can override the main.css
- Spin up the container first and let the app pull down.
- check the
compose.ymlto map theapp/frontend/css/main.cssto a persistent volume
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- ./css/main.css:/app/frontend/css/main.css ## <----- here
- spin up the container again and go to edit that new
./css/main.cssfile
CSS
add this to the bottom of main.css
body, .modal-content{
background-color: #635366;
color: white;
}
.modal-content{
box-shadow: black 2px 2px 8px;
}
.custom-switch-description{
color: #c3c3c3;
}
#header{
background-color: #323232;
}
.navbar-light .navbar-brand{
color: white;
}
#menu{
background-color: #000;
}
.text-default {
color: white !important;
}
.tag{
background-color: #545454;
color: white;
}
.card{
background-color: #29292a;
box-shadow: black 2px 2px 8px;
}
.table thead {
border-bottom: solid black 3px;
}
.table th, .text-wrap table th, .table td, .text-wrap table td{
border-top: 1px solid #000000;
border-top-width: 1px;
border-top-style: solid;
border-top-color: rgb(0, 0, 0);
}
Redirect
Useful for redirecting a DOMAIN.com -> www.DOMAIN.com (tutorial)
Nginx Proxy Manager Redirect to Nested Page