I am building up a selfhosted homelab after a few years of building up services on a single old desktop computer that I bought for $300. I had installed Ubuntu on it, and upgraded the RAM, etc and basically just used Docker to stand-up various services that all of you would be familiar with.
As I grew my use, it started to get more difficult to manage ports and networks and so I decided to make an investment and buy a used HP380 G8 server and installed proxmox. I love it.
The problem is now instead of a proliferation of ports now I have a proliferation of ips. Also, my damn Internet provider doesn’t allow me to disable DHCP and its “reserve ip” is broken. It has an option for “bridge mode” which seems to allow me to make it simply a gateway but I haven’t tried that mostly because I don’t want to impact my family during the day/night when they are using the network.
What I have tried to setup various nameservers but they aren’t doing what I want. I installed unbound yesterday to play around and it works but I don’t know how to get the IP address/Name from proxmox over to the /etc/unbound.conf file for example.
My question is simply, what do you guys use to keep track of your IPs? Ideally, I could have something in Proxmox that registers the name/ip that I could patch into pihole or unbound or dnsmasq and fairly easily be able to manage that.
Any advice?
I use docker + traefik + a simple domain alias in my router to give all of my services easy to remember dns names.
I do a few things to keep track of my installed services.
- I run an instance of Heimdall, which is an utterly simple launcher. All of my services with administration panels get added here.
- I maintain an excel sheet with all of my assigned IPs. It doesn’t matter if it’s a VM, a container, an iPhone, or some other hardware device. Everything is assigned a static IP and added to the excel list.
- When I’m creating containers and VMs in Proxmox, I make sure that the proxmox ID of the container or VM is the same as the final octet of the IPV4 IP address. So if my Heimdall service is set up on 192.168.1.155, then the Heimdall LXC gets ID 155. I do this so that I can quickly look up the IP of any service in Proxmox without having to open my spreadsheet.
If you follow this convention, then you could easily export the IDs of all of your proxmox containers and VMs by following the instructions here. Make a few transformations to turn the IDs into IP addresses, and you have a .csv you could import elsewhere.
I’m sure someone has made a tool to do this already somewhere. On Github, xezpeleta made an inventory script “to grab proxmox nodes. This will also try to grab the IP if you have the guest agent installed.” I bet there are others out there.
Thanks for this, i am also now using Heimdall! Its great.
Can you put your own router behind, what I presume, is the ISP router? Then you can manage DHCP and IP address reservation.
This turned out to be the solution that I chose. My internet provider did not support DHCP and even DNS was hard coded which made it hard for me. So, i switched the modem into Bridge mode and installed opnsense on a computer that I had after installing a 2x1GB NIC for it. Now I have full control over naming and now everything mostly works as I need it to.
That’s awesome, glad you were able to find a solution!
This is very unlikely, but does your ISP router offer any dynamic DNS options with the DHCP?
The process would be DHCP giving out address --> Host registered, returns Hostname --> DHCP gets hostname --> DDNS update sent to DNS serverI‘m not sure if I understand your problem. How many VMs, hostnames, etc. are we talking about?
@knaak I have an excel sheet with all the IP addresses in my homelab.
Unbound is a recursive DNS, not an authorative. An authorative DNS server is needed for adding your own records. I suggest using bind, which can be both a recursive and an authorative.
I haven’t used proxmox but I can share with you my setup.
It also has several docker deployments plus some services running directly in the machines using a reverse proxy to only manage a couple of IPs given by tailscale.
So for pihole it was first manually configured with its tailsacle IP and included it in the DNS pointing to the machine which has the reverse proxy.
I’m using caddy, so the Caddyfile has this entry:pihole.hosted.local { reverse_proxy <Tailscale IP>:<port> }
You can have several blocks like this to manage your different services.