Proxmox - Setting up user friendly urls


I have been recently tinkering up with idea of setting up a homelab and self hosting few services such as DNS Server, Media server, RSS Aggregator etc along with some standard monitoring tools.

I evaluated two products, Proxmox and Unraid

After evaluating both, I choose Proxmox primarily because it seemed to fit my needs more than Unraid. Unraid is primarily useful if you have lot of data which needs to be made available to multiple services.

Whereas, Proxmox seems more suitable to run independent services altogether, either in [Docker](https://en.wikipedia.org/wiki/Docker_(software), VMs or Linux Containers

For me, the size of the data was not going to be very much, atleast initially and I found the idea of running an open source software (Proxmox) more appealing than one I had to purchase (Unraid).

I had a spare 12 CORE / 32 GB machine on which I quickly setup Proxmox and I must say, I really like the way I was quickly able to run the following services in a day:

The cool thing about Proxmox is that it uses a Type 1 Hypervisor called Kernel-based Virtual Machine (KVM) to run all the above mentioned services in Linux Containers running on Debian Linux OS

What that essentially means is that all these services get their own unique IP Addresses on my LAN network as opposed to all running on a single IP Addresses and exposing on different ports. Type 1 Hypervisor means that they are able to directly access machine hardware and do not have the any additional layer or overhead of resource hungry VM’s.

Each LXC takes around 200 - 300 MB of disk space and around 512 MB of RAM , making them all fit in a single commodity machine.

One caveat of this approach is that now I have tons of IP addresses and ports for me to memorize to access these services when I require. Though I can bookmark them, I do not find it appealing.

Hence, I decided to setup a reverse proxy in nginx for each of them in order for me to reach them through a very user friendly url. Here is the screenshot of the setup:

The above setup requires some manual setup of setting up a /etc/hosts file with appropriate entries as follows

# Hosts for nginx proxy manager
192.168.1.133 nginx
192.168.1.133 plexui
192.168.1.133 tui
192.168.1.133 jellyfinui
192.168.1.133 grafanaui
192.168.1.133 promui
192.168.1.133 zkui
192.168.1.133 piholeui
192.168.1.133 rssui

Here 192.168.1.133 is the IP Address of Nginx Proxy Manager

With the above setup I can reach my services in friendly urls such as:

http://plexui, http://tui, http://jellyfinui, http://grafanaui etc.

Using Pihole for DNS Records instead of static host file

One might argue that these hosts entries need to be done in each individiaul client that needs to access Proxmox containers and is not a scaleable approach.

That is correct, the reason I went with hosts file approach is that right now, I only have a single client - my desktop PC and I do not foresee running PiHole 24x7.

Incase, I choose PiHole as my permanent DNS resolver and AdBlocker, the scaleable way would be to add these entries in PiHole itself so that it becomes available to any client within my network.