Accessing an OMV box running a number of plugins/docker containers each with their own web pages can soon get messy with multiple IPs and ports.
It’s a common goal to access these various services through a URL like: mydomain.com/cloud, mydomain.com/lms, mydomain.com/pihole, etc. Or, as an alternative to a directory structure, to provide access via a URL like: cloud.mydomain.com, lms.mydomain.com, pihole.mydomain.com, etc.
How do you get from say “lms.mydomain.com” to “192.168.0.13:9000” in order to access the WebUI of a running logitech media server on your OMV box? The answer is to use a “middle man” that recognises and intercepts the http request for “lms.mydomain.com” and translates and routes it to “192.168.0.13:9000”. This “middle man” is another server, technically known as a “reverse proxy”.
Unfortunately, this is an area I have little knowledge of. Looking at OMV, I thought there might be three possible approaches to using a “reverse proxy”:
- Modify the configuration of the nginx server that provides the pages of the OMV webUI.
- Use the omv-nginx plugin to configure a second separate nginx server as a reverse proxy.
- If services are only provided via docker containers, then make use of this docker image: jwilder/nginx-proxy
The subject of “reverse proxy” produces about 150 hits scattered over time and place on the OMV forum. The guide written by subzero79 back in 2014 follows option 1 above. It may have (some of) the answers, but I cannot see that it has been updated for OMV3 in light of changes to nginx, and the guide was written pre-docker. The associated discussion thread doesn’t expand on it very much.
Daemon webUI access through prefix/hostname [Nginx] [Proxy_pass]
Simple fast daemon host webgui access [Nginx]
I haven’t seen an example of anyone who has chosen option 2 above and so far I have struggled to make much sense of how the jwilder/nginx-proxy might work.
In my case, I don’t intend to access any services running on OMV from outside my internal home LAN, so SSL certs etc. should not be of concern. If possible, I’d like the reverse proxy to route requests to my raspberry pi too, it’s still running “Squeeze on Arch” (SOA - https://github.com/SqueezeOnArch/soa-aur )
As I want to run pihole as a container, I have to point my router’s DNS setting at this (or on a per PC/laptop basis), that doesn’t seem to fit with subzero79’s guide, or perhaps it’s an issue which can be side-stepped by using the less convenient “host” files on each PC/laptop on my home LAN. But then perhaps I’m confused about what a DNS is in this context. In normal circumstance I do the usual thing of just using my router’s IP for both the gateway & DNS when configuring any NICs on my home LAN.
Somehow I think this shouldn’t be too hard to achieve, although the transient nature of containers is a possible complication, but as always the devil is in the detail. Of course, I’ve been googling on the subject but many refs delve straight into inner workings of nginx etc with little, or no, explanation of concepts or principles and soon go over my head. I’d really appreciate some OMV specific guidance, with solid working examples.
If I’m ever successful, I’d be happy to attempt to write a beginner’s guide for moderation which may help other users of OMV, but it’s not something I feel competent to offer support about.