Building a Private DNS Server in My Homelab (Cloud-init + Pi-hole + Unbound)
#Proxmox #Homelab #PiHole #Unbound #SelfHosting #CrowbarKernelPanic ☕ Most mornings start the same way — a quiet cup and a quick look at the logs. But this week, the homelab gets smarter. In this episode, I’m expanding my Proxmox server — Andromeda — with its first VM, Callisto, running Pi-hole + Unbound for a fully private recursive DNS stack. This setup filters ads and telemetry while resolving domains directly from the internet’s root DNS servers — no Google, no Cloudflare, just pure control. I’ll walk through: ✅ Setting up Cloud-Init templates for automated VM creation ✅ Spinning up Callisto on Proxmox ✅ Installing & configuring Unbound for recursive DNS ✅ Integrating Pi-hole for ad-blocking & network-wide filtering ✅ Testing & enabling services for reliability This is the foundation of the homelab — everything we build next (Kubernetes, self-hosted apps, monitoring, and more) will depend on this DNS backbone. 🛰️ Homelab Hostnames • Proxmox Host: Andromeda • DNS Server: Callisto 📂 Full Commands & Configs on GitHub: 👉 https://github.com/bomccoy/homelab-pr... 💬 Part of the Crowbar Kernel Panic series — a show about building, breaking, and learning through tech. 00:00 – Intro & Morning Vibe 00:31 – Proxmox Recap (Andromeda) 00:45 – Today’s Goal: Callisto + DNS Foundation 01:16 – What DNS Actually Does 02:14 – Enter Pi-hole 03:22 – Adding Unbound for Recursive DNS 04:10 – Introducing Callisto 05:08 – Why Cloud-Init Templates Matter 06:07 – Downloading the Ubuntu Cloud Image 07:04 – Creating the Ubuntu Template (VM 9000) 08:23 – Adding Cloud-Init Drive 09:02 – Enabling QEMU Guest Agent 10:06 – Resizing Disk & Preventing Cloud-Init Failures 10:27 – Converting to Template 11:31 – Cloning Callisto from Template 12:11 – Configuring Resources & Static IP 13:12 – First Boot & Updates 13:32 – Installing QEMU Agent in Callisto 13:44 – Installing Unbound 15:26 – Creating the Pi-hole Config for Unbound 15:55 – Key Config Sections Explained 16:36 – Starting Unbound Services 17:13 – Installing Pi-hole 17:55 – Setting Custom DNS to 127.0.0.1#5335 18:49 – Logging In & Testing 19:28 – Setting Proxmox & Router DNS to Callisto 20:10 – Enabling Services on Boot 21:12 – Wrap-Up & Next Episode Tease 21:40 – Crowbar Kernel Panic Outro