Why Your Home Deserves a Database
Most people have no idea what they own until something goes missing, breaks down, or needs to be insured. A home inventory – a structured record of your appliances, electronics, furniture, tools, and valuables – is the kind of thing everyone knows they should have and almost nobody actually maintains. Spreadsheets fall apart, photos get disorganized, and dedicated apps either cost a subscription or live on someone else’s server. Homebox changes that calculation.
Homebox is a free, open-source home inventory and asset management application you can run entirely on your own hardware. Built with Go on the backend and a clean Vue.js frontend, it gives you a searchable, filterable catalog of everything in your home – organized by location, labeled with purchase dates, linked to warranty documents, and accessible from any browser on your network. No cloud account required, no monthly fee, no third party holding your household data.
Self-hosting it takes about fifteen minutes.

What You Will Need Before Starting
Homebox runs well on almost any Linux machine – a Raspberry Pi, an old laptop, a home server, or a virtual machine. The only hard requirement is Docker and Docker Compose. If you already have those installed and a terminal open, you are most of the way there. The application is lightweight enough that it runs comfortably alongside other self-hosted tools without competing for resources.
You will also want to decide where you are storing your data. Homebox uses a SQLite database by default, which keeps things simple – there is no external database to configure or maintain. What you do need is a stable directory on your host machine to bind-mount into the container, so your inventory data persists across container restarts and updates. Pick a path you control, something like /opt/homebox/data, and make sure it exists before you start. Run mkdir -p /opt/homebox/data to create it if needed.
Optionally, decide whether you want Homebox accessible only on your local network or exposed externally through a reverse proxy. For most home users, local-only access is the right call – your inventory data does not need to be reachable from the internet. If you do want remote access, placing Nginx Proxy Manager or Caddy in front of it handles HTTPS cleanly. That setup is worth doing if you plan to check your inventory while traveling or filing an insurance claim from your phone away from home.
Deploying Homebox with Docker Compose
Create a new directory for your Homebox project and add a docker-compose.yml file inside it. The compose file is straightforward – Homebox publishes an official Docker image, and the configuration is minimal. Here is what a working compose file looks like:
- image: ghcr.io/hay-kot/homebox:latest
- container_name: homebox
- ports: “3100:7745”
- volumes: /opt/homebox/data:/data
- environment: HBOX_LOG_LEVEL=info, HBOX_WEB_MAX_UPLOAD_SIZE=10
- restart: unless-stopped
Port 7745 is Homebox’s internal port. Mapping it to 3100 on the host means you reach the interface at http://your-server-ip:3100. The HBOX_WEB_MAX_UPLOAD_SIZE variable controls the maximum file size for attachments like receipts or warranty PDFs – the default is 10 MB, which is reasonable for most documents. Once the file is saved, run docker compose up -d from that directory. Docker pulls the image and starts the container in detached mode. Check it is running with docker ps, then open a browser and navigate to your server’s IP on port 3100.

The first time you open Homebox, it prompts you to create an account. This is your local admin account – there is no external authentication provider involved. Fill in a name, email, and password, and you land on the main dashboard. From there, the interface walks you through the two foundational concepts: Locations and Items. Locations are physical spaces – kitchen, garage, office, basement. Items live inside locations. Everything else in Homebox builds on that structure, so spending five minutes mapping out your real locations before adding items pays off later when you are filtering a 300-item inventory by room.
Building Your Inventory the Right Way
The temptation when you first open a new inventory tool is to add everything immediately, which usually results in a mess of untagged, unlabeled entries that are harder to search than no database at all. A better approach is to work room by room, completing each location before moving to the next. Homebox supports custom fields on every item, so you can record serial numbers, purchase prices, purchase dates, and store names consistently across your catalog. Use that structure from the start.
Attachments are where Homebox earns its keep for anything insurance-related. Each item has an attachments tab where you can upload receipts, photos, warranty cards, and manuals as PDFs or images. For high-value items – televisions, laptops, appliances, jewelry – uploading a photo of the item alongside its receipt creates a record that holds up when you need to file a claim. The upload limit you set in the environment variable applies here, so if you are scanning multi-page manuals, raise that value accordingly in your compose file and recreate the container.
Labels work as a cross-location tagging system. Unlike locations, which are physical and hierarchical, labels are freeform – you might tag items as “under warranty”, “insured”, “needs repair”, or “gifted”. A filter combining a label with a location gives you a very specific slice of your inventory fast. For example, filtering for items tagged “under warranty” in the “home office” location tells you exactly which pieces of equipment still have coverage without scrolling through everything you own. Homebox also generates a QR code for each item, which you can print and attach to physical objects to pull up the full record instantly.

Keeping Homebox Running and Up to Date
Updating Homebox is a two-command process. Pull the latest image with docker compose pull, then recreate the container with docker compose up -d. Because your data lives in the bind-mounted volume rather than inside the container, updates never touch your inventory. Your SQLite database stays exactly where you put it. If something goes wrong with an update, you can roll back by specifying a pinned image tag in your compose file instead of latest – check the Homebox GitHub releases page for available tags.
Backups are worth automating from day one. The entire Homebox dataset is a single SQLite file inside your /opt/homebox/data directory. A simple cron job that copies that directory to a second drive, a NAS, or an encrypted cloud bucket covers you completely. Because the file is self-contained, restoring from backup is just placing the file back in the right directory and restarting the container – no database dump, no restore procedure, no downtime beyond the restart itself.
If you are already running other self-hosted household tools – a recipe manager like Tandoor, for example – Homebox fits naturally into that same Docker stack without any friction. And if your home inventory ever gets detailed enough to include network equipment you want to track by MAC address or wake state, that is a different class of problem entirely. For most people, though, the issue is simpler: they own things they cannot account for, and Homebox is a clean, permanent fix for that.





