Gadgets

Docker Compose Is Still My Homelab Glue

Kevin PlumleeOctober 16, 20264 min read
Docker Compose Is Still My Homelab Glue

There is tried fancier orchestrators. you keep coming back to Docker Compose for the homelab.

Not because it is trendy. Because it is boring glue that survives reboots, Friday night tinkering, and the version of me who will not remember what Temporary Experiment #14 was supposed to do.

Compose is still my default for stacks that should come back when the power blips.

Why Compose fits home scale

At home you are the platform team, the SRE, and the person who also wants to watch a game.

You need:

  • a file I can read six months later
  • services that restart cleanly
  • networks that are explicit
  • volumes that are named on purpose
  • one command that brings a stack up

Kubernetes is wonderful in the right place. My basement is not asking for a control plane personality.

Patterns that keep me out of trouble

One stack, one folder. Each project gets a directory with docker-compose.yml, a .env.example, and a short README with ports and purpose.

Named volumes for state. Anonymous volumes are how you lose Immich or Postgres and invent new swear words.

Restart policies. unless-stopped has saved me from “why is that down after the outage” more times than you will admit.

Pin tags when it matters. latest is fun until it is not. For databases and anything with migrations, I pin.

Healthchecks where they help. Especially for dependencies that need to be ready before an app boots.

Keep secrets out of git. .env local, example file committed, secrets in a password manager.

Reboot survival is the real test

A stack that works after a fresh up is incomplete. A stack that returns after a host reboot without me SSH-ing in my pajamas is done.

I periodically test by rebooting the box on purpose. If something does not return, that is a gift. Fix the unit, the compose restart policy, or the mount path now, not during a family movie night.

Networking without heroics

Keep most lab services on internal networks and publish only what you need.

Reverse proxy in front. Separate compose networks when isolation helps. Do not expose admin UIs to the world “just for a second.” A second becomes a month.

If I need remote access, you use a tunnel or VPN pattern on purpose, not port forwarding as a lifestyle.

A minimal compose checklist

  • `restart:` set intentionally
  • volumes named and backed up
  • ports documented in README
  • image tags pinned for stateful services
  • `.env.example` matches reality
  • reboot test within the last quarter

When Compose is not enough

If I need multi-node scheduling, fancy rollout strategies, or a team of twelve fighting over the same cluster, sure, graduate.

Most homelab pain is not “we outgrew Compose.” It is “we never wrote down what we deployed.” Compose at least forces a file to exist.

The glue philosophy

Glue should be visible. Glue should be editable. Glue should not require a conference talk to restart a container.

Docker Compose is still that for you. It is the duct tape with a YAML schema. That means that as praise.

When the lights come back after a storm and the stacks blink awake on their own, I feel the opposite of regret. I feel like past me did a solid for future me.

That is the whole homelab game.

Updates without chaos

Watchtower-style auto updates are tempting. They are also how a Friday becomes a restore drill.

My compromise: auto update the toys, manually update the databases and anything with migrations. Read changelogs for the load-bearing services. Take a snapshot or backup first when the service holds photos, passwords, or configs you would cry about.

Compose makes rollbacks possible when images are pinned and volumes are sane. That is the real feature: not YAML aesthetics, recovery options.

Closing

Bottom line

This is not married to Compose forever. Be married to stacks that reboot cleanly and documents that explain themselves. Compose just happens to clear that bar at home with the least drama.

Kevin Plumlee

Founder, RVNOPS

Kevin Plumlee

15+ years running healthcare SEO, paid media, and operations. Now I advise the teams who do that work, across marketing, intake, technology, and AI.

More about me

Tell me what’s not working.

Stalled growth, spend you can’t trace, systems that fight your team. That’s a good place to start.

Start a conversation