Commit Graph
14682 Commits
Author SHA1 Message Date
evangelostsak e1e58240e6 fix(user-administrator): keep /usr/local/bin on the administrator's sudo path
The platform's managed interpreter is /usr/local/bin/python3, so every
package sys-pip-install puts system-wide lands its commands in
/usr/local/bin. CentOS Stream's sudoers pins secure_path to
/sbin:/bin:/usr/sbin:/usr/bin, so any escalated shell the administrator runs
there cannot find them. The meshed swarm arm deploys over SSH as the
administrator with sudo, and run 38864400393 failed Penpot#0 on centos at
"command -v baudolo" right after backup-docker-to-local installed; Fedora,
Debian and Ubuntu already ship /usr/local/bin in secure_path, and the direct
arm connects as root without sudo.

The path is set for the administrator only; root's and every other user's
sudo path are unchanged. Checked with the shipped file on CentOS Stream 10,
Fedora 44, Debian 13, Ubuntu and Manjaro: visudo accepts it, the
administrator finds a command in /usr/local/bin through sudo, and on CentOS
the same probe reported it missing before the change.
2026-10-16 13:55:11 +02:00
evangelostsak 93adab0f47 fix(wireguard): the CLI test runs on the controller only
It builds three hosts from the repository the deploy runs from, which only
the controller holds. A swarm node, and the lab's backup host deployed in
its own compose play, no longer run it.
2026-10-16 13:55:11 +02:00
evangelostsak 47372f0c1d fix(test-e2e-cli): run a controller-only CLI test only on the controller
CLI tests are discovered by group membership alone, so a test that builds
its own fixtures from the controller's checkout ran on every host carrying
its role. The meshed swarm arm puts svc-net-wireguard on every node, and run
38864400393 failed Pretix#2, Magento and Matrix#2 with
"cd: /home/runner/work/infinito.nexus/infinito.nexus: No such file or
directory" on each node.

A role now declares cli.controller_only in meta/tests.yml, read through the
role_tests lookup like cli.timeout and cli.container_service_key, and its
test runs only on a host reached over a local connection. Every other role
runs exactly as before. Checked against a local-connection host and a
docker-connection host: svc-net-wireguard ran on the first and was skipped
on the second, and svc-net-tor ran on both.
2026-10-16 13:55:11 +02:00
Prageeth Panicker 5e39433ed1 Merge remote-tracking branch 'origin/main' into feature/web-app-wazuh/add-role 2026-10-16 11:40:30 +00:00
kevinveenbirkenbach d2abd332f0 fix(web-app-suitecrm): let the external-auth provisioning path create its user
SuiteCRM 8.10.2 tightened User::hasSaveAccess() from return true to is_admin($current_user) for a record without an id, and restrictAdminOnlyFields() now forces status Inactive on such a record. CreateUser::create() runs while the browser is still anonymous, because it is the LDAP and SAML auto-create path, so every FIRST login of a directory account ends in RuntimeException: Not authorized and HTTP 500 on POST /login. The pre-existing administrator is unaffected, which is why one persona passes and one fails in both auth modes. 451f63cbdd carried the role from 8.9.1 to 8.10.2; 8.9.1 exempted a new record from both guards.

The patch raises the admin context around that one save and restores it in a finally, rather than relaxing the guards, which stay closed for every request-driven save. create() has a single caller in its own file, createExternalAuthUser, which sets is_admin 0 and external_auth_only 1 before calling, so the raised context cannot mint an administrator. patch runs with -F0 so a hunk upstream has moved fails the build instead of landing somewhere else.

The patch path is derived once in vars/main.yml and reaches the Dockerfile as a build arg, following the role's existing SUITECRM_ENTRYPOINT_SCRIPT_* shape, so the file name is written once.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 495d23dbde)

# Conflicts:
#	roles/web-app-suitecrm/vars/main.yml
2026-10-16 13:29:07 +02:00
Prageeth Panicker 381d7862a8 docs(web-app-wazuh): note that the vulnerability data is not backed up
The manager's vulnerability detection data (queue/vd) is deliberately excluded from the backup and downloaded again after a restore.
2026-10-16 11:28:09 +00:00
kevinveenbirkenbach 66e70984b2 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261014-c2bc2c1 2026-10-16 11:24:09 +02:00
kevinveenbirkenbach 1852a95075 Merge remote-tracking branch 'origin/update/docker-image-versions-web-app-nextcloud-20261002-798c076' into update/docker-image-versions-web-app-nextcloud-20261014-c2bc2c1
# Conflicts:
#	roles/web-app-nextcloud/meta/services.yml
2026-10-16 11:23:58 +02:00
infinito-nexus-updater[bot] 457e58263d update(versions): update pins with a declared source (web-app-suitecrm) 2026-10-16 09:19:40 +00:00
kevinveenbirkenbach 1b36ef6120 Merge pull request #971 from infinito-nexus/update/version-sources-web-app-wordpress-20261016-db60ad9
update(versions): update pins with a declared source (web-app-wordpress)
2026-10-16 11:18:26 +02:00
kevinveenbirkenbach 83a2e2dfc7 Merge pull request #970 from infinito-nexus/update/version-sources-web-app-n8n-20261016-316894d
update(versions): update pins with a declared source (web-app-n8n)
2026-10-16 11:18:01 +02:00
kevinveenbirkenbach 9ae63226a2 Merge pull request #969 from infinito-nexus/update/version-sources-web-app-gitea-20261016-6810598
update(versions): update pins with a declared source (web-app-gitea)
2026-10-16 11:17:37 +02:00
infinito-nexus-updater[bot] f83dbe536d update(versions): update pins with a declared source (web-app-wordpress) 2026-10-16 09:16:58 +00:00
infinito-nexus-updater[bot] 3b85ecf324 update(versions): update pins with a declared source (web-app-n8n) 2026-10-16 09:16:53 +00:00
infinito-nexus-updater[bot] 208f8e7976 update(versions): update pins with a declared source (web-app-gitea) 2026-10-16 09:16:49 +00:00
kevinveenbirkenbach 846a734b03 Merge branch 'fix/cache/carrier-token-stall' 2026-10-16 11:12:39 +02:00
kevinveenbirkenbachandClaude Opus 5.5 67f6c8d7e8 fix(cache): keep the applications carrier valid across token store writes
Since 778c18fb23 the carrier key holds the tokens file's mtime and size.
sys-token-store changed that stat on every inclusion (00_core.yml
touched the file) and on every persisted token, and nothing re-parked a
carrier afterwards. Every later task's fresh worker then rendered the
applications SPOT cold, 30 to 80 s each. On main fea6f31d9f (run
38812964308) seven heavy jobs logged 194 to 287 such tasks and ran out
of the 20400 s budget; the same jobs before 778c18fb23 logged 65 to 83,
all of them real waits.

- 00_core.yml touches the store with modification_time and access_time
  preserved, so it only creates a missing file. In swarm the controller
  sees the store over NFS with attribute caching, and the touch alone
  made the second pass go cold without any write.
- write.yml re-parks the carrier when the persist or the controller
  mirror changed the store. Both run once, so every host that ran the
  include gets the same verdict.
- tasks/utils/setup/role.yml re-parks after every role on every host,
  so hosts that did not run the writing role recover too. Where the
  key still matches this serves the carried payload; measured 0.1 s per
  role in a local compose deploy.
- The tokens file enters the key as the SHA-256 of its content,
  memoised per inode, mtime and size, so a touch no longer changes the
  key. A stat that still matches serves the memo (1.67 us against
  1.41 us for the old stat signature), and a stale stat keeps key and
  YAML cache on the same old content instead of pairing new content
  with an old key.
- applications_carrier opens the tokens file before it computes the
  key, so on the NFS-mounted controller the parked key reflects the
  revalidated attributes rather than a cached stat that changes a
  minute later.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 11:11:47 +02:00
evangelostsak e00008070d Merge remote-tracking branch 'upstream/main' into feature/svc-net-wireguard 2026-10-16 08:58:56 +02:00
evangelostsak 6cfe1f1f52 docs(requirements): list 038 under the archive 2026-10-16 08:46:23 +02:00
evangelostsak 0c42f53ca8 docs(requirements): archive 038, every criterion closed
The last two criteria closed on fork run 38836531620, a manual steer of
svc-db-redis#0 in compose with the vpn axis enforced. Its job log shows
INFINITO_COMPOSE_VPN=true reaching the step, svc-net-wireguard deployed beside
the app and skipped on the CI host, which holds no mesh, and the CLI test of
svc-net-wireguard writing two full meshes of two members each. The inner play
passed four handshake gates and four MTU probes, and the test printed all six
reachability assertions: I and II reach each other, II and III reach each
other, I and III do not.

With nothing left open, make requirements-archive moved its heading into the
README and deleted the file.
2026-10-16 08:46:23 +02:00
kevinveenbirkenbach af18df9fed Merge pull request #961 from infinito-nexus/fix/web-app-bluesky/pds-lxm
fix(web-app-bluesky): read the PDS admin password and clear the restore timer
2026-10-16 08:15:10 +02:00
evangelostsak 59fbe05418 test(mesh): every stack role carries the membership field 2026-10-16 03:40:20 +02:00
evangelostsak 876f71dcc1 feat(web-svc-xmpp): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 7810edc4c0 feat(web-svc-simpleicons): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak b1e5ca3ae1 feat(web-svc-onlyoffice): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 65ef67543f feat(web-svc-logout): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak c2c1318775 feat(web-svc-libretranslate): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak c8e9612327 feat(web-svc-coturn): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 5a8638f73d feat(web-svc-collabora): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 4c5ab38b57 feat(web-svc-cdn): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 47f2c2b058 feat(web-app-zammad): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 980ccede68 feat(web-app-yourls): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 8d7204d816 feat(web-app-xwiki): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 5f1b6198f4 feat(web-app-wordpress): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 57ad80bb14 feat(web-app-taiga): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak d3f222cce2 feat(web-app-suitecrm): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 4820336f78 feat(web-app-stalwart): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 483b46b895 feat(web-app-sphinx): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 7e8b075418 feat(web-app-socialhome): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 748f1bd92a feat(web-app-snipe-it): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 074892dcdc feat(web-app-shopware): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 6edea37b83 feat(web-app-semaphore): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 51b2588423 feat(web-app-seaweedfs): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak b19d3b98ca feat(web-app-roulette-wheel): let a deployment put its hosts into meshes 2026-10-16 03:40:20 +02:00
evangelostsak 927f745af2 feat(web-app-prometheus): let a deployment put its hosts into meshes 2026-10-16 03:40:19 +02:00
evangelostsak 070aa7f7ca feat(web-app-pretix): let a deployment put its hosts into meshes 2026-10-16 03:40:19 +02:00
evangelostsak ff2ccdac80 feat(web-app-postmarks): let a deployment put its hosts into meshes 2026-10-16 03:40:19 +02:00
evangelostsak 468ba3ad21 feat(web-app-pixelfed): let a deployment put its hosts into meshes 2026-10-16 03:40:19 +02:00
evangelostsak c54504978a feat(web-app-pihole): let a deployment put its hosts into meshes 2026-10-16 03:40:19 +02:00
evangelostsak 05170355cc feat(web-app-phpmyadmin): let a deployment put its hosts into meshes 2026-10-16 03:40:19 +02:00