Ramblings of an aging IT geek
← Ramblings of an aging IT geek
homelab

one compose file to run the whole house

Consolidating a sprawl of hand-started homelab containers into a single docker-compose.yml under version control, and why that one file changed how I treat the box.

A small server rack with cabling

For a long time my homelab was a pile of containers I'd started by hand, each with its own half-remembered docker run incantation living in my shell history and nowhere else. Pi-hole here, a Samba share there, a Calibre web thing I'd forgotten the flags for. It worked until the box rebooted, at which point I'd spend an evening reconstructing the magic from history | grep docker and a lot of guessing.

This weekend I finally moved the lot into a single docker-compose.yml. Every service, its ports, its volumes, its restart policy, all in one file under git. Now the whole house comes back with one command:

services:
  pihole:
    image: pihole/pihole:latest
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
    volumes:
      - ./pihole/etc:/etc/pihole

Then docker-compose up -d and it's all there.

The real win isn't convenience, it's that the configuration is now written down. A reboot is no longer a small crisis, it's a non-event, and when I inevitably break something I can read what it's meant to be rather than excavate it from memory. The box stopped being a pet I was afraid to touch. I should have done it two years ago.