Nginx Proxy Manager on UDM-Pro¶
https://nginxproxymanager.com/
Credits¶
https://github.com/unifi-utilities/unifios-utilities/issues/149
Requirements¶
- Setup on-boot-script from unifi-utilities/unifios-utilities.
- Install the container-common scripts. This will keep the container logs from growing too large.
Setup¶
- In your UniFi Network controller, create
proxymanager
network (vlan 6, 10.0.6.1/24, no DHCP). -
Create directories:
mkdir -p /mnt/data/proxymanager/data /mnt/data/proxymanager/letsencrypt
-
Create
/mnt/data/podman/cni/30-proxymanager.conflist
with the following:
30-proxymanager.conflist
{
"cniVersion": "0.4.0",
"name": "proxymanager",
"plugins": [
{
"type": "macvlan",
"mode": "bridge",
"master": "br6",
"ipam": {
"type": "static",
"addresses": [
{
"address": "10.0.6.4/24",
"gateway": "10.0.6.1"
}
],
"routes": [
{"dst": "0.0.0.0/0"}
]
}
}
]
}
- Create
/mnt/data/on_boot.d/20-proxymanager.sh
with the following:
20-proxymanager.sh
#!/bin/sh
## configuration variables
VLAN=6
IPV4_IP="10.0.6.4"
# This is the IP address of the container. You may want to set it to match
# your own network structure such as 192.168.5.3 or similar
IPV4_GW="10.0.6.1/24"
# As above, this should match the gateway of the VLAN for the container
# network as above which is usually the .1/24 range of the IPV4_IP
# container name; e.g. nextdns, pihole, adguardhome, etc
CONTAINER=proxymanager
if ! test -f /opt/cni/bin/macvlan; then
echo "Error: CNI plugins not found." >&2
exit 1
fi
# set VLAN bridge promiscuous
ip link set br${VLAN} promisc on
# create macvlan bridge and add IPv4 IP
ip link add br${VLAN}.mac link br${VLAN} type macvlan mode bridge
ip addr add ${IPV4_GW} dev br${VLAN}.mac noprefixroute
# (optional) add IPv6 IP to VLAN bridge macvlan bridge
if [ -n "${IPV6_GW}" ]; then
ip -6 addr add ${IPV6_GW} dev br${VLAN}.mac noprefixroute
fi
# set macvlan bridge promiscuous and bring it up
ip link set br${VLAN}.mac promisc on
ip link set br${VLAN}.mac up
# add IPv4 route to DNS container
ip route add ${IPV4_IP}/32 dev br${VLAN}.mac
# (optional) add IPv6 route to container
if [ -n "${IPV6_IP}" ]; then
ip -6 route add ${IPV6_IP}/128 dev br${VLAN}.mac
fi
if podman container exists ${CONTAINER}; then
podman start ${CONTAINER}
else
logger -s -t podman-dns -p ERROR Container $CONTAINER not found, make sure you set the proper name, you can ignore this error if it is your first time setting it up
fi
- Run the following commands:
chmod +x /mnt/data/on_boot.d/20-proxymanager.sh
/mnt/data/on_boot.d/20-proxymanager.sh
/mnt/data/on_boot.d/05-install-cni-plugins.sh
- Start NPM:
podman run -d \
--systemd=false \
--network proxymanager \
--name proxymanager \
-e TZ=America/Chicago \
-e DB_SQLITE_FILE="/data/database.sqlite" \
-v "/mnt/data/proxymanager/data:/data" \
-v "/mnt/data/proxymanager/letsencrypt:/etc/letsencrypt" \
jc21/nginx-proxy-manager:latest
If everything worked the Nginx Proxy Manager interface should be available at http://10.0.6.4:81
Default Admin User:
admin@example.com
Default Admin Password:
changeme