en un clic
pihole
// Validate Pi-hole + Unbound suite changes. Use when: checking installer dry-run safety, DNS health, root-owned runtime paths, backups, auto-update, root hints, rescue workflows, or release readiness for this repository.
// Validate Pi-hole + Unbound suite changes. Use when: checking installer dry-run safety, DNS health, root-owned runtime paths, backups, auto-update, root hints, rescue workflows, or release readiness for this repository.
Safely validate the production Raspberry Pi 4 Pi-hole + Unbound host. Use when: checking live DNS, systemd, cron, root-owned runtime files, auto-update, root hints, Python API, or post-install health without destructive changes.
Validate Unbound recursive DNS changes in this Pi-hole suite. Use when: checking Unbound config, port 5335, DNSSEC, root hints refresh, unbound-checkconf, rollback safety, Pi-hole upstream integration, or DNS health.
| name | pihole |
| description | Validate Pi-hole + Unbound suite changes. Use when: checking installer dry-run safety, DNS health, root-owned runtime paths, backups, auto-update, root hints, rescue workflows, or release readiness for this repository. |
| argument-hint | what changed or what host/IP to validate, e.g. installer dry-run, auto-update, 10.20.30.3, release check |
Use this skill to review or validate changes to the Pi-hole + Unbound installer and management suite. It turns the project review workflow into a repeatable checklist for code changes, release checks, or host validation.
Identify what the user wants validated:
If the user gives a Pi-hole IP, use it for client-side DNS checks. Treat real Raspberry Pi hosts as production DNS by default. Do not assume SSH credentials; ask for host/user before remote commands.
Run the closest available checks for the environment:
make ci
If make ci cannot run, use individual checks:
bash scripts/repo_selftest.sh
bash -n install.sh
find scripts tools -type f -name '*.sh' -print0 | xargs -0 -n1 bash -n
shellcheck -x install.sh scripts/*.sh scripts/lib/*.sh tools/*.sh
shfmt -d install.sh scripts tools
python3 -m py_compile start_suite.py
ruff check .
pytest -q
In restricted workspaces, use file inspection and diagnostics instead of pretending live commands ran.
When given a Pi-hole IP such as 10.20.30.3, validate from a client machine:
dig @10.20.30.3 google.com
dig @10.20.30.3 pi-hole.net
dig @10.20.30.3 dnssec.works
dig @10.20.30.3 dnssec-failed.org
Expected behavior:
dnssec.works resolves.dnssec-failed.org fails or returns no usable answer when DNSSEC validation is working.http://<pihole-ip>/admin.127.0.0.1#5335 unless deliberately configured otherwise.For this project, assume the main real host is a Raspberry Pi 4 on Debian/Raspberry Pi OS aarch64. Default validation should focus on host Pi-hole + Unbound, auto-update/root hints/boot-health, and the optional Python Suite API. Do not prioritize NetAlertX or container Pi-hole checks unless requested.
For installer changes, verify dry-run purity before live runs:
sudo ./install.sh --dry-run
sudo ./install.sh --dry-run --with-auto-update
sudo ./install.sh --dry-run --force
Dry-run must not create state, backups, cron entries, systemd units, resolver edits, package/container changes, service restarts, notifications, or reboots.
For live install validation on a suitable host:
sudo ./install.sh --with-auto-update
bash scripts/post_install_check.sh --quick
sudo bash scripts/post_install_check.sh --full
Confirm root-owned runtime copies, not checkout paths:
ls -la /usr/local/lib/pihole-suite
ls -la /usr/local/lib/pihole-suite/scripts/lib
ls -la /usr/local/bin/pihole-rescue
sudo crontab -l
systemctl cat pihole-boot-check.service
Expected runtime paths are documented in docs/CONFIGURATION.md.
Validate auto-update safely first:
sudo DRY_RUN=1 /usr/local/lib/pihole-suite/scripts/auto_update.sh
Validate root hints safely first:
sudo DRY_RUN=1 /usr/local/lib/pihole-suite/scripts/root_hints_refresh.sh
Validate maintenance backups without running apt/Pi-hole upgrades:
sudo bash tools/pihole_maintenance_pro.sh --backup --no-apt --no-upgrade --no-gravity
sudo ls -la /var/backups/pihole-suite/maintenance
Rescue backup and restore tests must follow docs/ACCEPTANCE_TESTS.md, especially tampered-backup rejection and symlink safety.
For any Pi-hole suite change, check these before calling it done:
/usr/local/lib/pihole-suite, not the git checkout./etc/pihole-suite/pihole-suite.env for unattended jobs./var/lib/pihole-suite, /var/log/pihole-suite, and /var/backups/pihole-suite.SUITE_API_KEY and webhook URLs are not printed.eval.End with: