All work

Home Lab

What would happen if I lost the machine running my home services? I built a small server around that question, then tested a full recovery.

I designed it and keep it running.

A single 8GB Raspberry Pi reached by two paths: a Cloudflare Tunnel for public services and Tailscale for admin. A recovery restore was measured at 1 hour 45 minutes against a 2 hour target.

One 5W host, two doors

Raspberry Pi 4 · 8GB

Public
Cloudflare Tunnel Photos · files · calendar
Admin
Tailscale SSH · Postgres · SMB
Memory
7.26 GB allocated 9.25% headroom
Restore tested
1h 45m Under a 2h target

One Raspberry Pi, real responsibilities

The lab hosted public and private services on a Raspberry Pi 4 with 8GB RAM, a 1TB external drive, consumer internet, and no available port forwarding.

8GB, no port forwarding, small budget

The design had to preserve operating-system headroom, remain below a small external-service budget, and recover without depending on the failed node.

Compose, not Kubernetes

I used Docker Compose as Kubernetes would add overhead to a machine that only had 8GB of RAM. Cloudflare Tunnel and Caddy handled public traffic, Tailscale handled administration, and I set memory limits on the containers so I could see what fitted.

I actually ran the restore

I backed it up to Backblaze B2 with rclone encryption, then ran through the restore playbook. The full test took 1 hour 45 minutes on 15 August 2025. At the time, 96GB of backup storage cost $2.82 a month.

Outcome

A full restore completed in 1 hour 45 minutes; 96GB of backup storage cost $2.82 per month at the recorded point in time.

From this project

All work