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.
128 articles in this topic.
Featured posts
-
Garden vs Tilt vs Skaffold
Three inner-loop dev tools for Kubernetes — Garden, Tilt, and Skaffold. Which one actually makes K8s development bearable? Honest comparison, no fluff.
9 min read -
Compose Watch: Faster Dev Loops
Docker Compose Watch syncs your code into running containers without rebuilds. Here's how to set it up and why your dev loop is about to get a lot less painful.
11 min read -
ko vs Jib vs Buildpacks
Build container images without writing a single Dockerfile — ko for Go, Jib for Java, Paketo Buildpacks for everything else. Real benchmarks, real tradeoffs.
10 min read -
Docker Bake vs Compose Build
Orchestrating multi-image Docker builds: docker buildx bake vs compose build, matrix targets, multi-arch, caching, and when each one actually wins.
10 min read -
Nerdctl vs Docker CLI
nerdctl is the containerd-native docker CLI replacement — when it's a drop-in, when it's not, and why you'd bother switching at all.
10 min read -
Trivy vs Grype vs Docker Scout
Trivy, Grype, and Docker Scout go head-to-head on speed, CVE coverage, CI integration, and cost. Pick the right scanner for your home lab or pipeline.
11 min read
All DevOps & Automation articles
- Garden vs Tilt vs Skaffold
- Compose Watch: Faster Dev Loops
- ko vs Jib vs Buildpacks
- 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
- Bash One-Liners Worth Remembering
- Compiling on Linux With Low RAM
- Restic vs Borg vs Kopia: Backups That Actually Deduplicate
- SBOMs and Supply Chain Security
- Container Security: Scan and Sign Your Images Like You Mean It
- Loki vs ELK: Centralized Logging Without the RAM Tax
- 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
- 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
- Docker Manager Showdown: Pick One
- 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
- Grafana Dashboard Variables: One Dashboard for All
- HAProxy: Load Balancing Done Right
- Stop Living Dangerously on :latest Docker
- 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
- Restic vs Borg vs Kopia: Backup Tools for People Who've Lost Data Before
- 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
- Lazy Docker & Dive: CLI Tools That Make Docker Less Painful
- Docker Compose Environment Variable Precedence
- Podman Quadlets: Running Containers Without the Docker Daemon (or Your Sanity)
- 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
- Open Source Security: Scanning Your Dependencies Before They Scan You
- Portainer vs Dockge: Managing Containers Without the Terminal
- DDoS Mitigation: Teaching Your Server to Say No Politely (Then Impolitely)
- Plex Optimization: Remote Access, Transcoding, and Taming the Beast
- 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"
- Docker Resource Limits: Stop Letting Containers Eat Your RAM
- n8n vs Node-RED: Automate Everything Without Learning to Code (Much)
- Docker Compose Profiles: Run Only What You Need
- Stop Putting Passwords in Docker ENV
- Why the `latest` Docker Tag Is Lying to You
- Multi-Platform Docker Builds with buildx
- 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
- Techniques for Writing Robust, Reliable Bash Scripts
- Optimize Ubuntu Logs: btmp Log Rotation
- Ansible: Task and Role Inclusions for Efficient Automation
- Docker Networking Essential Guide for All Skill Levels
- Docker Volume Mounts: Essential Flags
- How to Transfer docker Images Without a Repository
- Understanding CMD and ENTRYPOINT in Dockerfiles
- Copying Files Between Docker Containers and Host Machines
- Dockerfile: Differences Between COPY and ADD
- Docker Strategies for Load Balancing and Failover
- Docker Networking: Connecting to the Host from a Container
- Understanding Docker vs. Full Virtual Machines (VMs)
- Multiple Actions with a Single docker exec Call
- Executing Commands with Asterisks in Docker
- 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
- Optimizing Ansible for Faster Playbook Execution
- Uptime Monitoring with Uptime Kuma
- Automating Docker via Ansible
- Observability and Monitoring for Containers
- Docker vs Podman: Key Differences
- Understanding PostgreSQL Connection URIs
- Supercharge Your Homelab Monitoring with Zabbix
- Talos OS: API-Driven, Kubernetes-First OS
- Linux System Monitoring: Tools and Techniques
- SumGuy’s Guide to Linux Log Analysis
- Docker Compose: Orchestrating Multi-Container Applications
- Install & use Doxygen via Docker
- Docker Compose useful commands
- Access Docker socket via TCP