Commit Graph
7 Commits
Author SHA1 Message Date
Prageeth Panicker dfcfd0ef58 fix(pihole): variant-1 test failures and Pi-hole v6 compatibility
Three fixes:

1. guest.spec.js: skip instead of fail when OIDC_ISSUER_URL is unset
   (variant-1 has SSO disabled so no Keycloak redirect is expected;
   the old expect().toBeTruthy() caused a hard failure instead of skip)

2. playwright.env.j2: only emit OIDC_ISSUER_URL when SSO is proxy-gated
   (was unconditionally set, causing native.spec.js to wrongly skip in
   variant-1 and oauth2.spec.js/guest.spec.js to fail on missing redirect)

3. compose.yml.j2: Pi-hole v6 compatibility fixes
   - Replace WEBPASSWORD with FTLCONF_webserver_api_password (v6 dropped
     legacy env vars; WEBPASSWORD is silently ignored in v6)
   - Add FTLCONF_webserver_domain={{ domain }} to whitelist the nginx
     proxy Host header; Pi-hole v6 FTL returns 403 for unrecognised Host
     headers (DNS rebinding protection) — this was causing the baseline
     playwright.spec.js to fail with HTTP 403 in variant-1
2026-06-23 13:19:24 +00:00
Prageeth Panicker bdeb32b5b6 fix(pihole): sort playwright.env.j2 keys alphabetically 2026-06-23 13:19:23 +00:00
Prageeth Panicker 2e995f33a5 fix(pihole): declare CANONICAL_DOMAIN in playwright.env.j2
Required by playwright.spec.js baseline checks (canonical domain
assertion), added in the previous commit.
2026-06-23 13:19:23 +00:00
Prageeth Panicker 6e7f847bc8 fix(web-app-pihole): fix dynamic flags, port, personas, block size, docker exec, README 2026-06-23 13:19:17 +00:00
Prageeth Panicker fe6ca57c81 fix(web-app-pihole): resolve CI lint failures and test compliance 2026-06-23 13:19:17 +00:00
Prageeth Panicker cad746af11 fix(web-app-pihole): fix compose template, RBAC group, playwright env and wait flag 2026-06-23 13:19:08 +00:00
Prageeth Panicker 02bcc94320 feat(web-app-pihole): add Pi-hole role with OAuth2/Keycloak RBAC
- Deploy Pi-hole as web app with NGINX proxy and OAuth2 protection
- Only web-app-pihole-administrators group can access the dashboard
- DNS port 53 (TCP/UDP) exposed for network-wide ad blocking
- Upstream DNS configurable per inventory (default: Cloudflare 1.1.1.1)
- Redis session store for OAuth2 proxy
- Timezone from HOST_TIMEZONE platform variable
- Port bindings use DOCKER_BIND_HOST platform variable
- Register subnet 192.168.102.240/28 in networks
- Register ports 8070 (http) and 16493 (oauth2) in ports
- Playwright tests: oauth2 protection, admin login, biber denied (3/3 passing)

Known limitations:
- Pi-hole v6 gravity blocklist requires manual setup via admin UI
- Internal *.infinito.example DNS forwarding to CoreDNS planned as follow-up
2026-06-23 13:18:51 +00:00