cmc/cleberg.net

My personal web garden & blog.

clone: git clone https://gitbay.org/cmc/cleberg.net.git

main: content/blog/2026-06-26-homelab-maintenance.org · raw

  1#+date: [2026-06-26 Fri 23:01:11]
  2#+title: I Don't Maintain My Homelab
  3#+description: I don't maintain my homelab... it maintains itself.
  4#+slug: homelab-maintenance
  5#+filetags: :self-hosting:
  6
  7It's true. I *don't* maintain my homelab... it maintains itself.
  8
  9Have I reached nirvana? Is this the ultimate goal of homelabbers? It seems
 10that I've somehow automated myself out of a job (hobby?) by building a resilient
 11homelab.
 12
 13Let's figure out where it all went "wrong".
 14
 15* Infrastructure
 16** Server
 17I have used a few different servers over the years, but have since consolidated
 18all of my services onto a single server ([[https://cleberg.net/blog/server-build.html][build guide here]]), reducing the
 19complexity of my environment.
 20
 21Because of the single-server setup, maintenance is down 75% (from four
 22servers to one). Yes, clusters and hypervisors and hybrid cloud solutions are
 23shiny and fancy and popular, but I just don't care for it. Instead, I have a
 24single metal box I can pick up with my hands sitting in my basement.
 25
 26I /do/ have one more "server": a Raspberry Pi 4, but it uses Home Assistant OS,
 27updates itself, and requires literally *zero* maintenance. Is that really a
 28server? I guess, by technical definition. But it certainly doesn't feel like it;
 29it feels like I've turned a potential server device into a self-sustaining IoT
 30device instead.
 31
 32** Network
 33Aside from the server itself, I have a mini rack of UniFi gear (server is in the
 34same rack). A UniFi Dream Machine Pro, a switch, and a couple of access points
 35(APs) constitute my personal data center sitting in my basement.
 36
 37Again, it really just maintains itself. UniFi supports automatic and scheduled
 38updates, allowing you to disconnect from any manual maintenance of the hardware.
 39UniFi truly is a "set it and forget it" platform.
 40
 41* Software
 42
 43There's a single crontab line on my server, which runs all updates for my Docker
 44services on a weekly basis.
 45
 46#+begin_src
 470 0 * * 0 docker-update
 48#+end_src
 49
 50Which is an alias for:
 51
 52#+begin_src sh
 53for d in ~/docker/*/; do (cd "$d" && sudo docker compose pull && sudo docker compose up -d); done
 54#+end_src
 55
 56I do run a few crontab schedules via the =root= user as well, to account for
 57permission issues. These jobs are really just for backups, to be honest. I've
 58never required a backup, but it's good to be safe.
 59
 60#+begin_src
 61# Generate a daily system report
 620 8 * * * /home/cmc/daily_sys_report.sh
 63
 64# Backup
 65SHELL=/bin/bash
 66PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 67
 68## App-aware database dumps
 6945 1 * * * mkdir -p /tank/cloud/server/backups/immich && sudo docker exec -t immich_postgres pg_dumpall -U postgres > /tank/cloud/server/backups/immich/immich-postgres-$(date +\%F).sql
 7050 1 * * * mkdir -p /tank/cloud/server/backups/piped && sudo docker exec -t piped-postgres pg_dumpall -U piped > /tank/cloud/server/backups/piped/piped-postgres-$(date +\%F).sql
 71
 72## Backup files to ZFS pool
 730 2 * * * rsync -aHAX --delete /var/lib/plexmediaserver/ /tank/cloud/plexmediaserver/
 745 2 * * * rsync -aHAX --delete /var/www/ /tank/cloud/server/web_server/
 7510 2 * * * rsync -aHAX --delete /etc/nginx/ /tank/cloud/server/nginx/
 7615 2 * * * rsync -aHAX --delete --exclude='**/postgres/' --exclude='**/postgresql/' --exclude='**/mysql/' --exclude='**/mariadb/' --exclude='**/redis/' --exclude='**/valkey/' --exclude='**/database/' --exclude='**/cache/' --exclude='**/tmp/' --exclude='**/logs/' /home/cmc/docker/ /tank/cloud/server/docker/
 7720 2 * * * rsync -aHAX --delete /home/cmc/.ssh/ /tank/cloud/server/ssh/
 78#+end_src
 79
 80Aside from this, the only other required updates are running =apt update= and
 81potentially restarting. This requires about 60 seconds of time whenever I want
 82to do it.
 83
 84#+begin_src sh
 85sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
 86#+end_src
 87
 88* The Outcome
 89
 90So, what's the end result? I've approximated it somewhere around /15 minutes of
 91maintenance per month/, barring an emergency.
 92
 93If that's normal to you, congrats - you've peaked in life. However, that's
 94*absolutely absurd* to me. I used to spend days on end building, maintaining, and
 95debugging various aspects of my servers, databases, apps, etc.
 96
 97You know what's even crazier? If I don't have 15 minutes in a month to =ssh= into
 98my server and update things, it literally does not affect anything. I could
 99probably go 6 months (maybe more?) without touching it and it wouldn't break.
100
101/(This is not a challenge, please don't break my server.)/
102
103What a great situation to be in - especially for someone who's become as busy in
104their career as I have. I feel like I've struck a fantastic balance between
105privacy, security, and convenience.