Skip to content
Infrastructure

Deploying Homebox, a self-hosted home inventory, in the homelab

By Victor Da Luz
homelab homebox proxmox docker self-hosted sqlite inventory

I never knew what I owned. Not in any useful way. When a device died under warranty, I went digging through email for the receipt. When insurance asked what was in the house, I guessed. I wanted one place to record what I have, what it cost, where it lives, and where the paperwork is, and I wanted to host it myself.

This is the story of picking an inventory tool, deploying it on my Proxmox cluster, and the one setup step that is easy to get wrong.

Picking an inventory tool

Three options made the shortlist, and the requirement that decided it was self-hosted plus dedicated inventory focus.

  • Grocy is excellent, but it is a whole household-management suite: groceries, recipes, shopping lists, chores. Inventory is one feature among many, and I did not want to run all of that to track belongings.
  • Home Assistant with a Grocy integration leans automation-first. Good if inventory is part of a larger automation story; overkill if it is not.
  • Homebox does one thing: track stuff. Item categories, locations, photo attachments, receipts and documents, warranty dates, full-text search, QR code labels, and a mobile app. It stores everything in SQLite, so there is no separate database to deploy.

Homebox won on simplicity. A dedicated inventory app with a single-file database is exactly the right amount of tool for the job.

Deploying it: Docker-in-LXC

My homelab runs services as Docker containers inside Proxmox LXC containers. It is a slightly unusual pattern, but it wraps a normal Docker Compose stack in Proxmox-level backups, replication, and HA failover. Homebox got the same treatment, and because it uses SQLite, the stack is just one container. No database service, no connection strings, no init-order surprises.

I put it behind my Traefik reverse proxy so it is reachable over HTTPS at an internal name, and drove the deployment with Ansible so it is reproducible. The SQLite database lives on a bind-mounted path inside the LXC, which means it gets backed up and replicated along with the container. Replication runs from one node to another, and HA handles failover if the primary node goes down.

The whole thing came up clean. SQLite is the reason: the most common self-hosted deploy headache is the database, and Homebox simply does not have a separate one.

The admin-account step that is easy to miss

Homebox does not ship with a preset admin login. You create the first account through the web UI’s registration form, and that requires registration to be enabled. The safe pattern is a three-step dance:

  1. Enable registration in the config.
  2. Open the UI, register your account.
  3. Disable registration again and redeploy.

If you leave registration on, anyone who can reach the URL can create an account. If you never enable it, you cannot create the first one. Enable, register, disable. After that the instance is locked down to the accounts that already exist.

What it does well, and what it does not

Once it was up, the day-to-day features delivered:

  • Locations and categories. Nested locations (house, room, shelf) and item categories make a large inventory navigable.
  • Attachments. Photos of the item, the receipt, and the manual all attach to the record. This is the part that pays off when warranty time comes.
  • Warranty tracking. Purchase date and warranty expiry on each item, so I can actually answer “is this still covered.”
  • Full-text search. Type a name, find the thing.
  • Mobile app. Add and look up items from my phone, which is where most data entry actually happens.

One honest limitation: Homebox generates QR code labels, but at the time I set it up it did not support scanning them back in to pull up an item. Generation without scan-to-lookup is half the loop. Useful for labeling, not yet the tap-to-find workflow I was hoping for.

Where it landed

Homebox slotted into the homelab like any other service: behind Traefik over HTTPS, on the Homepage dashboard, monitored by Uptime Kuma, and backed up and replicated with everything else. The inventory itself is the slow part, because cataloging a house is a grind, but the system is there and it is the place I look now instead of guessing.

A few takeaways:

  • For a single-purpose app, a SQLite backend removes the single biggest source of self-hosted deploy pain. No database container, nothing to get the init order wrong on.
  • Homebox has no default admin. Enable registration, create your account, disable registration, redeploy. Miss the last step and your instance is open.
  • Match the tool to the job. Grocy and a Home Assistant integration are more capable, but a dedicated inventory app was less to run and easier to live with.
  • QR generation is not the same as QR scanning. If a scan-to-lookup workflow matters to you, confirm the current state before you count on it.

Related reading

Infrastructure

Deploying RomM, a self-hosted ROM manager, in the homelab

I wanted a web-based, self-hosted way to organize a pile of game backups with real metadata. RomM was the only option that fit. Here is the Docker-in-LXC deployment, the two gotchas that cost me time, and the NAS mount mistake that bit me later.

Read
Infrastructure

Diagnosing slow RomM scans on a large ROM library

RomM was taking 60-80 seconds per ROM during its first scan on my homelab. Here is what I found, what I changed, and why the real answer turned out to be a much bigger library than I thought.

Read

Ready to Transform Your Career?

Let's work together to unlock your potential and achieve your professional goals.