Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbachandClaude Opus 5.5 a7db89ac0b fix(search): give the search engines half of their container as heap
The central Elasticsearch, Zammad's Elasticsearch and Magento's
OpenSearch ran with a literal heap beside a mem_limit four times its
size: 1g in 4g, 512m in 2g and 512m in 2g. The heap is now half of the
limit through lookup('service_memory_mb'), which makes it 2048, 1024
and 1024 MiB and lets it follow the limit when that changes.

Xms equals Xmx, so these containers hold that much more memory from
the start.

Zammad's memcached size and Magento's PHP_MEMORY_LIMIT take the same
lookup and keep their values, 256 and 768M.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 23:31:14 +02:00
kevinveenbirkenbachandClaude Opus 5.5 0f7fb92e12 refactor(roles): take seven roles' memory parameters from the container limit
Memcached, Joomla, Moodle, Odoo, Shopware, Snipe-IT and SuiteCRM set
their cache size, PHP memory_limit, OPcache, worker limits and search
heap as literals next to a mem_limit they never read. They now ask
lookup('service_memory_mb') for a share of that limit. The shares are
chosen so every rendered value stays what it was.

Where the parameter lives in a file that cannot hold a template, the
value is handed in: Shopware's init script reads INIT_PHP_MEMORY_LIMIT
and refuses to start without it, SuiteCRM's image takes it as a build
argument. Shopware's worker gets --memory-limit as a command appended
to its entrypoint, and Moodle's OPcache size moves from the static ini
into the rendered one.

The performance.php.memory_limit keys of Joomla and Moodle are gone
from services.yml; nothing else read them.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 23:24:22 +02:00
kevinveenbirkenbachandClaude Opus 5.5 e203d6f7ab feat(plugins): size memory parameters from the container limit with one lookup
lookup('service_memory_mb', application_id, service_name, share) returns
a share of a service's mem_limit in whole MiB. It resolves the limit the
way sys-svc-container resolves the container's own: the named service,
then the role's primary entity, then RESOURCE_MEM_LIMIT.

It replaces the three filters of memory_filters, each with its own unit
parser and its own idea of the limit: Redis maxmemory at 0.8 of the
limit, and the Confluence and Jira heap at 0.7 and 0.35.

The central Redis (409 MiB), Confluence (5734/2867) and Jira (4300/2150)
keep their values. A Redis sidecar without a mem_limit of its own does
not: the filter fell back to a fixed 256m, which gave 204 MiB, while the
lookup takes the limit that container really runs with, the primary
entity's. That moves 25 roles to between 409 and 3276 MiB.

The heap clamps of the old filters are gone: the 1024 MiB floor, limit
minus 1024, the 12288 cap and Xms bounded by mem_reservation.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 23:05:26 +02:00
kevinveenbirkenbach feca1dd5e0 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-wordpress-20261005-950916f 2026-10-06 22:55:12 +02:00
kevinveenbirkenbach 5022184ebf Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-gitea-20261005-709f14e 2026-10-06 22:55:12 +02:00
kevinveenbirkenbach ac05f5c67c Merge pull request #840 from infinito-nexus/update/docker-image-versions-web-app-erpnext-20261006-96a3245
update(images): update Docker image versions (web-app-erpnext)
2026-10-06 22:30:35 +02:00
kevinveenbirkenbach 6e7beac8cc Merge pull request #841 from infinito-nexus/update/docker-image-versions-web-app-penpot-20261006-dd2a65b
update(images): update Docker image versions (web-app-penpot)
2026-10-06 22:29:36 +02:00
kevinveenbirkenbach eb447f40f0 Merge pull request #837 from infinito-nexus/update/docker-image-versions-web-app-opentalk-20261006-1dcd1ef
update(images): update Docker image versions (web-app-opentalk)
2026-10-06 22:19:50 +02:00
kevinveenbirkenbach 963b580360 Merge pull request #843 from infinito-nexus/update/docker-image-versions-web-app-socialhome-20261006-d075df9
update(images): update Docker image versions (web-app-socialhome)
2026-10-06 22:16:35 +02:00
kevinveenbirkenbach 72307e71d8 Merge pull request #844 from infinito-nexus/update/version-sources-web-app-hugo-20261006-ad9a514
update(versions): update pins with a declared source (web-app-hugo)
2026-10-06 22:15:29 +02:00
infinito-nexus-updater[bot] f60b7ec448 update(versions): update pins with a declared source (web-app-hugo) 2026-10-06 19:57:10 +00:00
kevinveenbirkenbach 7bd73e2a13 Merge pull request #810 from infinito-nexus/update/version-sources-web-app-hugo-20261005-bc4c8f8
update(versions): update pins with a declared source (web-app-hugo)
2026-10-06 21:39:09 +02:00
kevinveenbirkenbach 074233e3e8 Merge pull request #836 from infinito-nexus/update/version-sources-web-app-zammad-20261006-009cc7a
update(versions): update pins with a declared source (web-app-zammad)
2026-10-06 21:36:51 +02:00
infinito-nexus-updater[bot] 9e39388502 update(images): update Docker image versions (web-app-socialhome) 2026-10-06 19:16:31 +00:00
infinito-nexus-updater[bot] 9aa43f972f update(images): update Docker image versions (web-app-pixelfed) 2026-10-06 19:16:27 +00:00
infinito-nexus-updater[bot] f2196a48c0 update(images): update Docker image versions (web-app-penpot) 2026-10-06 19:16:21 +00:00
infinito-nexus-updater[bot] bafe9aaecc update(images): update Docker image versions (web-app-erpnext) 2026-10-06 19:16:14 +00:00
infinito-nexus-updater[bot] a6a6b78393 update(images): update Docker image versions (svc-ai-ollama) 2026-10-06 19:16:07 +00:00
kevinveenbirkenbach 70dda142f4 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-zammad-20261006-009cc7a 2026-10-06 21:11:55 +02:00
kevinveenbirkenbachandClaude Opus 5.5 74193d7152 fix(web-app-zammad): keep the search index per Elasticsearch major
Elasticsearch 9 does not start on a data directory written by 8.13. It
accepts one from 8.19 only. On a deployment that already ran 8.13.4 the
new pin left the search container in a restart loop ("cannot upgrade a
node from version [8.13.4] directly to version [9.5.5]"), zammad-init
kept waiting for it and Zammad did not come up.

The index is derived data. zammad-init rebuilds it from the database
whenever it is missing. path.data now points to a directory named after
the Elasticsearch major inside the zammad_search volume, so a new major
starts on an empty directory and the same deploy rebuilds the index. The
data of the previous major stays in the volume.

The REST ticket test of the spec now also requires the search to return
the ticket it has just created.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 21:11:55 +02:00
kevinveenbirkenbachandClaude Opus 5.5 02354506e7 fix(web-app-hugo): build as the image's own user
The builder stage switched to root for everything, so npm lifecycle
scripts of the site's dependencies and the Hugo build ran as root.

The official image runs as hugo and ships Node and npm. Root now only
creates /src and /public for that user. npm install and the build run
as hugo, and the apk install of nodejs and npm is gone.

The README no longer repeats the pinned source tag, which the updater
moves in meta/services.yml only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 21:11:48 +02:00
kevinveenbirkenbach fc2ea58e48 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-06 21:10:47 +02:00
kevinveenbirkenbach 0f403630d7 Merge remote-tracking branch 'origin/main' into fix/code-scanning-alerts/807 2026-10-06 21:10:40 +02:00
kevinveenbirkenbach bb0fff43a4 Merge remote-tracking branch 'origin/main' into fix/web-app-prometheus/blackbox-targets/792 2026-10-06 21:10:33 +02:00
kevinveenbirkenbach e5858de23e Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-moodle-20261005-4f455e2 2026-10-06 21:10:26 +02:00
kevinveenbirkenbach 60e2974bbc Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-hugo-20261005-bc4c8f8 2026-10-06 21:10:25 +02:00
kevinveenbirkenbach 8bf0d54782 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-prometheus-20261005-fc0bcb7 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach 3ebcc1f374 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-flowise-20261005-3730e0c 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach 40aa5267a6 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-n8n-20261005-dde2ead 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach b2b256ca7d Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-chess-20261006-a4a4f62 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach c973a664cb Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-stalwart-20261005-966a4cc 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach 6c01221809 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-svc-db-qdrant-20261005-0d33343 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach 5aa27de969 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-wordpress-20261005-950916f 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach 72548d8d6d Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-gitea-20261005-709f14e 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach b23e313816 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-opentalk-20261006-1dcd1ef 2026-10-06 21:09:56 +02:00
kevinveenbirkenbach 09894d5d79 Merge pull request #838 from infinito-nexus/fix/review-follow-ups/802
fix(review): handle the findings left on #825, #826 and #828
2026-10-06 21:00:36 +02:00
kevinveenbirkenbach 0cc0272d50 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-06 19:51:35 +02:00
kevinveenbirkenbach 2f2cbd900b Merge remote-tracking branch 'origin/main' into fix/code-scanning-alerts/807 2026-10-06 19:51:27 +02:00
kevinveenbirkenbach 37461b87ab Merge remote-tracking branch 'origin/main' into fix/web-app-prometheus/blackbox-targets/792 2026-10-06 19:51:20 +02:00
kevinveenbirkenbach b9ddfe01be Merge pull request #817 from infinito-nexus/update/galaxy-pins-20261005-e2ea21d
update(galaxy): bump pinned Ansible collections
2026-10-06 19:35:28 +02:00
kevinveenbirkenbach e7a88cacf3 Merge pull request #834 from infinito-nexus/fix/svc-net-tor/chutney-node-workers/824
fix(svc-net-tor): give every chutney node one worker thread
2026-10-06 19:30:39 +02:00
kevinveenbirkenbach 3d8be437a4 Merge remote-tracking branch 'origin/main' into update/docker-image-versions-web-app-nextcloud-20261002-798c076 2026-10-06 19:16:26 +02:00
kevinveenbirkenbach 42718d15c4 Merge remote-tracking branch 'origin/main' into fix/code-scanning-alerts/807 2026-10-06 19:16:12 +02:00
kevinveenbirkenbach a519922de7 Merge remote-tracking branch 'origin/main' into fix/web-app-prometheus/blackbox-targets/792 2026-10-06 19:16:06 +02:00
kevinveenbirkenbach 295276c11b Merge pull request #821 from infinito-nexus/update/docker-image-versions-web-app-jira-20261005-2c12c7a
update(images): update Docker image versions (web-app-jira)
2026-10-06 19:11:54 +02:00
kevinveenbirkenbachandClaude Opus 5.5 c73bc0ca85 test(web-app-keycloak): follow every async kcadm result to its reap
The guard required a register on every async kcadm job and nothing more.
A result that is registered but no longer handed to async_reap_jobs,
directly or through the list it is collected into, passed it, although
the reap then neither polls that job nor sees it fail.

The test now follows each registered result to an async_reap_jobs
expression, by variable name with word boundaries, so kc_declared_client
does not pass for kc_declared_client_jobs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 16:40:48 +02:00
kevinveenbirkenbachandClaude Opus 5.5 601b21a8f4 test(web-app-penpot): require both service names in the start guard
The stub answered every absolute name, so a guard that asked for the
backend twice and never for the exporter passed both tests. The stub now
records the names it is asked for, and the tests require the backend and
the exporter.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 16:40:48 +02:00
kevinveenbirkenbachandClaude Opus 5.5 8834cc124a fix(web-svc-collabora): build the WOPI host from Nextcloud's own domain
COLLABORA_WOPI_HOST read the scheme and the port with
lookup('tls', 'web-app-nextcloud', ...) and the host with
lookup('domain', 'web-app-nextcloud'). The tls lookup aligns an app term
to its consumer: for a clearnet Collabora it answers for the clearnet
sibling of an onion-primary Nextcloud, while the domain lookup keeps the
onion name. Such a deployment renders https://<onion>:443, an origin
Nextcloud does not use, so the allowlist does not match its WOPI calls.

Nextcloud pins overwritehost and overwriteprotocol to its primary domain,
so the allowlist now asks the tls lookup for that domain instead of for
the app.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 16:40:48 +02:00
kevinveenbirkenbach 526e224773 Merge remote-tracking branch 'origin/main' into update/version-sources-web-app-hugo-20261005-bc4c8f8 2026-10-06 16:40:40 +02:00
kevinveenbirkenbachandClaude Opus 5.5 f9e25b0387 fix(web-app-hugo): build with the official Hugo image
The update moved the documentation source to v0.165.0 and the builder to
hugomods/hugo:exts-0.154.5. That is the newest tag hugomods publishes, and
the source of v0.165.0 does not render with it. The image build ended with
"can't evaluate field Locale in type *langs.Language" in
layouts/baseof.html.

The builder is now ghcr.io/gohugoio/hugo, which Hugo publishes for every
release, pinned to v0.165.0 like the source. That image runs as an
unprivileged user, so the build stage switches to root for the steps that
write to /src and /public.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 16:40:40 +02:00