IP Tag fixes a problem I didn’t know I had
If you run Proxmox, you probably have a mental map of which IP belongs to which container or VM. Mine lived in my head, in a spreadsheet, and in a few places I forgot to update. It worked until I needed an address right now and had to click through guests to find it. I was reading Reddit and someone asked about managing IP addresses and I replied that I used Pi-Hole, Snipe-IT, and Zabbix. Not wonderful, but also not really that bad.
I never thought of it as a problem. Then I found IP Tag, a Proxmox community script that fixed it, and I can’t go back.
What it does
IP Tag is part of the Proxmox community scripts. It installs a small systemd service on your Proxmox node that reads the IP address of each LXC container and VM and writes it into the guest’s tags. Tags show up right in the resource tree and on each guest’s header, so the address is visible without opening anything.
The service also keeps the tags current. If a guest’s IP changes (a DHCP lease change, a re-IP, a migration), the tag updates to match.
Before you install
The script runs in the Proxmox host shell, not inside a guest. The node needs two packages first:
bashapt-get install -y ipcalc net-tools
I just let the script install them for me. ;-)
Installing it
Open the shell on your Proxmox node and run the install command from the script’s page. I won’t paste it here, so you always get the current one from the source. It’s worth reading the script before you pipe anything from the internet into a root shell on your hypervisor.
The installer is interactive and starts with a menu:
- Install with automatic service (recommended)
- Install command only (manual execution)
- Update existing installation
- Cancel
I chose option 1. The service is the whole point, since I didn’t want to remember to run anything. It installed its dependencies and set up its scripts, then moved on to configuration.
Choosing a tag format
The first question is how much of the IP address to show:
- last_two_octets: e.g.
0.100(the default) - last_octet: e.g.
100 - full: e.g.
192.168.0.100
I picked last_octet. My whole homelab sits in one /24, so the first three octets are the same on every guest and only add noise to a crowded tag list. If you have multiple subnets or VLANs, the last two octets or the full address will serve you better. Pick based on how many networks you have, not on what looks tidy.
The second question is the check interval. The default is 300 seconds (5 minutes), with a recommended range of 300 to 3600 seconds. I stuck with default, because why not? Since the tags only change when an address does, I didn’t see a reason to poll aggressively.
The result
Here’s my Plex container:
Look at the tags next to the container name. The 13 is new, and it’s the last octet of the address. The console below confirms it: eth0 has 192.168.1.13/24. The community-script and media tags were already there. The first came from how the container was created, and the second is one of mine. IP Tag simply sits alongside them.
Now I can scan the resource tree and see addresses at a glance, with no clicking through guests and no drift between what the spreadsheet says and what’s true.
Things worth knowing
- Configuration lives in
/opt/iptag/iptag.conf. Restart theiptagservice after you change it. - Run it on demand with
iptag-runif you don’t want to wait for the next interval. - Full documentation is in the project’s GitHub discussion.
- It works for VMs too, not just LXCs. Only a few of my VMs were detected without some mucking around and I didn't find it worth doing for all of them.
Wrap-up
This is a small tool, but it removed a daily bit of friction I’d stopped noticing. I installed it on all 5 nodes in my Proxmox cluster but I wish it could be run on a single one. Perhaps I should look at expanding it. ;-)

