mivittek/docker-pihole-unbound
GWZFmvdB from 2026-05-10, even if a newer public scan exists for this repo.
Nine dimensions
Top findings (AI)
Zero CI pipeline — untested container builds ship directly to users
No .github/workflows exists; no Dockerfile in two-container/ path. Container configurations never validated in isolation. Any regression in Pi-Hole/Unbound versions silently breaks deployments.
No observability stack — silent failures in DNS resolution
No Prometheus metrics, no structured logs, no error tracking. DNS query failures will only surface when users report connectivity issues, with no diagnostic trail.
No test coverage — DNS forwarding and upstream resolver cannot be verified
Zero test files found in repo. The core value proposition (DNSSEC validation via Unbound, ad-blocking via Pi-Hole) has no automated correctness checks.
Unknown license — legal exposure for commercial deployment
License field is 'unknown'. Both Pi-Hole (GPLv3) and Unbound (BSD) are copyleft/ permissive, but the repo's own license status is unresolved, blocking VC due diligence.
No backup or migration strategy for Pi-Hole gravity.db
two-container/docker-compose.yaml uses named volume for pihole_vol; install_unbound_and_s6_init.sh modifies apt state. No backup cron, no volume snapshot docs, no migration scripts for gravity.db growth.
Shell script logic runs at container build time without validation
install_unbound_and_s6_init.sh performs apt-get install, file writes, s6 service setup with no shellcheck linting, no error trapping robustness visible, no unit tests.