blog.iankulin.com

Nginx-Proxy-Manager

Manually adding SSL certs in Nginx Proxy Manager

After the Porkbun DNS plugin for Nginx Proxy Manager stopped working, my homelab Let’s Encrypt certificates no longer renewed automatically, so I now download certificate bundles directly from Porkbun and install them manually. Along the way there’s background on SSL, DNS challenges, and securing internal services that aren’t reachable from the public internet. The manual approach requires repeating the renewal process every 90 days...

NGINX proxy manager - setting headers to use basic auth in your apps

Using NGINX basic auth as a lightweight alternative to building authentication for my side projects. For a standard NGINX setup, the authenticated username is passed to a Node app in an X-Username header and checked against a user list for access rights. I then cover replicating this in NGINX Proxy Manager, using access lists and the locations tab to set the header...

Website in a Docker Container

Serving static websites from small Docker containers built on BusyBox httpd, coming in at around 4MB each. I walk through the Dockerfile setup, cross-platform builds from an M1 Mac to linux/amd64, pushing to the GitHub Container Registry, and deploying via docker-compose behind Nginx Proxy Manager, including DNS and SSL configuration...

Containerised NGINX Proxy Manager & the 502 error

Running NGINX Proxy Manager in a Docker container breaks the usual habit of pointing proxies at 127.0.0.1, since localhost now refers to inside the container rather than the host. I explain why, cover the confusing exception of NPM’s own admin interface, and show how joining service containers to NPM’s Docker network lets the proxy reach them by container name via DNS, with no ports exposed to the host...

NGINX Proxy Manager

I take a look at using NGINX as a reverse proxy in front of self-hosted services, and at NGINX Proxy Manager, a project that adds a web GUI to the process and simplifies obtaining Let’s Encrypt certificates. I cover setup via Docker, along with a brief comparison of alternatives such as HAProxy, Caddy, and Traefik...