Commit Graph
14682 Commits
Author SHA1 Message Date
evangelostsak c8625c747d feat(odoo): add main.yml for Odoo role metadata and configuration 2026-04-20 20:26:46 +02:00
evangelostsak 596577d7a8 feat(odoo): implement OAuthLoginHTTPS to enforce HTTPS redirect URIs 2026-04-20 20:26:46 +02:00
evangelostsak c3970f82db feat(odoo): add __init__.py for auth_oauth_https controllers 2026-04-20 20:26:46 +02:00
evangelostsak 621bd887a4 feat(odoo): add __manifest__.py for OAuth HTTPS Redirect URI Fix module 2026-04-20 20:26:46 +02:00
evangelostsak 73d0d92510 feat(odoo): add initial __init__.py for auth_oauth_https module 2026-04-20 20:26:46 +02:00
evangelostsak 63f7af6408 feat(odoo): add Dockerfile for Odoo server with OIDC support dependencies 2026-04-20 20:26:46 +02:00
evangelostsak e07c72ecbf feat(odoo): add initial configuration for Odoo server setup 2026-04-20 20:26:46 +02:00
evangelostsak 928fd34767 feat(todos): add initial TODO list for Odoo project tasks and priorities 2026-04-20 20:26:46 +02:00
evangelostsak 9d8ccf69a1 feat(odoo): add comprehensive README for Odoo ERP deployment and configuration 2026-04-20 20:26:46 +02:00
evangelostsak fedd63d4bd fix(proxy): update X-Forwarded-Proto header to use TLS lookup for protocol 2026-04-20 20:26:46 +02:00
evangelostsak 8439634758 fix(proxy): update X-Forwarded-Proto header to use TLS lookup for protocol 2026-04-20 20:26:46 +02:00
evangelostsak 6e08ce6496 fix(proxy): update X-Forwarded-Proto header to use TLS lookup for protocol 2026-04-20 20:26:46 +02:00
evangelostsak badbdb29ff feat(ports): add Odoo web application ports for websocket and public access 2026-04-20 20:26:46 +02:00
github-actions[bot] cd3e25f925 chore(skills): update skills-lock.json to latest versions 2026-04-20 20:26:46 +02:00
github-actions[bot] f4a8716005 chore(skills): update skills-lock.json to latest versions 2026-04-20 20:26:46 +02:00
kevinveenbirkenbachandClaude Opus 4.7 677dffebf6 fix(web-app-friendica): robustly enable ldapauth addon
`bin/console addon enable` returns rc=0 with empty stderr in two failure
modes: (1) when the Friendica DB is mid-migration ("Database isn't ready or
populated yet" on stderr) and (2) occasionally on a fresh stack where the
command installs nothing — no config entry, no hooks registered. The
second mode leaves ldapauth silently inert and every LDAP login is
rejected.

Add a dedicated DB-ready probe that exercises the same code path as
enable/disable (`addon list all`) and only proceeds once stderr is clean.
Then replace the thin rc-based until with an effective-state check: run
enable/disable, swallow idempotent "already enabled/disabled" errors, and
verify the addon appears (or does not appear) in `addon list enabled`.
Retry the whole cycle — the second invocation reliably registers hooks.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 20:09:28 +02:00
Prageeth Panicker dc4af35aca fix(web-app-decidim): use espocrm pattern for patch_decidim.py in Dockerfile
- Add copy task in tasks/main.yml to stage patch_decidim.py into build context
- Pass HOST_REL and DOCKER path as build ARGs via compose.yml.j2
- Use COPY + RUN in Dockerfile with no inline code
- patch_decidim.py remains single source of truth for unit tests
2026-04-20 16:45:38 +00:00
kevinveenbirkenbach 0743d9b50c Merge pull request #176 from kevinveenbirkenbach/feature/remove_legacy_get_app_conf
refactor(utils): move config_utils to utils.applications.config
2026-04-20 17:50:36 +02:00
kevinveenbirkenbachandClaude Opus 4.7 fe18ae43cf Fix enlarge_swap.sh starving deploys of disk space (#162)
Swap size was free(/)-25, which took ~99 GB on the 145 GB root fs.
Remaining ~25 GB then ran out mid-deploy during Playwright image
pulls (ENOSPC). Replace with a fixed 16 GB cap and use mountpoint
to detect a real /mnt partition instead of [ -d /mnt ], which
matched the empty placeholder dir on single-partition runners.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 16:54:03 +02:00
kevinveenbirkenbach 5e02e084dc Merge branch 'main' into feature/e2e-friendica-joomla-playwright 2026-04-20 16:29:56 +02:00
kevinveenbirkenbachandClaude Opus 4.7 5a4db72244 fix(web-app-matrix,web-app-joomla): stabilize CI matrix DM + joomla install
Three orthogonal CI flakes addressed after autonomous iteration via the
Role Loop protocol (3 fresh-purged/reuse-kept cycles, all green on final).

web-app-matrix/files/playwright.spec.js
  DM block retries=0 -> 1. rc_login exhaustion (the original reason for
  retries=0) is obsolete: the 120s drain wait before admin's signin
  already eliminates that class of failure. The dominant failure mode is
  now CI infra pressure surfacing as "Target page, context or browser has
  been closed" mid-navigation under the combined Synapse + Element +
  bridges + Keycloak + Mailu + Matomo load on a standard runner. One
  retry tolerates those transient crashes without burning 3x the budget.

web-app-joomla/tasks/02_install.yml
  Delete stale stub configuration.php before install. The joomla
  5.4.5-php8.3-apache image populates /var/www/html asynchronously: the
  test -f configuration.php check races with a stub landing ~0.7s later.
  CLI installer then refuses with "configuration.php already present\!".
  Scoped to joomla_installed.rc \!= 0 so an existing install is never
  touched.

web-app-joomla/tasks/06_reset_admin_password.yml
  Add retries: 6 delay: 5 to reset-password. First post-install
  invocation transiently reports "The user administrator does not exist\!"
  even though user:list shows the user. Looks like a race between the
  install's DB commit and the CLI's user lookup on a fresh Symfony boot.
  A truly missing user still fails after all retries.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 16:03:39 +02:00
kevinveenbirkenbachandClaude Opus 4.7 033b045cf0 Add nested-container diagnostics to runner-state dump
Surfaces df, failed units, and hlth-disc-space status/journal from
inside the infinito container so failure-time dumps reflect the same
filesystem view that the disk-space health check evaluates, not just
the host.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 12:44:37 +02:00
kevinveenbirkenbachandClaude Opus 4.7 6fac8996ff Add runner-state diagnostic helper for CI deploy debugging
Extracts disk/memory/docker/swap dump into a reusable helper,
calls it pre/post swap resize, and runs it on deploy failure
across all four deploy workflows. Also adds SKIP_SWAP=1
short-circuit for A/B probing swap-related regressions.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 12:37:54 +02:00
kevinveenbirkenbach 6e9af7c760 Merge branch 'main' into feature/remove_legacy_get_app_conf 2026-04-20 11:56:37 +02:00
Prageeth Panicker 30a7e38c2b fix(web-app-decidim): remove nil fallbacks from ENV.fetch calls
All OIDC env vars (OIDC_ISSUER, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET)
must be present - fail fast with KeyError if missing rather than
silently passing nil to the provider
2026-04-20 04:45:30 +00:00
kevinveenbirkenbachandClaude Opus 4.7 9841d2a601 fix(web-app-matrix): stabilize playwright DM and tighten CSP detector
- Add bootstrap send before biber invite-accept poll. Element only creates
  the DM (and dispatches the invite) once admin sends; without this the
  invite tile never appears for biber and the poll times out.
- Tighten attachDiagnostics regex from /content security policy|csp/i to
  /content security policy/i. The `|csp` alternative false-positived on
  base58 strings inside matrix_sdk_crypto decrypt warnings (e.g. event_ids
  containing the substring "csP"), breaking the OIDC-login tests on dirty
  state. Real browser CSP violations always include the full phrase; the
  securitypolicyviolation DOM event in installCspViolationObserver remains
  the canonical source.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 03:36:03 +02:00
kevinveenbirkenbachandClaude Opus 4.7 d0c9f9dd93 Mark mailu internal sub-services as shared=false
The 11 mailu sub-containers (admin, imap, smtp, antispam, antivirus,
oletools, webdav, fetchmail, webmail, resolver, front) are internal
to mailu's multi-container decomposition, not shared with other
roles. Add explicit shared=false so the service shared/enabled
consistency lint passes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 03:31:19 +02:00
kevinveenbirkenbachandClaude Opus 4.7 0cfe0b4d51 Normalize whitespace in enlarge_swap.sh
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 03:23:37 +02:00
kevinveenbirkenbachandClaude Opus 4.7 8cdfcad9ef Enlarge CI runner swap dynamically across deploy workflows
Introduce scripts/github/enlarge_swap.sh that consumes all remaining
space on / minus a 25 GB buffer (Docker layers, checkout, runtime
state), falling back to /mnt when / is too small. Replaces the
default ~4 GB runner swap so transient memory spikes (e.g. peertube
plugin install, issue #162) don't trip the host OOM-killer on the
16 GB GitHub-hosted runner.

Wire the script into all four deploy test workflows (local, universal,
server, workstation) and flip free-disk-space to the aggressive config
(tool-cache, large-packages, docker-images, swap-storage all true):
the deploy actually runs inside the infinito container, so host-side
toolchains, language runtimes, and the default Docker layer cache are
dead weight. Update the workflow SPOT doc accordingly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 03:18:45 +02:00
kevinveenbirkenbachandClaude Opus 4.7 69e23ca356 Derive peertube plugin-install heap cap from container mem_limit
Replace the hardcoded 1024 MB ceiling for PEERTUBE_OIDC_PLUGIN_INSTALL_MAX_OLD_SPACE_MB
with a dynamic value via node_max_old_space_size (pct=0.125, min=256, hardcap=1024).
The plugin installer runs inside the peertube cgroup via container exec, so its
budget is a share of the parent container, not a separate service claim. Keeps
the install heap well below the runtime heap to leave headroom for npm's forked
workers (node-gyp, postinstall) on constrained CI runners (#162).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 02:46:30 +02:00
kevinveenbirkenbachandClaude Opus 4.7 64617514ac Add OOM reproduction knobs to compose.yml with SPOT docs
Expose INFINITO_MEM_LIMIT/INFINITO_MEMSWAP_LIMIT/INFINITO_CPUS on the
infinito service so operators can cap local runs to GitHub-hosted runner
specs and reproduce OOM failures like #162. Document the compose.yml as
a dev/CI-only artefact under docs/contributing/artefact/files/ and link
to it from the CI debugging guide.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 02:38:54 +02:00
kevinveenbirkenbachandClaude Opus 4.7 7dc55d49da Skip toggle-only service entries in resource aggregator
Adds a container-shaped heuristic so non-shared compose.services entries
that declare neither resource fields (mem_*/pids_limit/cpus) nor
container-identifying fields (image/name/version/container) are treated
as feature flags and excluded from the resource table. Keeps the
keycloak recaptcha toggle and similar booleans out of the per-role
footprint. Adds unit coverage for the helper and recursion behavior.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 02:21:15 +02:00
kevinveenbirkenbachandClaude Opus 4.7 1c85dec2b5 Add realistic resource caps to shared and mailu services
Fills in mem_reservation/mem_limit/pids_limit/cpus on service entries
that previously had none, so the role resource aggregator reports a
realistic per-role footprint. Sets light caps on static/SPA providers
(asset, cdn, file, dashboard) and flips mailu sub-services (admin,
imap, smtp, antispam, antivirus, oletools, webdav, fetchmail, webmail,
resolver, front) to enabled: true so the existing values are picked up
during the shared-service walk.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 02:17:52 +02:00
kevinveenbirkenbachandClaude Opus 4.7 b8fb3522a4 Add cli/meta/applications/ressources resource aggregator
Adds a CLI that reports per-container resource budgets (mem_reservation,
mem_limit, pids_limit, cpus) for an Ansible role, recursively following
enabled shared services via the service registry. Aggregation rules:
mem_* and pids_limit are summed; cpus is MAX (shared across containers,
not additive). Includes text + JSON output, cycle protection, and unit
tests covering parsing helpers, aggregation, recursion, rendering, and
end-to-end CLI invocation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 02:01:46 +02:00
kevinveenbirkenbachandClaude Opus 4.7 5b680bd5ea fix(cli): bootstrap sys.path in validate/inventory __main__
Add repo root to sys.path before importing utils.runtime_lookup_data
so the script works when invoked as a subprocess (e.g. from
tests/unit/cli/validate/test_inventory.py) without PYTHONPATH set.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-19 23:28:55 +02:00
kevinveenbirkenbachandClaude Opus 4.7 424b60853d docs: update cross-file links to current paths
- iam/{common,ldap,oidc}.md: point at 11_oidc.yml and 12_ldap.yml
  (renamed from 13_/14_ in group_vars numbering).
- requirements/003-*.md: repoint iteration.md links to
  docs/agents/action/iteration/{role,workflow}.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-19 23:27:00 +02:00
kevinveenbirkenbach b5c4b8a3d9 Merge branch 'main' into fix/users-applications.yml 2026-04-19 22:21:16 +02:00
kevinveenbirkenbach 006b7bb5aa Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 74fe5b1ce3 Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 882f77a07a Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 4f53388b28 Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 407ab484f1 Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach e7eb6ce441 Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 5fff38cee7 Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 2fe8df3b8a Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 7f92ebfce9 Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach ef1525984c Update README.md 2026-04-19 22:17:13 +02:00
kevinveenbirkenbach 2f24f908bc Update README.md 2026-04-19 22:17:12 +02:00
kevinveenbirkenbach 6186fc821d Update README.md 2026-04-19 22:17:12 +02:00
kevinveenbirkenbach 295a29e231 Update README.md 2026-04-19 22:17:12 +02:00