Automated backups that work are mind-liberating! I've shared
in the previous post how I back up my data. In this post
I'll explore in detail how I handle encryption to protect my server and the insuing backup disks.
What does my system solve?
My encryption usage is meant to protect mostly against this threat:
if a stranger has access to any of my disks while they are unenergised, they must not be able to access my data.
For the backup disks this is rather simple to achieve by using full disk encryption
with Linux Unified Key Setup (LUKS).
Automated backups that work are mind-liberating! I'll share in this and the next post how I've solved it for my use case
in my homelab.
In this first post I want to explain my goals and my overall setup.
In the next post I'll explore in detail how I
handle encryption. I'd also love to hear how you handle your backups: share in the comments.
What does my system solve?
I like to think of my backup system in terms of the thread model against
the chaos and karma of the world. Which kinds of problems do I want to be protected against? After showering a couple of
times, I informally had a list on my head. Here it is, transcribed:
if I do something dumb, like deleting all my photos by accident, I want to recover that data (true story: when
migrating from Google Photos to Nextcloud, I've removed the wrong folder 😇).
if my machine breaks, I want to recover my data
if my house catches fire, is looted, or transforms itself into a pumpking (not true story), I want to recover my
data
if a stranger has access to any of the disks, they must not be able to access my data
if ransomware compromises my server, they cannot erase my backups
if I'm not available or just lazy, the system should mostly continue to work
if the system has problems, I should be notified
if the system silently stops running, I should notice
if in-disk data is inconsistent while the owner app is running, it must be stopped to flush the data
if a copied file gets corrupted or rots, it should be identified
if the writing patterns on the disks are similar, they should not fail at the same time due to correlated wear
and tear
This is a quick post just to share how much my homelab costs me.
Since it's an old laptop tucked near the fridge, one can guess it's not a lot. But I've got measurements!
I've measured 3.382 kWh in 11 days 3 hours and 54 minutes (=267.9 hours), so an average of a bit less than 13 W. In
a 365-day year, this adds up to 110.6 kWh.
My current energy contract has a fixed cost and a per-kWh cost that depends on the hour of the day:
I'm a happy user of Forgejo and I host it on my homelab
at git.sitegui.dev to store all my open source code (including this very same page).
However, as many other hobbyists
and major projects,
I have noticed an uptick in the number of crawling requests that my instance serves. My homelab is
literally an old laptop close to the fridge, so I could hear
the extra load (and it also doesn't help that Europe is
scalding with 16 degrees above average temperatures for May).
I saw an increase from an average of 1 000 requests a day to 200 000. The issue is not only the number of requests,
but their nature: these bots go over the whole git history to navigate the whole tree of files for each commit. They
also request a lot of repo archives that are expensive to generate.
The robots.txt clearly forbids bots to navigate to these pages:
My homelab is at the same time a "production" environment for my digital life and "staging" environment for all sort of
crazy project that I want to play with. It's amazing what 10-year-old hardware is capable of!