<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Dave Juntgen — Writing</title><description>Homelab infrastructure, IaC, AI-agent systems, and engineering leadership.</description><link>https://juntgen.com/</link><item><title>The Backups That Weren&apos;t: A Stale Fingerprint and Two Months of Silence</title><link>https://juntgen.com/writing/28-the-backups-that-werent/</link><guid isPermaLink="true">https://juntgen.com/writing/28-the-backups-that-werent/</guid><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Over-Engineered, Then Obvious: Standing Up Our First Family AI Agent</title><link>https://juntgen.com/writing/family-agents-01-over-engineered-then-obvious/</link><guid isPermaLink="true">https://juntgen.com/writing/family-agents-01-over-engineered-then-obvious/</guid><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Part 27: A Self-Hosted OpenRouter for the Family — Deploying LiteLLM</title><link>https://juntgen.com/writing/27-litellm-router/</link><guid isPermaLink="true">https://juntgen.com/writing/27-litellm-router/</guid><description>We added LiteLLM as a multi-tenant gateway in front of our local Ollama, so each family member&apos;s future Hermes agent — and OpenWebUI — gets its own revocable API key with per-key model allow-lists. Along the way, three things forced us to slow down: a Postgres container that looked alive but wasn&apos;t, a base64 password that broke Prisma&apos;s URL parser, and a Qwen 3.6 model that wrote 300 tokens of thinking and zero tokens of answer.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Part 26: The SDE/SDM Review — Bugs Hiding in Plain Sight</title><link>https://juntgen.com/writing/26-sde-sdm-review/</link><guid isPermaLink="true">https://juntgen.com/writing/26-sde-sdm-review/</guid><description>A code quality review of the monitoring stack found three critical bugs — including one that had silently broken all Docker log collection since day one. Sometimes the most dangerous failures are the ones that don&apos;t make any noise.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Part 25: Eliminating the Last Snowflake</title><link>https://juntgen.com/writing/25-juntgencom-monorepo/</link><guid isPermaLink="true">https://juntgen.com/writing/25-juntgencom-monorepo/</guid><description>The juntgen.com Astro site was the last unversioned snowflake in the homelab — no git history, no IaC, 8 blog posts behind. We moved it into the homelab monorepo and made it deployable with the same command as everything else.</description><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Part 23: Replacing Portainer with Ansible</title><link>https://juntgen.com/writing/23-replacing-portainer/</link><guid isPermaLink="true">https://juntgen.com/writing/23-replacing-portainer/</guid><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Part 24: Building a Grafana Dashboard That Actually Works</title><link>https://juntgen.com/writing/24-monitoring-grafana-dashboard/</link><guid isPermaLink="true">https://juntgen.com/writing/24-monitoring-grafana-dashboard/</guid><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Phase 3: Backups with Proxmox Backup Server and Google Drive</title><link>https://juntgen.com/writing/19-backup-pbs-gdrive/</link><guid isPermaLink="true">https://juntgen.com/writing/19-backup-pbs-gdrive/</guid><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Consistent Time Sync Across All Proxmox Hosts with Chrony</title><link>https://juntgen.com/writing/20-chrony-time-sync/</link><guid isPermaLink="true">https://juntgen.com/writing/20-chrony-time-sync/</guid><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Phase 2: Monitoring and Observability with VictoriaMetrics, Grafana, and Loki</title><link>https://juntgen.com/writing/21-monitoring-observability/</link><guid isPermaLink="true">https://juntgen.com/writing/21-monitoring-observability/</guid><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Security Audit: Scrubbing Usernames and Secrets from a Public Git Repository</title><link>https://juntgen.com/writing/22-security-username-scrub/</link><guid isPermaLink="true">https://juntgen.com/writing/22-security-username-scrub/</guid><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Ansible Best Practices: Six Things We Fixed Before They Became Problems</title><link>https://juntgen.com/writing/18-ansible-best-practices/</link><guid isPermaLink="true">https://juntgen.com/writing/18-ansible-best-practices/</guid><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>OpenClaw Round Two: LAN Deployment, Linger Lessons, and Caddy Integration</title><link>https://juntgen.com/writing/17-openclaw-round-two-lan-deployment/</link><guid isPermaLink="true">https://juntgen.com/writing/17-openclaw-round-two-lan-deployment/</guid><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Cleanup Day: Revoking Dead Tokens, Fixing the Vault, and Learning to Ask Before You Build</title><link>https://juntgen.com/writing/16-cleanup-day-tokens-vault-deploy/</link><guid isPermaLink="true">https://juntgen.com/writing/16-cleanup-day-tokens-vault-deploy/</guid><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate></item><item><title>OpenClaw on Dedicated VM: IaC-First AI Agent Deployment</title><link>https://juntgen.com/writing/14-openclaw-research-deployment/</link><guid isPermaLink="true">https://juntgen.com/writing/14-openclaw-research-deployment/</guid><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate></item><item><title>OpenClaw Day Two: Chasing Ghosts, Trusting the Tunnel, and Closing Security Debt</title><link>https://juntgen.com/writing/15-openclaw-day-two-hardening/</link><guid isPermaLink="true">https://juntgen.com/writing/15-openclaw-day-two-hardening/</guid><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Persistent Terminal Sessions on the Control Node with Zellij</title><link>https://juntgen.com/writing/13-zellij-persistent-sessions/</link><guid isPermaLink="true">https://juntgen.com/writing/13-zellij-persistent-sessions/</guid><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Lessons Learned: AI-Assisted Infrastructure as Code</title><link>https://juntgen.com/writing/07-iac-lessons-learned/</link><guid isPermaLink="true">https://juntgen.com/writing/07-iac-lessons-learned/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Why Infrastructure as Code? From Manual Configs to Git-Driven Homelab</title><link>https://juntgen.com/writing/02-why-iac/</link><guid isPermaLink="true">https://juntgen.com/writing/02-why-iac/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Claude Code: How an AI Pair Programmer Made Me a Super Full Stack Engineer</title><link>https://juntgen.com/writing/01-claude-code/</link><guid isPermaLink="true">https://juntgen.com/writing/01-claude-code/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>GitOps for Docker Stacks with Portainer</title><link>https://juntgen.com/writing/04-gitops-portainer/</link><guid isPermaLink="true">https://juntgen.com/writing/04-gitops-portainer/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Moving Caddy to the DMZ: Isolating Your Reverse Proxy</title><link>https://juntgen.com/writing/05-caddy-dmz-migration/</link><guid isPermaLink="true">https://juntgen.com/writing/05-caddy-dmz-migration/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Security Review: Hardening a Homelab IaC Repo</title><link>https://juntgen.com/writing/06-security-review/</link><guid isPermaLink="true">https://juntgen.com/writing/06-security-review/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Ansible from Scratch: Bootstrapping a Fleet of LXC Containers</title><link>https://juntgen.com/writing/03-ansible-bootstrap/</link><guid isPermaLink="true">https://juntgen.com/writing/03-ansible-bootstrap/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Sudoers Demystified: Understanding Privilege Escalation in Your Homelab</title><link>https://juntgen.com/writing/08-sudoers-demystified/</link><guid isPermaLink="true">https://juntgen.com/writing/08-sudoers-demystified/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Linux File Permissions Deep Dive: The Bits That Protect Your Homelab</title><link>https://juntgen.com/writing/09-file-permissions/</link><guid isPermaLink="true">https://juntgen.com/writing/09-file-permissions/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Automating Sudoers with Ansible: Never Manually Edit Sudoers Again</title><link>https://juntgen.com/writing/10-ansible-sudoers/</link><guid isPermaLink="true">https://juntgen.com/writing/10-ansible-sudoers/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Anti-Patterns and War Stories: Sudoers Mistakes That Break Things at 3 AM</title><link>https://juntgen.com/writing/11-anti-patterns/</link><guid isPermaLink="true">https://juntgen.com/writing/11-anti-patterns/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Sites, DNS, and MOTDs: A Productive Homelab Session</title><link>https://juntgen.com/writing/12-personal-website-dns-motd/</link><guid isPermaLink="true">https://juntgen.com/writing/12-personal-website-dns-motd/</guid><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>