Pokhara, NepalUTC+05:45 NPT
Open to conversations

Homelab

One box, five services

A single Proxmox host running the services I use every day, with Docker Compose files in Git and a backup routine I have restored once.

2026
  • Proxmox
  • Docker
  • Caddy

Why a homelab

I wanted a place to practise the parts of operations that are hard to pick up from reading: networking, TLS, storage, and what actually happens when a service dies at an inconvenient time. The lab is one used mini PC running Proxmox. It is not production, and it is not trying to be.

What runs on it

Five services cover most of what I need:

  • Caddy terminates TLS and routes by hostname. Certificates renew automatically.
  • Forgejo keeps my private repositories in one place.
  • Uptime Kuma checks whether the services answer from outside my network.
  • Prometheus and Grafana collect basic host and container metrics.
  • Restic writes encrypted backups to object storage every night.

Each service runs in its own container, with its configuration bind-mounted from a directory that is backed up. The compose files live in a single Git repository, so rebuilding the host starts with cloning that repository.

The part I practised most

The restore. A backup I have never restored is only a hope, so I deleted the Uptime Kuma volume and restored it from Restic. The first attempt brought the container back but with the wrong file ownership, and it could not write its database. The second attempt worked once I set ownership before starting the container.

That detail is now part of the rebuild notes, which is more useful than the fact that the restore eventually worked.

restic snapshots --tag uptime-kuma
restic restore latest --target /srv/restore --tag uptime-kuma

What I would change

The setup is deliberately single-node, so a dead power supply takes everything with it. I am not planning a second server yet. The more useful next step is to measure how long a full rebuild takes, write that number down, and decide whether it is acceptable.

I also want to move more of the host setup into a repeatable script. Right now the compose files are in Git, but a few host-level steps still live in my notes.