Sunday, 26 April 2026
Home-lab design (2026 edition) part 3 - Inside the Docker VM
This is the next part of my progressively-deeper look at my "home lab" setup in 2026 - now we're peering into the Docker VM itself.
There are a million "here are the 19 Docker apps you ABSOLUTELY MUST run in 2026" listicles out there, that's fine. I don't run that many, and many of them are of a highly-personalised, only-on-my-network-thankyou nature that I'm not even going to mention. The key two (yes, just two) are [Nginx Proxy Manager](https://nginxproxymanager.com/) and [Arcane](https://getarcane.app/). The first because it means I can forget about individual internal network addresses, port numbers, and "this website is not secure" non-HTTPS browser warnings, the latter because it's a dead simple dashboard to see what's going on at the Docker level. I'm not even going to talk any more about Arcane because it's just so simple; it's exactly what you'd expect a Docker web UI to look like:
## Nginx Proxy Manager ALL THE THINGS
NPM is just a really nice and simple frontend for an Nginx instance, and I must admit I may have got a little carried away re-front-ending almost every local-network-based web app I regularly use, viz:
- Arcane
- HAOS
- My Synology NAS
- My Mikrotik router
- Octoprint
- My Raspberry Pi
- The Proxmox UI
- My DLNA streamer, Serviio
- My ISP router (a TP-Link)
- All my personal scratch-my-own-itch apps; and
- Nginx Proxy Manager itself(!)
### Setting up
Now *most* of these webapps and Dockerized apps work *great* with Nginx Proxy Manager providing a wildcard HTTPS certificate and proxying for them. If it's a simple app like `http://nas:5000` it's the work of seconds to give it a better address. For a new Dockerized webapp, my process is:
- Get it going and find out what port it's on, i.e. `webport`
- Check I can hit it at `http://docker:webport`
- Go into NPM and add a proxy host for `coolapp.lab.themillhousegroup.com` that points to `http://docker:webport`, and add force SSL on the SSL tab using my `*.lab.themillhousegroup.com` wildcard certificate
- I've already got a corresponding "wildcard" DNS `CNAME` entry in the Mikrotik router that ensures `*.lab.themillhousegroup.com` will resolve to `docker`:
NPM automagically manages this certificate for me thanks to the wonders of the `DnsMulti` DNS-based certificate management system, which does the whole Lets Encrypt automated-renewal dance via any one of a [huge number of DNS providers](https://go-acme.github.io/lego/dns/#dns-providers) (I use Netlify which is as simple as configuring a Personal Use Token and giving it to the `dnsmulti` plugin as an environment variable)
There are a couple of "difficult" apps that needed a little more configuration though.
### Home Assistant
Doesn't take kindly to being proxied by NPM and has to have a couple of (very simple) stanzas added to its `configuration.yaml`:
```
# Allow NGinx Proxy Manager to proxy for homeassistant:
# https://community.home-assistant.io/t/using-nginx-proxy-manager-with-homeassistant-all-via-docker/725019/6
# https://www.reddit.com/r/homeassistant/comments/1dp4nwf/hass_behind_nginx_proxy_manager/
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.240.0.105 # IP of docker
- 10.240.0.0/24 # the Docker subnet
- 127.0.0.1 # Add the localhost IPv4 address
- ::1 # Add the localhost IPv6 address
# ... and further to that:
# https://community.home-assistant.io/t/using-nginx-proxy-manager-with-homeassistant-all-via-docker/725019/13
homeassistant:
external_url: "https://haos.lab.themillhousegroup.com"
```
As you can probably tell, I like pasting the relevant web link into configuration docs; those links are to various fora - [Reddit `/r/homeassistant`](https://www.reddit.com/r/homeassistant/comments/1dp4nwf/hass_behind_nginx_proxy_manager/) for the `trusted_proxies` IP addresses and the [Home Assistant Community](https://community.home-assistant.io/t/using-nginx-proxy-manager-with-homeassistant-all-via-docker/725019/13) for the `external_url` setting.
### Proxmox
Proxmox *really* wants you to use HTTPS everywhere, so you need to turn on ALL the SSL options in NPM, and ALSO use https *in the address of the proxied instance as well* - which is unusual, but makes sense, as it does create a self-signed certificate when you first set up your system.
I basically followed [this guide on Reddit](https://www.reddit.com/r/Proxmox/comments/1jsgto6/accessing_proxmox_via_nginx_proxy_manager/) so my NPM setup for `proxmox.lab.themillhousegroup.com` looks like this (note the `https` in the Scheme - different to every other host!):
Labels:
arcane,
dns,
dnsmulti,
docker,
docker-compose,
homelab,
markdown-enabled,
mikrotik,
network,
networking,
nginx,
nginx-proxy-manager
Subscribe to:
Post Comments (Atom)




No comments:
Post a Comment
Comments welcome - spam is not. Spam will be detected, deleted and the source IP blocked.