Topic
DevOps & Automation
DevOps without the buzzwords. Ansible roles that read clean six months later, Terraform you can hand to a teammate, CI pipelines that fail loudly and recover gracefully, and GitOps when it earns its keep. Aimed at small teams and home labs — most of what works at FAANG scale is overkill here, and most of what works here would survive a step up. Just don't pretend a Compose file isn't enough when it is.
148 articles in this topic.
Featured posts
-
Borgmatic: Borg Backup, Done Right
BorgBackup is great. Borgmatic makes you actually run it: config-driven schedules, hooks, healthchecks, and a backup system that pages you when it breaks.
11 min read -
ClickHouse for Self-Hosted Logs
ClickHouse can store TB of logs on one node, query in seconds, and outscale Loki and Elasticsearch in raw cost. Here's how to wire it up with Vector and Grafana.
11 min read -
AI Swarm Audited My 840-Post Blog
I pointed a parallel swarm of AI agents at 840 technical posts to fact-check and refresh them — the architecture, the token bill, and the guardrails.
12 min read -
OPA & Gatekeeper: Policy as Code
Open Policy Agent and Gatekeeper enforce rules across Kubernetes — block privileged pods, require labels, restrict images. Rego basics and real homelab constraints.
11 min read -
Claude Code in a Homelab Workflow
Claude Code puts an agentic AI assistant in your terminal for real homelab work — compose files, bash, Ansible, systemd. The honest take on cost and data.
12 min read -
Kustomize vs Jsonnet for K8s Manifests
Kustomize patches YAML with overlays. Jsonnet is a real templating language with imports and functions. Here's which K8s manifest tool to pick.
9 min read
All DevOps & Automation articles
- Borgmatic: Borg Backup, Done Right
- ClickHouse for Self-Hosted Logs
- AI Swarm Audited My 840-Post Blog
- OPA & Gatekeeper: Policy as Code
- Claude Code in a Homelab Workflow
- Kustomize vs Jsonnet for K8s Manifests
- Argo Rollouts vs Flagger Progressive Delivery
- Argo Workflows vs Tekton
- k3sup vs kubeadm for Homelab Clusters
- Dead Container Took Down Prod
- etcd vs Consul vs ZooKeeper Coordination
- SOPS + age: Secrets in Git
- Boundary vs Teleport
- Dify: Visual Agent Workflows
- Access Docker socket via TCP
- Bash One-Liners Worth Remembering
- Compiling on Linux With Low RAM
- Docker Compose Environment Variable Precedence
- Stop Putting Passwords in Docker ENV
- Multi-Platform Docker Builds with buildx
- Docker Compose useful commands
- Docker Networking: Connecting to the Host from a Container
- Docker Resource Limits: Stop Letting Containers Eat Your RAM
- Docker Volume Mounts: Essential Flags
- Dockerfile: Differences Between COPY and ADD
- Docker Strategies for Load Balancing and Failover
- Executing Commands with Asterisks in Docker
- Grafana Dashboard Variables: One Dashboard for All
- How to Transfer docker Images Without a Repository
- Install & use Doxygen via Docker
- Lazy Docker & Dive: CLI Tools That Make Docker Less Painful
- Automating Docker via Ansible
- Linux System Monitoring: Tools and Techniques
- Open Source Security: Scanning Your Dependencies Before They Scan You
- Optimizing Ansible for Faster Playbook Execution
- Podman Quadlets: Running Containers Without the Docker Daemon (or Your Sanity)
- Docker Manager Showdown: Pick One
- Restic vs Borg vs Kopia: Backup Tools for People Who've Lost Data Before
- Stop Living Dangerously on :latest Docker
- Supercharge Your Homelab Monitoring with Zabbix
- Techniques for Writing Robust, Reliable Bash Scripts
- Understanding Docker vs. Full Virtual Machines (VMs)
- Understanding PostgreSQL Connection URIs
- Function Calling in Local LLMs
- MCP Servers: Tools for LLMs
- Garden vs Tilt vs Skaffold
- Compose Watch: Faster Dev Loops
- ko vs Jib vs Buildpacks
- Cosign Keyless: Sign Without Keys
- Docker Bake vs Compose Build
- Nerdctl vs Docker CLI
- Trivy vs Grype vs Docker Scout
- Authentik vs Authelia: SSO for Your Self-Hosted Stack
- OpenTelemetry for Self-Hosters: Traces, Metrics, Logs Without the Datadog Bill
- K3s vs K0s vs MicroK8s: Lightweight Kubernetes for Home Labs
- Hoist: Label-Driven Docker Updates
- Incident Response for Self-Hosters
- Restic vs Borg vs Kopia: Backups That Actually Deduplicate
- SBOMs and Supply Chain Security
- Woodpecker CI vs Drone CI: Lightweight Pipelines for People Who Hate Waiting
- Container Security: Scan and Sign Your Images Like You Mean It
- Gitea vs Forgejo vs GitLab CE: Self-Hosted Git Without the Existential Crisis
- Loki vs ELK: Centralized Logging Without the RAM Tax
- Vault vs Infisical: Secrets Management for Teams Who've Learned the Hard Way
- Cockpit vs Webmin: Web Admin Panels That Don't Make You Cry
- Trivy + Cosign: Scan and Sign Your Images
- Prometheus + Grafana: Monitoring That Doesn't Lie to You
- n8n + LLM: Building Automations That Actually Think
- Systemd Timers vs Cron: Scheduling That Doesn't Suck
- Gitea vs Forgejo vs GitLab CE: Self-Hosted Git
- Docker BuildKit: Stop Building Images the Slow Way
- Docker Networking Demystified
- Lazydocker & Dive: Fix Your Docker CLI
- Bash for loops sequential counting
- EmDash: WordPress Done Right, Finally
- Logrotate & Compression
- Bulk rename files in bash
- When systemd swallows your service logs
- When to Use Structured Output (JSON Mode) in LLMs
- dotenv Files: The Mistakes That Leak Secrets
- Using AI to Find Security Bugs in Your Code
- Private Docker Registry with Harbor
- Alert Fatigue: Why Your Alerts Are Meaningless
- Cloudflare Workers: Edge Without the PhD
- Caddyfile Patterns That Actually Work
- Prometheus Scrape Intervals: The Hidden Tradeoff
- Semantic Versioning: The Part Everyone Gets Wrong
- Let's Encrypt Without Certbot
- HAProxy: Load Balancing Done Right
- Cloudflare WAF: Free Tier Firewall Rules
- Distroless: How to Build Slim, Secure Containers
- .gitignore Entries Every Project Actually Needs
- Multi-Stage Docker Builds: Stop Shipping Your node_modules to Production
- Cloudflare DNS: Beyond Pointing Records
- make for Project Automation (It's Not Just for C Code)
- Vault vs Infisical: Secrets Management for Teams Who've Learned the Hard Way
- Git Hooks You Should Be Using Locally Right Now
- Traefik: Docker Routing with Labels
- Docker BuildKit: Stop Waiting for Your Images to Build
- Terraform vs Pulumi: Infrastructure as Code Without the YAML Nightmares
- Nginx Proxy Manager for Normal Humans
- CI Pipeline Caching: Speed Up Every Build
- Apache in 2026: It's Time to Move On
- Self-Hoster's Disaster Recovery: When Everything Goes Wrong at Once
- mTLS Explained: When Regular TLS Isn't Paranoid Enough
- Nginx: The Config That Makes Sense
- Appwrite: Your Own Firebase, Minus the Google Surveillance Subscription
- n8n + LLM: Building Automations That Actually Think
- Your First Open Source Contribution: Less Scary Than You Think, More Useful Than You Know
- Watchtower vs Diun: Automating Docker Updates Without Burning Your Stack
- Chaos Engineering: Break Things on Purpose Before They Break Themselves
- ArgoCD vs Flux: GitOps — When Your Git Repo Is the Source of Truth
- Docker Logging: From "Where Did My Logs Go?" to Centralized Bliss
- HashiCorp Vault: Stop Hardcoding Secrets Like It's 2012
- Woodpecker CI vs Drone CI: Lightweight Pipelines for People Who Hate Waiting
- Nextcloud Advanced: Federation, Backups, and Making It Actually Performant
- Docker Security Hardening: 15 Things You're Doing Wrong Right Now
- MinIO vs SeaweedFS: Self-Hosted S3 Storage Without AWS Bills
- Portainer vs Dockge: Managing Containers Without the Terminal
- DDoS Mitigation: Teaching Your Server to Say No Politely (Then Impolitely)
- Home Assistant + Node-RED: Automate Your Home Without Losing Your Mind
- Traefik vs Nginx Proxy Manager: Reverse Proxies for Humans
- Wiki.js with GitSync: Documentation That Lives in Version Control Like It Should
- Docker Compose vs Docker Swarm: When "Good Enough" Beats "Enterprise"
- n8n vs Node-RED: Automate Everything Without Learning to Code (Much)
- Docker Compose Profiles: Run Only What You Need
- Why the `latest` Docker Tag Is Lying to You
- Docker Healthcheck Patterns That Actually Work
- Docker Container Labels: The Metadata You're Ignoring
- Why Docker Builds Are Slow: Layer Cache Explained
- The .dockerignore File You're Not Writing
- Understanding and Optimizing Docker’s daemon.json File
- Optimize Ubuntu Logs: btmp Log Rotation
- Ansible: Task and Role Inclusions for Efficient Automation
- Docker Networking Essential Guide for All Skill Levels
- Understanding CMD and ENTRYPOINT in Dockerfiles
- Copying Files Between Docker Containers and Host Machines
- Multiple Actions with a Single docker exec Call
- Tmux for Streamlining Dev Workflow
- Ansible vs. Terraform: Cloud Infrastructure Management
- WordPress, Docker, NGINX, and MySQL via Ansible
- DevOps Tools: Ansible vs. Puppet vs. Salt vs. Chef
- Uptime Monitoring with Uptime Kuma
- Observability and Monitoring for Containers
- Docker vs Podman: Key Differences
- Talos OS: API-Driven, Kubernetes-First OS
- SumGuy’s Guide to Linux Log Analysis
- Docker Compose: Orchestrating Multi-Container Applications