{"repo":"100dollarguy/pihole-tailscale-dns","free":true,"listed":false,"github":"https://github.com/100dollarguy/pihole-tailscale-dns","clone":"git clone https://github.com/100dollarguy/pihole-tailscale-dns.git","description":"A personal DNS + ad-blocking setup using Pi-hole, Unbound, and Tailscale to block ads, enhance privacy, and allow remote DNS access—even behind CGNAT. Runs on Ubuntu via Docker and UTM on macOS. Fully self-hosted, recursive, and secure with firewall rules and VPN tunnel.","language":null,"stars":40,"topics":[],"license":"MIT","category":"networking-infra","readme_excerpt":"# Private DNS Ad-Blocking and Remote Access with Pi-hole + Tailscale 👋 Why I Built This I care about online privacy and wanted to block ads and trackers across all my devices — not just in browsers. Public DNS providers like Google or Cloudflare are fast, but they often log data. I wanted full control over DNS resolution and to keep it private. Also, my internet provider (Jio Fiber) uses CGNAT, which means I don't get a public IP address. So remote access was tricky. This project helped me learn how to work around that using Tailscale. --- 🔍 Problem I Solved Block ads and trackers on every device (not just browsers) Encrypt and control all DNS queries (no third-party logging) Remotely access DNS and admin panel (even behind CGNAT) Learn real-world tools like Linux, DNS, VPNs, Docker, and iptables --- 🧰 Tools I Used macOS (my laptop) UTM to run Ubuntu Server on Mac Ubuntu Server 22.04 (inside UTM) Docker Pi-hole (ad-blocking DNS) Unbound (recursive DNS resolver) Tailscale (zero-config VPN) --- 🛠️ How I Built It (Step-by-Step) 1. Set Up Ubuntu VM Installed UTM on macOS Created a VM with Ubuntu Server 22.04 Gave it 2 CPU cores, 2GB RAM, and 15GB disk --- 2. Update Ubuntu --- 3. Install Docker exit # Then re-login --- 4. Run Pi-hole in Docker --- 5. Add Unbound for Private DNS Create config: --- 6. Install Tailscale --- 7. Firewall Setup for DNS Access via Tailscale (Optional: Block others) --- 8. Set Global DNS in Tailscale (No Need to Configure Each Device) Instead of chang","default_branch":null,"files":null,"tree":[],"storefront":"/r/100dollarguy","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/100dollarguy/pihole-tailscale-dns/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}