Deployment guide

Homebox

Overview

Homebox is the open-source, self-hosted home inventory and organisation system maintained by the sysadminsmedia community. Catalogue everything you own, including items with photos, receipts, purchase details and custom fields, organised into nested locations and labels. Print QR asset labels for bins and shelves, log maintenance and repairs, track warranty expiry, and import or export your whole inventory as CSV. Multi-user groups let a household share one inventory with invitation links.

Homebox is written in Go as a single binary with the web app and an embedded SQLite database compiled in, so it is tiny, fast and simple to operate. This SecureAnyCloud image runs Homebox natively as a systemd service, fronted by nginx as a TLS reverse proxy. The image ships with an empty database, so the very first person to open the site registers the owner account.

What you get:

  • Homebox 0.26.2 as a single Go binary at /usr/local/bin/homebox (API, web app and SQLite in one)
  • An nginx TLS reverse proxy on :80 (health probe and redirect) and :443 in front of Homebox, which is bound to loopback :7745
  • One dedicated Azure data disk, re-provisioned with every VM, that holds the SQLite database and all uploaded photos and attachments at /var/lib/homebox
  • A per-VM self-signed TLS certificate and API key pepper, generated on first boot by a one-shot service and never baked into the image
  • Zero accounts at capture: the first visitor registers the owner, and no shared credential ships
  • homebox.service and nginx.service as systemd units, enabled and active
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet and subnet in the target region.

Standard_B2s (2 vCPU / 4 GiB RAM) is a comfortable starting point, because Homebox is a lightweight single binary. For the NSG, allow inbound 22/tcp from your management network, and 80/tcp plus 443/tcp from the networks your household or team will use to reach Homebox.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Homebox by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22), HTTP (80) and HTTPS (443). Review the dedicated data disk on the Disks tab, then select Review + create and Create.

Step 2 - Deploy from the Azure CLI

Accept the Marketplace terms once per subscription, then create the VM and open the ports:

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:homebox-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name homebox \
  --image sac1647283583153:homebox-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name homebox --port 80 --priority 1010
az vm open-port --resource-group <your-rg> --name homebox --port 443 --priority 1020

Step 3 - Connect to your VM

Connect over SSH as azureuser:

ssh azureuser@<vm-public-ip>

First-boot initialisation completes in well under a minute. The per-VM certificate is in place and the empty database is ready by the time SSH is available.

Step 4 - Confirm the services are running

Check both services and the health endpoints:

systemctl is-active homebox.service nginx.service curl -fsS http://127.0.0.1/healthz; echo curl -fsS http://127.0.0.1:7745/api/v1/status; echo

Both services report active. The nginx health probe on port 80 returns ok, and the Homebox status endpoint returns JSON with "health":true and the version.

The SQLite database and every uploaded photo live on a dedicated Azure data disk, which is bind-mounted onto the canonical application path. Confirm the mount:

findmnt -no SOURCE,SIZE,FSTYPE,TARGET /var/lib/homebox

Step 5 - Register the first account (this becomes your group owner)

Open a web browser and go to https://<vm-public-ip>/. The certificate generated on first boot is self-signed, so your browser shows a one-time warning. Accept it to continue. The section on enabling HTTPS with a trusted certificate replaces it with a real certificate.

Homebox shows its sign-in page with a Register link. Select Register and enter your name, email and a password. On a freshly deployed VM the database is empty, so the very first account created becomes the owner of a new group, which is your household inventory.

The image ships with no accounts and no default credentials at all. You can confirm this from the VM: the database contains zero users until you register, and unauthenticated API requests are rejected.

curl -sk -o /dev/null -w 'no token -> HTTP %{http_code}\n' https://127.0.0.1/api/v1/users/self
curl -sk -o /dev/null -w 'junk token -> HTTP %{http_code}\n' -H 'Authorization: Bearer invalid' https://127.0.0.1/api/v1/users/self

Both unauthenticated calls return HTTP 401. Access without a token, or with a junk token, stays rejected until you register your own owner account.

Step 6 - Lock down registration (recommended)

Once you and your household members have registered, disable further sign-ups so that nobody else can create an account on your instance:

sudo sed -i 's/^HBOX_OPTIONS_ALLOW_REGISTRATION=.*/HBOX_OPTIONS_ALLOW_REGISTRATION=false/' /etc/homebox/homebox.env
sudo systemctl restart homebox

You can invite additional household members at any time from the group settings using an invitation link, even with public registration turned off.

Step 7 - Explore your dashboard

After you sign in, Homebox opens the home dashboard. Quick statistics summarise your total inventory value, item count, storage locations and tags. A Recently Added table lists your latest items with quantity, insured status and purchase price.

New instances start with a set of common storage locations that you can rename or delete.

Step 8 - Create locations and add items

Select Locations to build a tree that mirrors your home (house, garage, loft, and rooms nested inside them). Then use the green Create button to add items to a location.

Every item can carry a photo, a description, quantity, purchase price, purchase source and date, warranty expiry, serial and model numbers, the manufacturer, whether it is insured, custom fields and labels.

Browse everything from the Items view as cards or a table, filtered by location or tag. Each card shows the item, its storage location and quantity.

Open any item to see its full detail page, including the fields you recorded and the maintenance log. From here you can print a QR asset label to stick on the physical item or shelf, create sub-items, and add attachments such as receipts and manuals.

Step 9 - Print QR labels, log maintenance and invite your household

  • QR asset labels: open an item and use the label maker to generate a printable QR code. Stick it on the item or its bin, and scan it later to jump straight to that item.
  • Maintenance and warranties: record maintenance entries against an item on its Maintenance tab, and set warranty expiry dates so that you can find everything still under warranty.
  • Household members: open the group settings and create an invitation link to share one inventory with the rest of your household. Each member signs in with their own account.
  • Import and export: Homebox can import and export your whole inventory as CSV from the tools section, which is handy for bulk edits, moving house or insurance records.

Security baseline

The image ships fully patched at capture time and keeps patching itself. Ubuntu's unattended-upgrades service is enabled, so security updates are installed automatically on your running VM.

The Homebox application binds to the loopback interface only, so nginx is the single network-facing entry point. Check both settings:

systemctl is-enabled unattended-upgrades grep -h . /etc/apt/apt.conf.d/20auto-upgrades
sudo ss -tlnH 'sport = :7745'

The :7745 application port is bound to 127.0.0.1 only. nginx on :80 and :443 is the sole way in from the network.

Enabling HTTPS with a trusted certificate

The image serves HTTPS on port 443 with a per-VM self-signed certificate out of the box, so logins are encrypted immediately. For any deployment reachable by real users, replace it with a trusted certificate. The image ships with nginx, which certbot can configure automatically.

These steps assume a DNS record that points your fully qualified domain name at the VM's public IP address, with 443/tcp open in the NSG:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d inventory.your-domain.example \
  --non-interactive --agree-tos -m you@your-domain.example \
  --redirect

certbot installs the trusted certificate into the existing nginx site and sets up automatic renewal. If your inventory is private, also restrict 443/tcp in the NSG to the specific networks that should reach it.

Backup and maintenance

Homebox keeps everything, the SQLite database plus every uploaded photo and attachment, under a single directory on the dedicated data disk: /var/lib/homebox. Backing up that one directory captures your entire inventory.

Stop the service briefly for a consistent copy:

sudo systemctl stop homebox
sudo tar czf <backup-dir>/homebox-$(date +%F).tgz -C /var/lib homebox
sudo systemctl start homebox

Because the database and photos live on their own Azure data disk, you can also take a coordinated Azure disk snapshot.

Keep the OS patched with sudo apt update && sudo apt upgrade. To upgrade Homebox, replace /usr/local/bin/homebox with a newer release binary and restart the service. Database migrations run automatically on start. See https://homebox.software/.

Support

This image is backed by 24/7 SecureAnyCloud support, with a guaranteed response within 24 hours and a one-hour average for critical issues. Contact sales@secureanycloud.com for help with deployment, upgrades, TLS termination, backups and data disk management.

For general Homebox questions, consult the documentation at https://homebox.software/. Homebox is licensed under AGPL 3.0 and is a project of the sysadminsmedia community. Its use here is nominative and does not imply affiliation or endorsement. All product and company names are trademarks or registered trademarks of their respective holders.

Deploy on Azure

Launch Homebox on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure