Set up and manage Pi-hole DNS, blocking, and home network resolution.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "homelab-pihole-dns" skill from askskill: 1. Download https://raw.githubusercontent.com/affaan-m/ECC/main/skills/homelab-pihole-dns/SKILL.md 2. Save it as ~/.claude/skills/homelab-pihole-dns/SKILL.md 3. Reload skills and tell me it's ready
Create a Pi-hole installation guide for a homelab on Ubuntu Server. Include both Docker and native installation methods, initial web admin setup, common port explanations, and how to point the router or clients to Pi-hole after installation.
A step-by-step installation guide with commands, key configuration notes, and post-install client setup.
I want Pi-hole to forward queries over DNS-over-HTTPS. Recommend an approach and explain how to configure Cloudflared or a similar component, how to set the upstream server in Pi-hole, and how to verify it works.
An actionable DoH setup plan with verification steps and common troubleshooting advice.
My home network has DNS resolution issues: some devices cannot open websites, and Pi-hole logs show blocks and timeouts. Give me a systematic troubleshooting workflow covering DHCP, upstream DNS, blocklists, local DNS records, caching, and client settings.
A prioritized troubleshooting checklist to quickly identify and fix DNS resolution problems.
Pi-hole is a network-wide DNS ad blocker that runs on a Raspberry Pi or any Linux host. Every device on your network gets ad and malware domain blocking automatically — no browser extension needed.
nas.home.lan, pi.home.lan)Normal flow (without Pi-hole):
Device → requests ads.tracker.com → ISP DNS → real IP → ads load
With Pi-hole:
Device → requests ads.tracker.com → Pi-hole DNS → blocked (returns 0.0.0.0) → no ad
All DNS queries go through Pi-hole first.
Pi-hole checks against blocklists.
Blocked domains return a null response — the ad/tracker never loads.
Allowed domains get forwarded to your upstream resolver (Cloudflare, Google, etc.).
Docker is the easiest way to install Pi-hole and makes updates and backups straightforward.
# docker-compose.yml
services:
pihole:
image: pihole/pihole:<pinned-release-tag>
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp" # Web admin
environment:
TZ: "America/New_York"
WEBPASSWORD: "${PIHOLE_WEBPASSWORD}" # set via .env file or secret
PIHOLE_DNS_: "1.1.1.1;1.0.0.1"
DNSMASQ_LISTENING: "all"
volumes:
- "./etc-pihole:/etc/pihole"
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
restart: unless-stopped
cap_add:
- NET_ADMIN # only needed if Pi-hole will serve DHCP
Replace <pinned-release-tag> with a current Pi-hole release tag before deploying.
Avoid latest for long-lived DNS infrastructure so upgrades are deliberate and
reviewable.
Set PIHOLE_WEBPASSWORD in a .env file next to docker-compose.yml, chmod it to
600, and keep it out of git — do not put the password directly in the compose file.
Access web admin at: http://<pi-ip>/admin
Pi-hole requires a static IP before installing.
# Step 1: Assign a static IP (edit /etc/dhcpcd.conf on Pi OS)
sudo nano /etc/dhcpcd.conf
# Add at the bottom:
interface eth0
static ip_address=192.168.3.2/24
static routers=192.168.3.1
static domain_name_servers=192.168.3.1
# Step 2: Download and inspect the installer before running it.
# Prefer the package or installer path documented by Pi-hole for your OS/version.
curl -sSL https://install.pi-hole.net -o pi-hole-install.sh
less pi-hole-install.sh # review before proceeding
# Step 3: Run
bash pi-hole-install.sh
# Follow the interactive installer:
# 1. Select network interface (eth0 for wired — recommended)
# 2. Select upstream DNS (Cloudflare or leave default — can change later)
# 3. Confirm static IP
# 4. Install the web admin interface (recommended)
# 5. Note the admin password shown at the end
# Method 1: Change DNS in your router DHCP settings (recommended)
Router admin UI → DHCP Settings → DNS Server
Primary DNS: 192.168.3.2 (Pi-hole IP)
Secondary DNS: leave blank for strict blocking, or use a second Pi-hole.
A public fallback such as 1.1.1.1 improves availability during
rollout but can bypass blocking because clients may query it.
All devices get Pi-hole as DNS automatically on next DHCP renewal.
Force renewal: reconnect Wi-Fi or run 'sudo dhclient -r && sudo dhclient' on Linux
# Method 2: Per-device DNS (useful for testing before network-wide rollout)
Windows: Control Panel → Network Adapter → IPv4 Properties → set DNS manually
macOS: System Settings → Network → Details → DNS → set manually
…
Automatically format, lint, and fix code issues on every edit.
Learn robust error-handling patterns across TypeScript, Python, and Go applications.
Audit Claude skills and commands with quick scans or full stocktakes.
Plan demand forecasts, safety stock, and replenishment for multi-location retail inventory.
Create iOS liquid glass interfaces with dynamic visuals and interactive morphing.
Record polished web app UI demo videos for walkthroughs, tutorials, and showcases.
Manage Pi-hole DNS blocking, stats, and configuration with natural language.
Plan a reliable home or homelab network with practical setup guidance.
Analyze Pi-hole devices and manage lists, DNS, and backups from one tool.
Manage Pi-hole v6 blocklists, domain rules, and DNS diagnostics with natural language.
Checks homelab network readiness before VLAN, DNS, firewall, or VPN changes.
Set up WireGuard VPN for secure remote home network access.