Hey,
I built pve-meta – a place for structured metadata next to Proxmox guests, and I'd love some feedback.
It all started with me wanting Traefik routes across my containers maintaining a bunch of yaml files buried in my traefik LXC. There's an existing plugin that reuses Proxmox's notes field for this; but that felt like a hack. Tags don't work for this ( imo ) bc they are flat, notes are free text and i personally don't have the discipline to keep external inventories consistently updated. So i built the thing that i wanted:
one YAML document per VM or LXC, stored in /etc/pve (replicated with the cluster like everything else there), with a native API, an editor tab in the Proxmox UI (tree + Monaco text mode), JSON Schema support, and a CLI for hook scripts. And prefixes on the keys to allow multiple things to share the same yaml.
Its kinda boring – and still needs some UX work for sure – it's just a place to keep per-guest config that feels native to Proxmox. But with that i can have tiny automations / integrations that turns Proxmox into the "single pane of glass" for most of my usecases by keeping the intent next to the machine, inside the Proxmox UI you'd check anyway. That's the kinda the whole thesis: make Proxmox extensible without leaving its dashboard.
- Docker Compose as nested YAML (pve-compose) – the compose subtree of a guest's document is the stack. A loop on the node renders it into the container and runs compose up.
- Traefik routes from guest metadata (pve-meta-traefik) – each guest declares its routers (and middlewares, ports, the lot) under a traefik subtree, and a small service turns all of them into the dynamic config Traefik polls over its stock HTTP provider.
- GPU picker for LXC (pve-meta-nvidia) – the schema auto-populates from the node's actual cards, you tick which UUIDs a container gets, and a loop writes the passthrough config.
- Boot-time game drive lineage for my 2-gamers-1-CPU box – which VM owns the master image and where to mint the fresh clone of all the installed games lives in metadata, read by a hookscript at boot.
Planned:
- DNS record field that pulls directly into my local Technitium DNS
- A "Seat" choosing interface (named and matched pairs of PCIe USB card and GPU – to select at which seat a given vm starts – just as a small JSON Schema)
- Some decent abstraction / interface to allow some easy API to render back status or small triggers to the Proxmox dashboard ( think docker health in the LXC status – or uptime per docker container or traefik status ) – not really sure on the ideal shape yet.
Honest disclaimers: this is not production-ready. There isn't even a real permission system attached – it's either all or no access.
( notably, the guest files integration can push parts of the metadata into lxc's at configured locations – which effectively means root access to any container – but for my own homelab thats fine ; just something to maybe know)
Feel free to try it – it's available as deb releases or from my apt repo ( instructions in the GitHub Readme). Usage is at your own risk;
I would love some feedback and thoughts.
Contributors or reviews welcome as well.
( FYI: I'm aware that the code is fairly messy and large sections are LLM generated – It's a WIP for sure )
https://www.reddit.com/gallery/1wmti4t
Source: r/Proxmox · by /u/arki05