Commit Graph
14682 Commits
Author SHA1 Message Date
Prageeth Panicker dd8c6841d7 fix(pihole): inject CA cert for sso-proxy on self-signed TLS
oauth2-proxy is a distroless Go binary — the platform CA wrapper
(with-ca-trust.sh) is skipped because there is no /bin/sh, and Go
ignores SSL_CERT_FILE. Pass the CA cert directly via --provider-ca-file
so oauth2-proxy trusts the internal Keycloak OIDC endpoint.

Follows the penpot pattern of inline command override in compose.yml.j2
conditioned on TLS_MODE == self_signed. No-op on production (letsencrypt).
2026-06-24 04:54:18 +02:00
Prageeth Panicker d21051d716 fix(pihole): trust self-signed CA for sso-proxy OIDC connection
oauth2-proxy is distroless (no /bin/sh), so the platform CA wrapper
entrypoint is skipped. Go binaries ignore SSL_CERT_FILE and use the
system cert pool only, causing x509 errors on self-signed TLS setups.

Override sso-proxy command in compose.override.yml.j2 to append
--provider-ca-file pointing to the platform CA cert
(/tmp/infinito/ca/root-ca.crt, always bind-mounted by compose_ca.py)
when TLS_MODE is self_signed. No-op on production (letsencrypt).
2026-06-24 04:54:18 +02:00
Prageeth Panicker ff44090ac2 fix(web-app-pihole): add compose_handlers_flush and increase wait_for timeout to 300s 2026-06-24 04:54:17 +02:00
Prageeth Panicker d93f21ac23 fix(web-app-pihole): restore correct PORT_BANDS mariadb entry, remove legacy database band 2026-06-24 04:54:17 +02:00
Prageeth Panicker 055de4e33e fix(web-app-pihole): fix nested template literal syntax error in playwright spec 2026-06-24 04:54:17 +02:00
Prageeth Panicker 34892f81a9 fix(web-app-pihole): fix string concatenation lint error in playwright spec 2026-06-24 04:54:17 +02:00
Prageeth Panicker 9a9e280924 fix(web-app-pihole): fix SSO port collision - use 16506 instead of 16505 2026-06-24 04:54:16 +02:00
Prageeth Panicker 8c98a08d8a fix(web-app-pihole): address reviewer feedback - SSO/native password, split tests, remove schema 2026-06-24 04:54:16 +02:00
Prageeth Panicker 3a6979dcd0 fix(web-app-pihole): fix bare URL in README 2026-06-24 04:54:16 +02:00
Prageeth Panicker adb800bf10 fix(web-app-pihole): migrate to v9.x SSO pattern and fix compose_volumes 2026-06-24 04:54:16 +02:00
Prageeth Panicker b0b3477b89 fix(web-app-pihole): fix dynamic flags, port, personas, block size, docker exec, README 2026-06-24 04:54:16 +02:00
Prageeth Panicker e2877cc7b1 fix(web-app-pihole): resolve CI lint failures and test compliance 2026-06-24 04:54:15 +02:00
Prageeth Panicker a7b977e623 ci: retrigger CI after rebase on main 2026-06-24 04:54:15 +02:00
Prageeth Panicker 8288932bb2 fix(web-app-pihole): remove duplicate TEST_E2E_PLAYWRIGHT_WAIT_ENABLED constant
Already defined in test-e2e-playwright/defaults/main.yml.
HTTP wait accepts 100-499 range including oauth2-proxy 403.
2026-06-24 04:54:15 +02:00
Prageeth Panicker e374bda4a0 fix(web-app-pihole): fix oauth2-proxy deployment and javascript injection
- Fix oauth2.enabled: replace Jinja2 group_names expression with literal true
- Set oauth2.shared: false to deploy role-local oauth2-proxy instance
- Add allowed_groups for RBAC administrator access control
- Add javascript service for logout button injection
- Remove variant 1 (standalone mode) - pihole always requires Keycloak
- Delete compose.override.yml.j2 (--ssl-insecure-skip-verify no longer needed)
- Fix javascript.js.j2: wrap redirect in DOMContentLoaded to fix DOM timing
- Add TEST_E2E_PLAYWRIGHT_WAIT_ENABLED: false for oauth2-protected app
2026-06-24 04:54:15 +02:00
Prageeth Panicker 68f67f2a48 fix(web-app-pihole): restore oauth2_proxy_cookie_secret to schema.yml
inventory.py auto-generation only triggers when oauth2.enabled is a literal
boolean True. Pihole uses a Jinja2 expression for enabled, so auto-generation
does not trigger. The credential must be defined in schema.yml explicitly.
2026-06-24 04:54:14 +02:00
Prageeth Panicker e349336366 fix(web-app-pihole): remove oauth2_proxy_cookie_secret from schema.yml
Other OAuth2-protected apps (decidim, espocrm, etc.) do not define this
credential in their schema.yml and work correctly. The platform handles
the cookie_secret for all apps through the web-app-oauth2-proxy role.
Defining it per-role was causing oauth2-proxy to crash on startup in CI
because the credential was not properly generated in the CI environment.
2026-06-24 04:54:14 +02:00
Prageeth Panicker 71a8ce8f1f fix(web-app-pihole): skip TLS verification for oauth2-proxy OIDC discovery
oauth2-proxy cannot verify Keycloak's self-signed certificate during OIDC
discovery because the platform CA cert is injected via env vars but Go's
TLS stack doesn't pick it up reliably in the DinD environment.

Adding --ssl-insecure-skip-verify allows oauth2-proxy to complete OIDC
discovery and serve requests instead of crash-looping with certificate errors.
This is acceptable for a self-signed lab environment.
2026-06-24 04:54:14 +02:00
Prageeth Panicker e560f8b296 fix(web-app-pihole): add compose.override.yml.j2 to fix oauth2-proxy DNS resolution
oauth2-proxy cannot resolve auth.infinito.example from inside Docker in CI
environments where CoreDNS does not have this entry. Adding extra_hosts via
compose.override.yml.j2 (auto-included by compose_file_args lookup) maps
the Keycloak domain to host-gateway so OIDC discovery succeeds.
2026-06-24 04:54:14 +02:00
Prageeth Panicker eb8030193e fix(web-app-pihole): wait for Keycloak OIDC endpoint before setup
Pi-hole deploys immediately after Keycloak but Keycloak needs time to
initialize OIDC. Adding explicit wait for Keycloak OIDC discovery endpoint
ensures oauth2-proxy can complete OIDC discovery and serve 302 redirects
instead of 500 errors when the platform Playwright wait check runs.
2026-06-24 04:54:13 +02:00
Prageeth Panicker 070e6bd774 fix(web-app-pihole): fix lint errors and add HTTPS health check
- meta/services.yml: add noqa comment for email integration
- tasks/01_setup.yml: use uri_retry instead of legacy uri module
- tasks/01_setup.yml: add HTTPS endpoint check to prevent 500 in CI wait check
- tasks/01_setup.yml: increase oauth2-proxy wait timeout to 300s with ignore_errors
2026-06-24 04:54:13 +02:00
Prageeth Panicker 93793f1a8b fix(web-app-pihole): add ignore_errors to oauth2-proxy wait task
oauth2-proxy requires Keycloak to complete OIDC discovery before binding its port.
If Keycloak is still warming up, oauth2-proxy may not be ready within the timeout.
Playwright tests validate the actual functionality end-to-end.
2026-06-24 04:54:13 +02:00
Prageeth Panicker 4fda2c78a4 fix(web-app-pihole): increase oauth2-proxy wait timeout to 300s
oauth2-proxy needs time to complete OIDC discovery against Keycloak in CI.
120s was insufficient - increased to 300s to allow for slower CI environments.
2026-06-24 04:54:13 +02:00
Prageeth Panicker 2d4366abfe fix(web-app-pihole): address reviewer feedback and fix CI failures
- tasks/01_core.yml: set docker_compose_flush_handlers: true, remove manual flush_handlers task
- tasks/01_setup.yml: add wait for oauth2-proxy port to fix HTTP 500 in CI wait check
- meta/services.yml: use NETWORK_PUBLIC_DNS_RESOLVERS SPOT for upstream_dns
- vars/main.yml: remove default from upstream_dns lookup, join list with semicolon
2026-06-24 04:54:13 +02:00
Prageeth Panicker 173c72f88d fix(web-app-pihole): remove host port 53 binding to fix CI on Fedora
Port 53 is already in use by systemd-resolved on Fedora CI runners.
Pi-hole DNS still works within the Docker network without host binding.
Playwright tests don't require DNS functionality on the host.
2026-06-24 04:54:12 +02:00
Prageeth Panicker 08c77d0d6f fix(web-app-pihole): remove duplicate TEST_E2E_PLAYWRIGHT_WAIT_ENABLED constant
Variable is already defined platform-wide in test-e2e-playwright/defaults/main.yml.
Redefining it in vars/main.yml violates the project-wide constant uniqueness rule.
2026-06-24 04:54:12 +02:00
Prageeth Panicker 4878726fc9 fix(web-app-pihole): fix playwright logout test, remove duplicate oauth2-proxy block, add playwright wait flag
- Update logout test to navigate directly to oauth2/sign_out endpoint with Keycloak logout redirect
- Remove duplicate oauth2-proxy service definition from compose.yml.j2 (was causing duplicate key error)
- Add TEST_E2E_PLAYWRIGHT_WAIT_ENABLED: false to vars/main.yml (oauth2-proxy returns 403 before redirect)
2026-06-24 04:54:12 +02:00
Prageeth Panicker 912fa0f674 fix(web-app-pihole): resolve CI failures - subnet, port, resource limits
- Change subnet from 192.168.102.240/28 to 192.168.103.80/28 (overlap with web-app-fediwall)
- Change local.oauth2 port from 16493 to 16500 (collision with web-svc-libretranslate)
- Extend PORT_BANDS.local.oauth2 band from 16499 to 16514 (band exhausted)
- Add missing resource limits to meta/services.yml (cpus, mem_reservation, mem_limit, min_storage, pids_limit)
2026-06-24 04:54:12 +02:00
Prageeth Panicker a470dad158 fix(web-app-pihole): add schema.yml with oauth2_proxy_cookie_secret credential 2026-06-24 04:54:12 +02:00
Prageeth Panicker 67a66318f4 fix(web-app-pihole): wrap javascript.js.j2 in raw block to prevent Jinja2 parsing 2026-06-24 04:54:11 +02:00
Prageeth Panicker ae9f78fdf2 fix(web-app-pihole): fix config path for upstream_dns lookup 2026-06-24 04:54:11 +02:00
Prageeth Panicker 7fe9fa88cc fix(web-app-pihole): add variants, javascript injection, fix oauth2 DNS, update playwright tests 2026-06-24 04:54:11 +02:00
Prageeth Panicker 269ac10766 fix(web-app-pihole): restore PIHOLE_VOLUME_DATA and PIHOLE_VOLUME_DNSMASQ vars 2026-06-24 04:54:11 +02:00
Prageeth Panicker 3b74ca7021 fix(web-app-pihole): fix CI lint and integration test failures 2026-06-24 04:54:10 +02:00
Prageeth Panicker f65f4d60fb fix(web-app-pihole): migrate to meta/services.yml, fix domain resolution, disable native password 2026-06-24 04:54:10 +02:00
Prageeth Panicker b5bf8b4e6f fix(web-app-pihole): fix compose template, RBAC group, playwright env and wait flag 2026-06-24 04:54:10 +02:00
Prageeth Panicker d7167612ce fix(web-app-pihole): add sys-svc-compose networks include to compose template 2026-06-24 04:54:10 +02:00
Prageeth Panicker ca13de2a33 fix(web-app-pihole): fix CI lint failures
- Add tasks/01_core.yml with run_once guard (test_service_core_first_task_run_once)
- Update tasks/main.yml to load 01_core.yml with run_once guard
- Add '# noqa: shared' comment on oauth2 config (test_service_shared_consistency)
- Remove unused PIHOLE_PORT variable from vars/main.yml (test_variable_usage)
2026-06-24 04:54:10 +02:00
kevinveenbirkenbach f3fd79fbd9 Merge pull request #333 from infinito-nexus/update/docker-image-versions-20260623-52b17c5
update(images): update Docker image versions
2026-06-24 04:54:09 +02:00
kevinveenbirkenbach 89554997de Update services.yml 2026-06-24 04:54:09 +02:00
Prageeth Panicker 19c84fa7e2 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-24 04:54:09 +02:00
infinito-nexus-updater[bot] 24d0644500 update(images): update Docker image versions 2026-06-24 04:54:09 +02:00
kevinveenbirkenbach bee2917a75 Merge pull request #332 from infinito-nexus/dependabot/npm_and_yarn/globals-17.7.0
chore(deps-dev): bump globals from 15.15.0 to 17.7.0
2026-06-24 04:54:08 +02:00
kevinveenbirkenbach cf2b1d4ac7 Update services.yml 2026-06-24 04:54:08 +02:00
dependabot[bot] 8f59a6cd69 chore(deps-dev): bump globals from 15.15.0 to 17.7.0
Bumps [globals](https://github.com/sindresorhus/globals) from 15.15.0 to 17.7.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.15.0...v17.7.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.7.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 04:54:08 +02:00
infinito-nexus-updater[bot] 2b8b890da7 update(images): update Docker image versions 2026-06-24 04:54:08 +02:00
kevinveenbirkenbach 57bb288b2c Merge pull request #329 from infinito-nexus/update/docker-image-versions-20260619-0762d5d
update(images): update Docker image versions
2026-06-24 04:54:07 +02:00
kevinveenbirkenbach f93fb16559 Update services.yml 2026-06-24 04:54:07 +02:00
infinito-nexus-updater[bot] 6d98862f7c update(images): update Docker image versions 2026-06-24 04:54:06 +02:00
kevinveenbirkenbachandClaude Opus 4.8 ee4ab0f1e0 style(nextcloud): autoformat reflow of the zammad provision set_facts
Pure whitespace line-wrap from make autoformat; no logic change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 04:34:56 +02:00