Commit Graph
14682 Commits
Author SHA1 Message Date
Alejandro Roman 3e3a24c489 fix(svc-runners): improve cleanup for self hosted and switch to SSD 2026-06-24 18:30:38 +02:00
Alejandro Roman 5567a996c3 fix(svc-runners): cleaning unsued contaienrs, imprve CPU use and cache 2026-06-24 18:30:37 +02:00
Alejandro Roman 4d6715274f fix(svc-runners): remove URL 404 in external tests 2026-06-24 18:30:37 +02:00
Alejandro Roman d3f87ad760 fix(svc-runners): cap CPU use per runner 2026-06-24 18:30:36 +02:00
Alejandro Roman 0d28e2513b fix(svc-runners): fix dependencies issues 2026-06-24 18:30:36 +02:00
Alejandro Roman a61e5a9ac0 fix(svc-runners): fix issues with tmpfs access for self hosted 2026-06-24 18:30:36 +02:00
Alejandro Roman 5698d9e708 fix(svc-runners): improve runner speed, use RAm isntead of disk 2026-06-24 18:30:35 +02:00
Alejandro Roman 92838e3a63 fix(svc-runners): improve runners cleaning 2026-06-24 18:30:35 +02:00
Alejandro Roman e36cfcdc75 fix(svc-runners): raise inotify limitis for parallel systemd contianers 2026-06-24 18:30:34 +02:00
Alejandro Roman 8cab0f04da fix(svc-runners): isolate parallel runners (ports, inventory, docker volume, dns) 2026-06-24 18:30:34 +02:00
Alejandro Roman bb2f6ee01e feat(svc-runners): fix CI 2026-06-24 18:30:33 +02:00
Alejandro Roman 7d28cbfbf3 feat(svc-runners): fix CI conflicts 2026-06-24 18:30:33 +02:00
Alejandro Roman 2bd4c07e0b feat(svc-runners): fix container finisher conflicts 2026-06-24 18:30:32 +02:00
Alejandro Roman bcf9e97fda feat(svc-runners): fix container conflicts 2026-06-24 18:30:32 +02:00
Alejandro Roman 3864f2a9c4 feat(svc-runners): fix re-run runners automatic 2026-06-24 18:30:32 +02:00
Alejandro Roman a1c21c31ca feat(svc-runners): add runner to docker group 2026-06-24 18:30:31 +02:00
Alejandro Roman 764a1adf30 feat(svc-runners): add the logic to have x numbers of runners self hosted ad connected to GIthub, allowing to have 20 runners from gh + x self hosted 2026-06-24 18:30:31 +02:00
infinito-nexus-updater[bot] f4ae7ada77 update(images): update Docker image versions 2026-06-24 09:34:58 +00:00
kevinveenbirkenbach 74d229912d Update services.yml 2026-06-24 11:12:19 +02:00
kevinveenbirkenbach 099de69b17 Merge pull request #339 from infinito-nexus/update/repository-refs-20260624-26ffe7a
update(repos): bump git refs to latest semver tags
2026-06-24 11:09:11 +02:00
kevinveenbirkenbachandClaude Opus 4.8 674b58fdfe fix(matrix): load bridge registrations in synapse + url-encode legacy bridge db passwords
Two bugs kept every mautrix bridge from working: (1) homeserver.yaml.j2 gated app_service_config_files on '{% if MATRIX_BRIDGES | bool %}', but MATRIX_BRIDGES is a list and Ansible's bool filter on a list is always False, so synapse loaded zero appservices and rejected every bridge's as_token (401). Use '| length > 0'. (2) the legacy facebook/instagram bridges interpolated the DB password into the postgres:// URL unencoded; a password with a reserved char crashed mautrix-python with 'Invalid URL: port can't be converted to integer'. URL-encode it like the bridgev2 bridges. Verified by a clean redeploy that recreated the bridge containers and regenerated registrations from the templates: all 5 bridges + synapse healthy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 07:08:02 +02:00
kevinveenbirkenbachandClaude Opus 4.8 8b7a9af221 fix(web-app-keycloak): pin keycloak 26.6.3 + fix sso_proxy oauth2-proxy to v7.15.3
- keycloak: pin the image from floating 'latest' to 26.6.3 for reproducible deploys.
- sso_proxy: the oauth2-proxy sidecar was pinned to 26.6.3 (the keycloak image
  version, mis-copied in 1db235b96), which is not a valid oauth2-proxy tag, so the
  CA-trust ca-inject pull failed (manifest unknown) and every sso-proxy-gated app's
  compose deploy aborted at the Generate CA trust override handler. Pin to v7.15.3
  (live-confirmed pullable).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 06:58:41 +02:00
kevinveenbirkenbachandClaude Opus 4.8 18a01f6ae2 fix(pihole): declare bond:1 on the enabled+shared services (test_service_bond)
web-app-pihole landed on main without the bond importance factor introduced on this branch; the PR merge surfaced 8 enabled+shared services (logout/dashboard/matomo/redis/javascript/prometheus/css/sso) missing bond, failing test_service_bond. Mirror the canonical bond:1 used by every other role's shared services.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 04:54:25 +02:00
kevinveenbirkenbach 70a327046d Merge remote-tracking branch 'origin/main' into feature/026-unified-addon-syntax 2026-06-24 04:54:24 +02:00
kevinveenbirkenbach 6b0f990630 Merge pull request #338 from infinito-nexus/dependabot/github_actions/actions/cache-6
chore(deps): bump actions/cache from 5 to 6
2026-06-24 04:54:24 +02:00
kevinveenbirkenbach 366acd8570 Merge pull request #337 from infinito-nexus/dependabot/npm_and_yarn/playwright/test-1.61.1
chore(deps-dev): bump @playwright/test from 1.61.0 to 1.61.1
2026-06-24 04:54:24 +02:00
dependabot[bot] 9b09becd53 chore(deps): bump actions/cache from 5 to 6
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 04:54:23 +02:00
kevinveenbirkenbach e4835dbb2b Release 10.1.1 2026-06-24 04:54:23 +02:00
kevinveenbirkenbachandClaude Opus 4.8 6d91417a14 style(web-app-pihole): apply autoformat normalization
make autoformat output: add YAML document-start marker and normalize
quote/indentation style in meta/info.yml and tasks/01_core.yml. No
semantic change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 04:54:23 +02:00
kevinveenbirkenbachandClaude Opus 4.8 0c9691afad fix(web-app-pihole): disable email service
Set services.email enabled/shared to literal false in meta/services.yml.
Add corresponding suppressions:
- nocheck: dynamic-flag (flags are now static literals)
- nocheck: email (role has no lookup('email') integration)

Drop the now-static email overrides from meta/variants.yml (a static
base value must not be overridden by a variant) and add javascript
true/false pins to close a pre-existing dynamic-flag variant-coverage
gap that test_coverage flagged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 04:54:23 +02:00
dependabot[bot] 3565c929fd chore(deps-dev): bump @playwright/test from 1.61.0 to 1.61.1
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.61.0 to 1.61.1.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.61.0...v1.61.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.61.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 04:54:22 +02:00
kevinveenbirkenbach 15da39d4bb Release 10.1.0 2026-06-24 04:54:22 +02:00
kevinveenbirkenbach 1be2868961 Merge pull request #230 from pragepani/feature/web-app-pihole/add-role
Feature/web app pihole/add role
2026-06-24 04:54:22 +02:00
kevinveenbirkenbach afdf5cbd75 Merge pull request #334 from infinito-nexus/update/docker-image-versions-20260623-96f0af4
update(images): update Docker image versions
2026-06-24 04:54:22 +02:00
kevinveenbirkenbach f4703fbb84 Add wait_for task for Pi-hole HTTP endpoint 2026-06-24 04:54:22 +02:00
kevinveenbirkenbach c06096ee12 Delete roles/web-app-pihole/tasks/01_setup.yml 2026-06-24 04:54:21 +02:00
kevinveenbirkenbach 59138e9644 Change lifecycle from alpha to beta 2026-06-24 04:54:21 +02:00
kevinveenbirkenbach f0ce86e01b Update service configurations for web-app-pihole 2026-06-24 04:54:21 +02:00
Prageeth Panicker bc1094b4b4 fix(pihole): resolve port collision with web-app-seaweedfs (sso 16507→16508) 2026-06-24 04:54:21 +02:00
Prageeth Panicker 3f8c4e5aee fix(pihole): add status_codes to server.yml for health checker
Pi-hole v6 returns 308 (HTTP→HTTPS redirect) in addition to the
platform's DEFAULT_OK codes (200, 301, 302). Without 308 in the
accepted status_codes, the webserver health checker would flag
pihole.infinito.example as unhealthy.
2026-06-24 04:54:20 +02:00
Prageeth Panicker a45998bc0e fix(pihole): Pi-hole v6 compatibility fixes for login and password setup
- native.spec.js: update button selector from /sign in|login/i to
  /log in|sign in/i — Pi-hole v6's submit button text is
  'Log in (uses cookie)', not 'Sign in' or 'Login'

- 01_setup.yml: remove pihole setpassword CLI task — Pi-hole v6 blocks
  this command when FTLCONF_webserver_api_password is set via env var
  ('set by environment variable; please unset it to use this function').
  Password is now set at container startup via the env var, which is
  the v6-idiomatic approach.
2026-06-24 04:54:20 +02:00
Prageeth Panicker f006e4a880 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-24 04:54:20 +02:00
Prageeth Panicker 35962f2151 fix(pihole): rename persona Playwright specs to *.spec.js so they actually run
Playwright's default testMatch only discovers files matching
*.spec.js / *.test.js. test-guest.js, test-oauth2.js, and
test-native.js never matched this pattern and were silently never
executed in any CI variant -- only playwright.spec.js's 2 baseline
tests ever ran (confirmed: 0 occurrences of these files in any
playwright-junit.xml across variant-0/variant-1, sync/async).

Renamed to guest.spec.js, oauth2.spec.js, native.spec.js so the SSO
persona scenarios (Keycloak redirect, admin/biber login, native login)
actually execute and validate the sso-proxy CA trust fix.
2026-06-24 04:54:20 +02:00
Prageeth Panicker b2e9deeaba fix(pihole): use provider_ca_files (plural array), not provider_ca_file
oauth2-proxy's singular 'provider-ca-file' flag has a known bug
(oauth2-proxy/oauth2-proxy#2802) and may not be a valid config key on
:latest, causing oauth2-proxy to fail config parsing and crash on
startup. This made nginx's auth_request to sso-proxy return 500 for
every pihole request (HTTP Error 500 on https://pihole.infinito.example/),
blocking even the pre-Playwright readiness check.

provider_ca_files (plural, array of strings) is the documented,
working config key for loading a custom CA for the OIDC provider
connection.
2026-06-24 04:54:19 +02:00
Prageeth Panicker 435a726a0d fix(pihole): remove duplicate sso-proxy block from compose.yml.j2
This block was added in an earlier (reverted-in-intent but never
actually removed) attempt and caused a duplicate 'sso-proxy' YAML key
(also defined via sys-svc-compose/base.yml.j2's sso_proxy include),
breaking compose_ca.py's compose config parsing entirely.

The CA trust fix now lives solely in 01_core.yml's lineinfile task,
which patches the rendered oauth2-proxy config file directly -- no
compose.yml changes needed.
2026-06-24 04:54:19 +02:00
Prageeth Panicker 54bf4896b4 fix(pihole): sort playwright.env.j2 keys alphabetically 2026-06-24 04:54:19 +02:00
Prageeth Panicker 0e72f241c7 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-24 04:54:19 +02:00
Prageeth Panicker 9448d15e50 fix(pihole): address review feedback (Kevin)
- playwright.spec.js: remove duplicated SSO/persona scenarios now
  covered by test-guest.js/test-oauth2.js/test-native.js. Reduce to
  baseline checks (front page + TLS/HSTS, HTML content-type), matching
  the pgadmin pattern.
- meta/main.yml: rewrite description to describe Pi-hole the software
  (network-wide DNS sinkhole, DNS/DHCP management, web dashboard)
  rather than the role/integration details.
2026-06-24 04:54:19 +02:00
Prageeth Panicker 892c8db95c fix(pihole): resolve port collision with web-app-penpot
penpot was merged using ports 8041/16506 after our last rebase.
Reassign pihole to 8078 (http) and 16507 (sso) via
infinito contributing network ports suggest.
2026-06-24 04:54:18 +02:00
Prageeth Panicker 70175ee710 fix(pihole): trust self-signed platform CA for sso-proxy OIDC discovery
oauth2-proxy (quay.io/oauth2-proxy/oauth2-proxy) is a distroless image
with no /bin/sh, so the platform's CA-trust wrapper (with-ca-trust.sh,
applied by compose_ca.py for services with a shell) is skipped for this
container. Go binaries ignore SSL_CERT_FILE/REQUESTS_CA_BUNDLE and use
only the OS system cert pool, so on self-signed TLS setups oauth2-proxy
fails OIDC discovery against Keycloak with
'x509: certificate signed by unknown authority'. nginx then falls back
to pihole's native /admin/login instead of redirecting to Keycloak,
breaking SSO entirely in CI and on any self-signed deployment.

Fix: append provider_ca_file to the rendered sso-proxy config after
web-app-keycloak/tasks/sso_proxy.yml renders it and before compose up
runs. oauth2-proxy loads this CA explicitly for the OIDC provider
connection, bypassing the system cert pool entirely.

Scoped to this role: avoids touching the shared
oauth2-proxy-keycloak.cfg.j2 template (would affect every
flavor: oauth2 role platform-wide). No-op on production
(TLS_MODE=letsencrypt).
2026-06-24 04:54:18 +02:00